What is AWS?
AWS stands for Amazon Web Services. It offers a wide range of services that allow companies, such as Netflix, to build out cloud services without having to build their own data centres. AWS is available for anyone to use and gives individuals, companies and governments access to the power of Amazon’s cloud computing.
AWS is not free to use, however, most of its services are charged based on usage so you will only pay for what you use. This pricing model combined with the rich toolset provided makes it far more cost effective than building out your own infrastructure, even for a company like Netflix who are using vast amounts of resources.
The number of features and tools Amazon provide on AWS makes it impossible to discuss them all. Most users, however, will only make use of a small number of the most powerful tools that are applicable to most projects. Many of the tools provided are aimed at specialist segments of the market, be that AWS IoT core aimed at the smart devices market, or AWS Greengrass which had been built for Machine Learning uses.
In this post we are going to cover the 5 key tools that you will need to understand to get started when deploying a robust web application.
S3 is AWS’ simple cloud storage platform. On a very basic level it can be used to store files like documents and images. This is a much more efficient and cheaper way of storing these items rather than writing them to disk on your application server or storing them as blobs in your database.
One of the more complex but exciting uses of S3 allows you to host static websites. This method provides you with a very cheap hosting service that is infinitely scaling without any extra configuration.
EC2 or Elastic Compute Cloud is the service on AWS that is most akin to a traditional server. You can set up EC2s to run a range of operating systems and configure everything from RAM and disk space, to the number of cores you require.
When getting started with AWS the first thing you should do is set up an EC2 as this will help you understand some of the configuration options that you have and how easy it is to create a very basic application server.
As EC2s are like a traditional server without the requirement to store a physical server and the initial capital cost. Given this, it might not be initially obvious what you are gaining from AWS. The real power of EC2 is that is it the building block for many of Amazon’s more advanced services which provide advantages such as auto scaling out of the box.
VPC or virtual private cloud is one of the key security features of AWS. Many of the AWS services, including EC2, can be placed within a VPC. Once placed within a VPC a service can only talk to other services within its own VPC and, if probably configured, all communication with the outside world will go via the VPC’s network layer.
Having groups of services that are protected and can only talk to each other is really useful for security. A good example of this is where you may have a production environment and a test environment. Within your test environment you may be experimenting with new ideas and approaches, this however, could lead to a security vulnerability. If your test environment is in a separate VPC from your production environment any attacker that gained access to your test environment would not be able to gain access to production and potentially expose customer data.
Along with EC2s you would also want to have your RDS within a VPC. An RDS or Relational Database Service is AWS’ scalable and replication ready database service. While you could install a database on an EC2 you would then have to manage disk space and replication manually.
RDS provides both SQL and NoSQL databases that can be backed up across multiple zones or regions simply by checking a box during creation or in your RDS settings.
Using an RDS rather than having your own database on a server also makes it easier to manage which AWS users can access that database as well as providing enhanced logging. Within each RDS you create, you can create a single or multiple databases of that type, which can be useful if you have an app where each customer has their own database.
Elastic Load Balancers
The final “basic” AWS service that we are going to summarise is Elastic Load Balancers. As the name suggests this is AWS’ load balancer service.
As with any load balancer this service allows you to automatically distribute traffic across multiple services. The advantage of using this service is that AWS can load balance across the multiple zones within your region.
The Elastic Load Balancer service providers three types of load balancer. You should study each of these and select the one that best fits your use case. For a beginner looking to take a simple approach and balance load across multiple EC2 you should start with the Classic Load Balancer, which is best suited to more simple use cases.
Put It Into Practice
Now you have an idea of what each service does you probably want to go about using some of them. The best place of get started with this is the comprehensive AWS documentation that provides step by step guides to getting started with all of the services.
The Next Step
So now you have a grasp of the basics you should begin exploring some of the really useful, more advanced tools that Amazon provide. These tools bring a number of basic services together, such as, Elastic Beanstalk which brings together VPC, EC2 and Elastic Load Balancers. Look out for a blog post on this next month.