Introduction to the AWS Cloud
It is time to examine (at a high level) just some of the service categories in the AWS Cloud and some of the services and tools in each. This section provides this vital introduction for you. Remember that we will be covering these services in some detail later in the book.
Compute Service
AWS offers many different options for your acquisition and execution of compute resources. Just some of the options available today include:
Elastic Compute Cloud (EC2): EC2 is a web service that provides secure and resizable compute resources (virtual machines) in the AWS Cloud. The EC2 service allows you to provision and configure capacity with minimal effort. It provides you with easy control of your computing resources. EC2 reduces the time required to obtain and boot new virtual machines (EC2 instances) to minutes or even seconds. This efficiency allows you to scale capacity vertically (up and down, making your server resources bigger or smaller, respectively) and horizontally (out and in, adding more capacity in the form of more instances) as your computing requirements change. We refer to this remarkable quality as elasticity, and we cover it in greater detail in Chapter 2, “Some Benefits of the AWS Cloud.” Figure 1-1 shows virtual machines in the AWS EC2 dashboard.
Figure 1-1 EC2 in AWS
Lambda: AWS Lambda is a prime example of a new revolution in cloud computing called serverless compute. Lambda lets you run code without the burden of provisioning or managing servers. The code you run against Lambda can be for various aspects of an application or service. For example, perhaps you want to automatically resize images that are uploaded to your website. With the help of Lambda, you can use a script to handle the resizing and run this script against the Lambda pool of resources in the cloud. When you use Lambda, you upload your code, and Lambda does everything required to run and scale your code with high availability and fault tolerance. Again, you are not required to provision or configure any server infrastructure yourself. Figure 1-2 shows the Lambda GUI in AWS.
Figure 1-2 AWS Lambda
Elastic Beanstalk: AWS Elastic Beanstalk is an easy-to-use service for deploying and scaling web applications and services developed with popular languages such as Java, PHP, and Python, to name a few. These web applications are run on familiar servers such as Apache, Nginx, Passenger, and Internet Information Services (IIS). Amazingly, with this service, you upload your code, and Elastic Beanstalk automatically handles the deployment, from capacity provisioning to load balancing, auto-scaling, and application health monitoring. Figure 1-3 shows the GUI interface of Elastic Beanstalk.
Figure 1-3 Elastic Beanstalk in AWSElastic Container Service (ECS): Amazon’s ECS is a highly scalable, high-performance container management service that supports Docker containers. ECS permits you to efficiently run applications on a managed cluster of EC2 instances. It eliminates the need for you to install, operate, and scale your own cluster management infrastructure. If your organization is already using Kubernetes for container management, you might opt for Amazon Elastic Kubernetes Service (EKS), which permits you to run your Docker containers at massive scale (if needed) and provides a vast array of orchestration options for you. In addition, AWS also offers Fargate. This is serverless compute (think Lambda) but for containers. That’s right: You can run containers without worrying about the management of the underlying clusters or Kubernetes.