Compute Options in AWS
Compute Options in AWS

Amazon offers a broad range of Compute options. Picking the right one is an important first step that will affect your application performance, cost, and future scalability. In this course, let’s go ahead and explore the various options available and see how we can match these with our business requirements.

Learning Objectives

  • Virtual machine options for your applications
  • Options for new software development projects
  • Serverless options where AWS manages the infrastructure for you
  • Containers that can be deployed in a traditional server or serverless fashion

Intended Audience

  • Those new to cloud computing
  • Those facing the challenge of deploying an application to AWS with very specific business requirements


  • You don’t need any prior knowledge of AWS to benefit from this course
  • It’s helpful to be familiar with your business requirements




AWS offers quite an array of options when it comes to Compute, which essentially is the horsepower required to run your application. This includes CPU, memory, and storage specifications. All three play a significant role in choosing the right one for your needs. Less common and more cloud of specific options include; the ability to manage the servers yourself, the ability to deploy an application without considering servers at all, scale, cost and governance requirements. And since this list of computer options available to you will continue to grow and evolve, I have not tried to make it a comprehensive list. So, for simplicity, I've grouped all options into three categories: compute options that you can manage, serverless options where AWS manages the infrastructure and you just worry about your application, and in-between options where you can manage the servers but AWS provides a tool or front-end to take care of this for you. EC2 virtual machines. This is the bread and butter of AWS.

This service has been around for many years and is probably the single most popular service when it comes to Compute. This is your number one choice when running legacy apps, server migrations to the cloud, applications that require that you have full administrative privileges, and many similar use cases. EC2 allows you to find Compute options that match your needs exactly. Lots of memory and little CPU, lots of CPU with just a few gigabytes of memory and anything in between. You can combine EC2 with the concepts of Spot instances and auto-scaling to find a good balance of cost savings and high availability of your applications. We'll talk about these concepts later on. For now, just remember that when in doubt, EC2 is always going to be your best bet when looking for a Compute option to host your application. One disclaimer though, you and only you are responsible for security and management of your EC2 servers. So, if you're not experienced in this area or you have a small business without an operational team, you may consider some of the other options in this course or perhaps find an expert that can help you set up your EC2 virtual machines initially. Amazon Lightsail.

This is an exactly a fully customer-managed solution. It's more of an in-between option, but it's worth mentioning here because it's so tightly integrated with EC2. Lightsail are pre-provisioned servers that resemble old-school legacy servers that you would lease from a word hosting provider to run your application, say a WordPress blog for example. Just like EC2, you have some control over a Lightsail, but in this case you really just focus on delivering a great solution to your customers and let Lightsail manage the server for you. I'm just making you aware of this option in case it can help you achieve a specific goal with AWS, but know that EC2 already covers what this service offers and if you are already familiar with EC2 and comfortable with it, then this option is probably unnecessary for you. AWS Lambda. For years now, AWS Lambda has been the number one choice for serverless computing. In this case, you just provide your application code and Amazon infrastructures takes care of running it.

That said, this type of computing only works for point-in-time transactions that can be started and completed within a small amount of time, from a few milliseconds to a few minutes. If you need a standby server that runs all the time, probably the next option is a better choice. Lambda supports several languages that you can choose from and it even supports Docker container, which allows for pretty much unlimited programming languages in this case. You can also combine it with several other AWS services to come up with complete solutions. For example, step functions for end-to-end workflows, S3 for storage and file processing, and API Gateway to develop full REST APIs and microservices. AWS Fargate. Containers are a super convenient way to abstract your software from the underlying infrastructure. So, why not take it a step further and just let the infrastructure be completely hands off to you, allowing AWS to manage it? This is where Fargate comes into play. Unlike traditional AWS ECS infrastructure where you have control over the servers, in this case you just specify the needs of your containers in terms of memory and CPU consumption and AWS finds a way to accommodate this for you.

No servers to manage, operating system to patch or any of that overhead at all. This is a great Compute option if you're looking to deploy lots of services that need to run all the time and you don't care or don't want to manage the underlying infrastructure. The key difference with Lambda is that in this case you don't need to be a Software Developer or even understand what's happening inside your black-box container, just deploy and run them according to the documentation and you're off to the races. When approaching DevOps for the first time, you either have a software development background or you are an experienced System Administrator. Either way, you'll appreciate the following Compute options in AWS. These options are designed to let you focus on your strengths while still keeping the option of managing the infrastructure yourself, if you choose to do so.

Elastic Beanstalk. This is a great choice for those looking to deploy existing applications or new software development projects because although it manages deployments and infrastructures for you, you retain the option of getting your hands dirty and tweaking the servers as needed. Beanstalk uses well established AWS infrastructure behind the scenes, including EC2 Virtual Machines, Load Balancers and Auto Scaling. The goal in this case is to allow Web Developers to focus on creating amazing apps without having to worry about infrastructure. But if the need arises that you need to SSH into one of your machines for any reasons, you have the options to do so. This isn't possible with fully serverless options such as AWS Lambda. AWS OpsWorks is a server management tool that works with the concepts of stacks or layers, where you can deploy and manage databases, application servers and web servers. Really, any type of layer that your application needs to be able to run. This type of separation between layers allows you to control deployments, downtime and other factors that affects applications that are tightly coupled. If you feel that Elastic Beanstalk is for software development then OpsWorks may be a great choice for you.

Also, if you have experience with change management tools such as Chef or Puppet, you'll feel right at home with OpsWorks because these are directly supported by OpsWorks. For those with an operational background as opposed to software development, this is a great choice. AWS Amplify. I'd like to touch on one more option for managing Compute and infrastructure in AWS, and that's AWS Amplify. Amplify is very specific in the fact that it's meant for serverless web applications. So, probably not a good choice if you already have your software that's ready to run. But if you're building a new application from scratch, Amplify manages CI/CD, environments, tests, and of course the computing infrastructure required to build and run your application.


About the Author
Carlos Rivas
Sr. AWS Content Creator
Learning Paths

Software Development has been my craft for over 2 decades. In recent years, I was introduced to the world of "Infrastructure as Code" and Cloud Computing.
I loved it! -- it re-sparked my interest in staying on the cutting edge of technology.

Colleagues regard me as a mentor and leader in my areas of expertise and also as the person to call when production servers crash and we need the App back online quickly.

My primary skills are:
★ Software Development ( Java, PHP, Python and others )
★ Cloud Computing Design and Implementation
★ DevOps: Continuous Delivery and Integration