In today’s digital world, people have the expectation of being able to access websites and apps at any time, from any device. This means that site owners need to be able to provide a great experience and ensure that their sites and apps are always available and that they can scale to meet the needs of their users. One of the key tools for providing this availability and scalability is cloud computing.
Amazon Web Services (AWS) is one of the most popular and effective options for running highly available (HA), scalable, elastic websites, but understanding the ins and outs of AWS can be overwhelming for someone used to running on-premises servers. There are a variety of reasons for this, including the ‘unknown’ of the cloud, becoming familiarized with the different services being offered, and getting used to new infrastructure maintenance methodologies, to name a few.
Many of the terms and ideas related to cloud computing are items we already know, and these are easily relatable once we determine what it is that each service performs. Let’s look at what we’re talking about when we use these terms and how they relate to the applications hosted on-premises or with a non-cloud hosting provider:
EC2 (Elastic Compute Cloud)
Websites or apps that use AWS are run on virtual machines (VMs) that are hosted on Amazon’s systems. These VMs (which are also called instances) are highly configurable in terms of disk space, CPU, RAM, and networking. Instances can be provisioned in any of the AWS regions and availability zones (see below), enabling applications running on these instances to be configured for high availability and scalability.
There are a wide variety of instance operating systems that can be provisioned, from different flavors of Linux distributions, to different versions of Windows Server. The costs for these instances are pay-as-you-go, meaning you will only be billed for the hours the instances were running.
Regions and Availability Zones
The EC2 service is hosted in Amazon data centers around the world. Amazon has created a number of regions and availability zones where these data centers are located, with each region being a different geographical area and availability zones being one of multiple isolated locations within a region.
Outages can occur in individual availability zones, which is why, when hosting your application, it is important to consider replicating your instances across multiple availability zones to ensure that it is always available to its users.
EBS (Elastic Block Storage)
AWS uses persistent block storage volumes for EC2 instances. Similar to the volumes of data that would normally be stored in a logical unit number (LUN) on a storage area network (SAN) in your datacenter, AWS automatically replicates EBS volumes within the availability zone for your instance. Volumes can be backed by solid state drives or hard disk drives, and they can also be encrypted and backed up using point-in-time snapshots.
RDS (Relational Database Service)
Databases can be difficult to install, monitor, and maintain. AWS offers the RDS service as a way to run a database in the cloud without all the administrative overhead that comes with running databases. Databases available are MySQL, MariaDB, Oracle, PostgreSQL, and MS SQL Server.
These RDS instances live in the availability zone you specify when creating an instance. Multi-AZ can be set up as a way to replicate the database to other availability zones for high availability. These instances can also be backed up automatically and have base snapshots taken and stored for later use.
S3 (Simple Storage Service)
S3 is a storage service designed to store and retrieve any amount of data from anywhere in the web. Unlike EC2 and EBS, S3 is not confined to a single availability zone, or even a single region. When using S3, you can choose the preferred AWS region to optimize for latency, but the data can be available from anywhere. Data is redundantly stored across multiple facilities and multiple devices in each facility.
With S3, you can store as much or as little data as you need and only pay for what is used, with the ability to scale up and down with great agility. You can also set data that is infrequently accessed, such as backups, to be moved to Infrequent Access storage, which has a much lower cost per GB for storage.
VPC (Virtual Private Cloud)
AWS can also be used for networking in the cloud. VPC allows you to create a virtual network in which you can control the private IP address space, subnetting, route tables, and network gateways. Each region will have a different space, with the possibility of specifying which subnets reside in which availability zones.
Elastic Load Balancing
This service is the same as running an on premise hardware load balancer such as a F5 or KEMP. A load balancer routes traffic to EC2 instances based on the application or network level information. This service is crucial for achieving high availability between availability zones within a region.
The Big Picture
All of these pieces fit together to form a suite of tools for cloud hosting. This diagram illustrates how these services work together to create the infrastructure for your services or websites:
There are many, many more services currently being offered by AWS, and every year they introduce new services for high available and scalable applications. However, these services are only one piece of the puzzle that is building scalable applications. The technology that can be used is a big part, but the methodologies and processes used are important as well. Configuration management, change management, deployment lifecycles, continuous integration, and delivery are a few other important aspects that need to be considered. Please stay tuned for future blogs as we continue to discuss how to use the technologies available to provide the best services for your users.
Do you have any questions about how to implement the cloud hosting tools offered by Amazon Web Services? Please contact us, and we’ll work with you to ensure your website or app is available and scalable.