AWS Basic Services
AWS Administration Services
AWS Deployment Services
With the AWS Solutions Architect Professional level certification, Amazon sought to identify individual administrators who are truly platform experts. Unless you've got some significant experience with AWS deployments and good familiarity with the full range of Amazon services, you probably won't have a chance at passing.
However, with this series of Cloud Academy courses, cloud expert Kevin Felichko is committed to making your learning process as smooth and productive as possible. Once complete, Kevin's guide to the Solutions Architect Professional level exam will lead you through the theoretical and practical skills you'll need to master this material.
This first course covers the key conceptual terminology and services that form the base for Amazon cloud architecting. The second course will guide you through fully-realized practical deployments, from start to finish. And the final course (late August, 2015) will focus on exam preparation and, in particular, strategies for confronting the particularly complicated style of question you'll face.
Do you have questions on this course? Contact our cloud experts in our community forum.
Compute Services in AWS consists of services that offer cloud-based processing resources such as virtual machines, functions, and load handling; think of it as anything that uses a computer processor. These resources can scale based on conditions, planned or not, and shrink back when the needs subsides.
Elastic Cloud Compute or EC2 is a service that incorporates virtual process power through cloud-based virtual machines. EC2 allows you to pick configurations called Instance Types that best match the type of processing needed. You can choose an instance type for systems that rely heavily on memory or another type that is heavily using processing power.
General purpose instance types come in two flavors, the T Series and the M Series.
The T Series can handle low traffic web sites, development environments, et cetera, essentially any processes that do not require a ton of CPU power. You get Burstable CPU via CPU credits that are obtained hourly based on the size of the instance. Their max limits also based on the size of the instance.
The M Series is perfect for small and medium-sized databases. It accomplishes this with the right balance of memory, CPU and storage. It uses solid-state drives with fast I/O performance. These features make it a very popular choice for many different types of systems.
The Compute-Optimized Instance Family offers the best price for pure CPU performance. The latest generation, the C4 Instances, use processors built specifically for AWS hardware and EC2 Instances. This family works best for jobs that are CPU intensive, be it batch processing, video encoding or other work-force tasks.
Memory-Optimized Instance types offer the best price per GB of RAM of all the instance families. Think high-performance databases in caching when considering this family of EC2 Instances. Not only do you get a lot of memory, you get fast memory access of up to 63 GB per second; and that's very fast.
The GPU Instance Family offers a high-performance NVIDIA GPU with up to 4 GB of video memory combined with a built-in encoder that supports high definition and fully high definition video streams.
The G Series is ideal for server-side graphics workload, game streaming, 3-D application streaming, and video encoding.
Lastly the Storage-Optimized Instance Family brings the choice between low-cost IOPS or the best cost per GB of storage.
The I Series delivers high IOPS at a low cost. These instances are designed for fast, random, I/O performance that is ideal for data warehousing and NoSQL databases.
The HS Series is designed for the best sequential I/O performance at the lowest cost per GB. HS Instances are ideal for parallel file systems and data warehousing. Most the time it is easy to know when you use EC2 Instances. For example, you could pick EC2 to host web servers, batch processing systems or custom applications. The choice is easier when no equivalent managed service exists.
If a managed service does exist such as RDS, you need to weigh that option versus running it yourself on EC2 Instances. This usually comes down to how much control you need over the underlying server resources. If you require full control, you'll need to skip over managed services and use EC2 Instances.
Pricing for EC2 varies greatly based on a few different factors. There are three different cost models.
The first is On-Demand Pricing. With On-Demand Pricing you pay hourly for however long you run your EC2 Instance at a price set per instance type. If your EC2 Instance does not run the full hour you are still billed for the full hour.
Reserved Pricing offers discounted hourly rates per instance type with an upfront commitment of either one year or three years. The upfront commitment comes in the form of a one-time payment which offers the steepest hourly discount, a partial upfront payment or no upfront payment at all.
Spot Pricing is market-placed pricing based on supply and demand. You are paying for unused, excess AWS capacity by bidding for time. There is no guarantee that you will get a Spot Instance; when you do, there is no guarantee you will have it for any length of time. This make Spot Pricing useful in situations where jobs can spin-up and shut-down without a negative impact on the system they interact with.
In addition to the hourly pricing, EC2 Instances are subject to data transfer charges. This is very nuanced but essentially data coming into the EC2 Instance, from the Internet, is not charged. Data sent out from the EC2 Instance to the Internet is charged per GB in TB tiers. For example, the first GB is free, then you are charged nine cents per GB through the first 10 TBs. After 10 TBs you are charged 8.5 cents per GB up to the next tier, and so on.
Data transferred in and out of other AWS services may or may not be charged, it depends on the service and whether the boundary is at the Region or Availability Zone. It also depends on whether the traffic happens over the private IP address, a public IP address or an Elastic IP address.
Other EC2 charges apply for EBS optimization, EBS storage and CloudWatch monitoring. We will cover most of these in other lessons. It is important to note that all EC2 pricing will vary based on the AWS Region used.
ECS or EC2 Container Service is a Docker compatible service for running Linux containers on top of EC2 Instances. Applications launched inside containers run in complete isolation. ECS allows for the creation of clusters to launch containers and for multiple EC2 Instances. You can quickly and affordably scale your application or layers of your application; your basic commands are scheduling.
With ECS you can fully utilize the EC2 Instances you pay for without wasted compute cycles. Applications that do not fully utilize an EC2 Instance are candidates for moving to the EC2 Container Service.
You can run different layers of the same application or different applications altogether. If your application must scale in a matter of seconds, you cannot beat the speed of scaling in ECS especially if your application under utilizes its EC2 Instance. ECS is perfect if you are already using Docker in your environment. ECS is a managed service making it ideal if you do not wish to run your own cluster infrastructure.
Lastly, choose ECS if you need to build a custom scheduler for your containers. ECS has no additional cost, you only pay for the EC2 Instances you are using in the ECS cluster.
AWS Lambda is a service for running processes without the need for provisioning and managing EC2 Instances. Currently it only supports Node.js applications. Functions can be triggered via events that come from S3, Kinesis or DynamoDB when invoked directly from the AWS console or the command line tools.
With the Pull Model, items are plucked off of the Kinesis the stream or DynamoDB update stream by a Lambda function. Systems designed with a Message Bus architecture might be candidates for using Lambda in this way.
The Push Model happens when an S3 event occurs and a Lambda function is invoked in response to the event. A common use-case is performing imaging resizing and or conversion when a raw image is uploaded to a S3 Bucket. There are two factors involved in Lambda pricing; the number of executions per month and the seconds of execution per month. The cost varies based on the amount of memory allocated to the function, the more memory the higher the cost. Lambda pricing is in fractions-of-fractions of pennies, which makes it a very attractive offering.
Auto Scaling makes Horizontal Scaling easy based on demand or predetermined schedule. You can increase or decrease the number of EC2 Instances running based on CloudWatch metrics. For example, you can have more instances fired-up when CPU utilization is sustained above 70 percent for more than five minutes and then have them shut down when it drops below 50 percent for 10 minutes. You can set the minimum, maximum, and desired targets for Auto Scaling to help you control your spend.
Auto Scaling has health-checking built in which can drop EC2 Instances not responding and replace them with newly spun-up healthy versions.
All of this functionality works across Multiple Availability Zones within a region almost guaranteeing you can meet the gold standard of High Availability without additional effort.
Auto Scaling should be used when you want to ensure that you have at least one EC2 Instance or an EC2 Instance in each Availability Zone always running.
Another important use-case is when you need to scale based on increased demand or when you know of an upcoming major event where your EC2 Instances will be under a heavy workload. You can also ensure you scale back down to a normal EC2 presence and not waste money on idle resources, all of this functionality with no manual intervention.
There is no additional cost for using Auto Scaling, you only pay for the cost of the running EC2 Instances. Elastic Load Balancing service is a managed Load Balancer used to distribute traffic among any number of EC2 Instances. An ELB can be can be internal- or external-facing. One of the key features that makes it an attractive service is that it performs health checks on the EC2 Instances registered with it, to determine if an instance is healthy enough to receive traffic.
ELBs support Multiple Availability Zones; combine that with its built-in Fault Tolerance, the Elastic Load Balancing service can ensure your application runs in spite of issues within a single Availability Zone, making it ideal for Web and Application Layer services whether internal- or external-facing. Applications can take advantage of this to become fault-tolerant and self-healing. Just spread the Application Layers across Multiple Availability Zones and add Auto Scaling to the mix.
The Elastic Load Balancing service comes at a base hourly charge plus the amount of gigabytes transferred. Prices vary by the AWS Region used.
Compute Services are core to many AWS infrastructures. The exam will evaluate your decision-making between building a solution using your own EC2 Instances or one of the managed services offered by AWS. The trade-offs are based on factors including ease of use, cost, and available alternatives.
Make sure you spend a portion of your study-time considering these options.
Up next, we will take a look at the Storage and Content Delivery offerings from AWS.
Kevin is a seasoned technologist with 15+ years experience mostly in software development.Recently, he has led several migrations from traditional data centers to AWS resulting in over $100K a year in savings. His new projects take advantage of cloud computing from the start which enables a faster time to market.
He enjoys sharing his experience and knowledge with others while constantly learning new things. He has been building elegant, high-performing software across many industries since high school. He currently writes apps in node.js and iOS apps in Objective C and designs complex architectures for AWS deployments.
Kevin currently serves as Chief Technology Officer for PropertyRoom.com, where he leads a small, agile team.