Amazon EC2, also known as AWS Elastic Cloud Compute is a service that provides scalable compute capacity in the cloud to end users on demand, and on a pay-per-use basis.
You can read up on an overview of the service here.
In this article, let’s break down the various components and features that make up the AWS Elastic Cloud Compute service. It will also go into detail of available options like instance types, regions and locations, security and network access, as well as touch up on the costs of using the service.
Being the flagship AWS service, EC2 has been designed to be modular and flexible. There are two key components when launching instances on EC2: the amount of virtual hardware you dedicate to that particular instance, and the software that is loaded onto it.
But before we get to that, it is important to understand what these two terms, elastic and compute, actually mean — without getting too technical, that is. Because ultimately, they are what define EC2, and everything that this service has to offer for users looking at the cloud.
Elastic is a word that conjures up images of something that has the ability to stretch and contract. And while you may fixate on the issue of money here, the real value of what EC2 provides, and what the term really denotes, is time. Keeping your equipment at the right size is time consuming, more so when you need to downsize. But using Amazon EC2 means you can add and remove capacity in just a few minutes, rather than weeks or months.
It allows you to be agile, while keeping costs low.
Compute refers to the amount of computation power that is required to fulfill your workload. If your workload is very small, a website that receives a few visitors, then your compute needs a very small. A large workload, say weather research, might require a great deal of compute. And not just that, the amount of compute you need may drastically change over time. It’s here that Amazon EC2 allows you to acquire compute via the process of launching virtual servers called instances.
With these two base distinctions that make EC2 what it is defined, let’s take a look at the components that make EC2.
Once you have your elastic and compute requirements defined, you can then concentrate on the various EC2 components that make up the service. You need it to match these additional features with your requirements — whether you simply need a file server up in the cloud, or a research station.
Here are the various pieces that make up the AWS EC2 components puzzle.
The Amazon Machine Images, or AMIs as they are shortened as, are the building-blocks of EC2. They define the initial software that will be on an instance when it is launched, basically outlining every aspect of the software state at the instance launch. These include details like the operating system and its configuration, whether any patches and updates are to be deployed, or any applications of system software loaded.
AMIs are based on two operating platforms, Linux or Windows. And they can be sourced from four different avenues. You can use the ones published by AWS, find one in the AWS Marketplace, or generate from existing instances, and you can even upload your own virtual servers using the VM import and export service.
The AWS Management Console is the first interface most users see. It is the foremost way of managing your infrastructure components when you are new to the Amazon cloud, providing an intuitive user interface for performing many tasks. The AWS Management Console homepage lists all your available AWS services, with each service having its own console.
The AWS Management Console also provides information about your account and billing.
Ultimately, though, while the Management Console is great for exploring EC2 and learning more about the service, it is not exactly ideal for automation. You will need to get your hands dirty with the AWS APIs to make the most of the service. These can be integrated to manage the service from within your own apps. There’s also the AWS Command Line Interface (AWS CLI), a unified tool, that can be used to directly interact with the API.
Advanced users can also make use of the AWS Software Development Kits (SDKs) to manage everything.
AWS prides itself on providing a highly available technology infrastructure platform, and this is made possible by maintaining multiple locations worldwide. These locations are composed of Regions and Availability Zones. Each Region is located in a separate geographic area, and has multiple, isolated locations that are called Availability Zones.
These enable organizations to place resources and data in multiple locations around the globe. This provides two distinct advantages. The first is of placing your application resources close to your end-users for performance reasons. And the second is resiliency to the loss of service in a particular Region or Availability Zone, so that an outage in one area will not affect the other.
Design your application carefully, keeping Regions and Availability Zones in mind, so that you reap the maximum performance and reliability benefits.
Another very important consideration, is of the instance types. EC2 instances come in a range of sizes to suit various uses cases. The company refers to these instance types, and each instance type differs wildly in the amount of resources that are allocated to it. AWS currently offers five different instance types ranging from General purpose, Compute Optimized, Memory Optimized, Accelerated Computing, and Storage Optimized.
AWS instance types can be differentiated by the combination of CPU, memory, network bandwidth, and even custom hardware that powers them. The company lists all available instance types in a handy page that provides the details on all of them.
And finally, we get to Auto Scaling. Auto scaling is defined as the ability to control all resources used to handle application request load in an automatic manner. Simply put, when the load increases, the scaling functionality automatically increases the require resources. And likewise, in the events when the load has decreased, the scaling functionality reduces the number of resources in use.
But Auto Scaling is actually an AWS service.
One that enables your EC2 instances to handle loads without a lot of human intervention. This built-in feature automatically adjusts how your setup reacts to loads, and Amazon provides several different options for applying Auto Scaling to your EC2 instance.