Overwhelmed by the options when it’s time to choose a service on AWS? You’re not alone.
The management and deployment of containerized applications on cloud platforms like Amazon Web Services can be a complex and intensive task, especially if it’s not something you’re already familiar or experienced with. Tonic is a containerized application—meaning all of our application’s code and dependencies are already packaged—so this is a question we deal with quite often!
Today, we’ll take a look at how to choose a service on Amazon Web Services (AWS), using Tonic’s containers as an example. (Let us know if you want us to cover other cloud providers like Google Cloud Platform or Azure!)
A Brief Primer on Amazon Web Services (AWS)
Amazon Web Services, abbreviated as AWS, provides on-demand cloud computing platforms and APIs. AWS offers a broad choice of services for running containers as such—they range from giving the user complete control over installation and management, to abstracting away networking or server-related tasks. These services exist on a spectrum, from fully-managed to unmanaged.
Today, we’ll look at the following services on AWS:
- EC2 (Elastic Compute Cloud)
- ECS (Elastic Container Service)
- EKS (Elastic Kubernetes Service)
We’ll look at what each of these services can be used for and why you might choose to utilize one over the other.
Infrastructure and Compute
First up, we have the infrastructure and compute bundle. EC2 and Fargate both relate to the actual infrastructure/compute that will support your application. The two main differences between these two are the amount of management and overhead required to maintain these, as well as the types of workloads they are best suited for.
For example, when dealing with large workloads that require a lot of compute, maintaining a large number of EC2 instances might be rather resource intensive. You’ll need to make sure they are all patched, secured, and updated with the latest versions of software.
- Fargate is serverless, and removes the need to manage servers as such. You just specify and pay for resources per application.
- EC2 provides greater control and is a great bet when you have predictable workloads that continuously require high levels of infrastructure resources, whereas Fargate has increased flexibility. Within AWS, you’re able to provision and launch hardware when need arises without long-term commitments, just by setting some rules.
To choose between these two options, consider your workloads and the amount of resources you have to manage these services.
Next up, we have the container services. ECS and EKS are both services on AWS that pertain to container orchestration—that is they automate or drastically reduce overhead when it comes to deploying, managing, or networking your containerized applications. They’re not always directly comparable, because ECS is an AWS-native service for managing docker containers whereas EKS is a managed service for running Kubernetes in AWS.
Some of the significant differences between the two services include integration, complexity, and flexibility.
- ECS: ECS was designed solely for running on AWS, so it’s compatible with other AWS services and components (one such example is AWS IAM). With options to let AWS completely handle availability and scaling, or reduce the overhead of setting up network and security configurations, provisioning is almost as easy as a couple of points and clicks.
- EKS: EKS is built on open source kubernetes which can work anywhere. While it often requires add-ons or additional setup for the same integrations available right out of the bat for ECS, it’s also more customizable. The control plane allows you to lock down or separate each layer of your cluster if needed, or set up networking in such a way that all containers share access to internal and external networks.
(Pssst: Tonic has tons of configs for EKS!)
How to Choose a Service on Amazon Web Services
Ultimately, the correct service to choose on AWS comes down to what your needs and goals are for the platform. Do you need to reduce overhead? Store images? Require a lot of compute? There’s a different service for all these needs.
In our professional opinion, we recommend EKS. As we tell most of our customers, it’s more flexible than many of the other options on the table, and it’s easier to use in a wider variety of situations with a broader range of tools. Plus, it integrates quickly and easily with Tonic’s containers.
Picked your service? You’re all set! The next step is implementation. Check out How to Create Realistic Test Data for Amazon Redshift for a step-by-step breakdown on making the magic happen. And if you have more questions, don’t hesitate to give us a shout at email@example.com!