If you are in the field of software development, you have probably heard of containers. A containerized application has myriad benefits, including efficiency, cost, and portability. One of the big questions with this technology is where and how to host it? In house, in the cloud, somewhere else? Amazon Web Services (AWS) offers a few options for container hosting. Elastic Container Services (ECS) is one of those offerings. ECS provides robust container management, supercharged with the power of AWS. However, there are other options out there. ECS alternatives may better fit your needs. An important decision like this justifies some shopping around.
There are several things to consider when choosing a container host. One size does not fit all! Each customer has their own in-house skillset and existing cloud integrations.
This post will illustrate the important things to consider. We will dig into details around alternatives to ECS. We will compare and contrast the offerings, looking at the pros and cons of each. With this background information, you will be better educated on this decision. You can then decide which solution best fits your business needs.
AWS Elastic Container Service
AWS Elastic Container Service (ECS) is Amazon’s main offering for container management. Utilizing ECS allows you to take advantage of AWS’s scale, speed, security, and infrastructure. With this power, you can launch one, tens, or thousands of containers to handle all your computing needs. ECS also ties in with all the other AWS services, including databases, networking, and storage.
ECS offers two main options for containers:
- AWS Elastic Compute Cloud (EC2): EC2 is AWS’s virtual machine service. Using this option, you are responsible for selecting the servers you want in your container cluster. Once that’s complete, AWS handles the management and orchestration of the servers.
- AWS Fargate: Fargate abstracts things another level, eliminating the need to manage EC2 instances. Rather, you specify the CPU and memory requirements, and AWS provisions EC2 instances under the covers. This offers all the power of ECS, without worrying about the details of the actual underlying servers.
Pros and Cons
Here are some things to consider with the ECS offerings:
- Integration with AWS: One of the biggest decisions around using ECS is its integration and reliance on AWS. This is either a pro or a con, depending on your circumstances. If you are already using AWS, adding ECS to the mix is a straightforward proposal. However, if you are not currently using AWS, there is a considerable learning curve to get up and running.
- More Automation: ECS provides layers of automation over your containers. Customers without in-house expertise to manage the lower-level complexities may prefer this. However, it may also bind the hands of someone who wants more control over their container landscape. Fargate takes the automation a step further. Again, that could be good or bad, depending on your situation.
- Cost: In this age of modern cloud computing, it is typically more cost effective to run everything in the cloud. No more hardware to purchase, networking snafus to resolve, or expertise to hire and retain. However, the cost differences in the container offerings are more nuanced. If you have container expertise in-house, it might be more cost effective to run your own container solution on top of AWS services. If not, you may save money using something like ECS.
- Deployments: One key drawback to ECS is that it is not available on-premise. While all cloud may be fine for many businesses, there are instances where maintaining legacy services or closed networks is preferential if not mandatory.
- Vendor lock in: In order to use ECS, you must be on AWS cloud. This also means the possibility of getting locked into a single technology provider if steps are not taken to painstakingly avoid this.
Similar to AWS, Google offers “all the things” on its cloud services. This includes servers, storage, databases, networking, and other technologies. Google’s solution for managing containers is Kubernetes, an industry leader in container orchestration. Kubernetes began as a project within Google, which eventually made it open source, available to the public. Since then, it has become one of the strongest options for container orchestration. Kubernetes is a service that all the major cloud providers offer. Google currently offers this service similar to AWS’ ECS called Google Kubernetes Engine, or GKE for short.
Pros and Cons
There are some pros and cons of using Google for your container services:
- Integration with Google services: Like the AWS decision, you need to consider whether you currently use Google Cloud services. If you are already heavily invested there, adding Kubernetes to the top makes sense. If you are not, then it may introduce a large amount of time and cost to the equation.
- Familiarity with Kubernetes: This is a big one. If you have in-house expertise with Kubernetes, you’ll feel comfortable running it in Google Cloud. If not, there’s a fairly steep learning curve to get there. Kubernetes is not for the faint-hearted.
- Less Automation: With Kubernetes, Google puts more power (and responsibility) in the hands of their customers. Some customers may prefer that level of control. Others may not want to worry about these lower-level details.
- Deployments: As with AWS, a key drawback is that it is not available for on-premise deployments.
- Vendor lock in: In order to use GKE, you must be on GCP. Again, this means the possibility of getting locked into a single technology provider if steps are not taken to avoid this.
- Azure Kubernetes Service (AKS): Azure provides hosting for a Kubernetes service, and with it, the same pros and cons. Good for customers with Kubernetes know-how, maybe not for those without.
- Azure App Service: This is a more limited option, where a small set of Azure-specific application types can run within hosted containers.
- Azure Service Fabric: Service Fabric allows for hosting an unlimited number of microservices. They can run in Azure, on premises, or within other clouds. However, you must use Microscofts infrastucture.
- Azure Batch: This service runs recurring jobs using containers.
Pros and Cons
Here are some pros and cons of the Azure offerings:
- Confusion: The list above illustrates the many container-based services Azure offers. There are many “Azure-specific” technologies at play here. It can be hard to differentiate where the containerization stops and the Azure-specific things begin.
- Integration with Azure Services: If you are already using Azure for other services, using its container offerings makes sense. If not, you’ll need to climb the Azure learning curve. As with the other cloud providers, this introduces time and resource expenses.
- Less (or More?) Automation: The Azure offerings run the gamut. They start with no management (Azure Container Registry) to fully managed (Azure App Service and Azure Service Fabric). Once educated on all the features, pros, and cons of each, you may find a solution that perfectly meets your needs. Or, you might possibly drown in the details.
- Deployments: Differing from both AWS and GCP, Azure Service Fabric is actually available on-premise. However, (and it s a big however), you must use Microsoft servers that Azure provides. By going down this route you are virtually guaranteed to be locked into the Azure/Microsoft technology architecture with no easy way out.
- Vendor lock in: See above, as with both GCP and AWS, vendor lock-in is difficult to avoid and expensive to leave.
Another ECS alternative that may surprise you is Iron.io. It provides container services but shields customers from the underlying complexities. This may be perfect for customers not interested in developing large amounts of in-house expertise. Iron.io offers a container management solution called Worker. It is a hosted background job solution supporting a variety of computing workloads. Iron.io allows for several deployment options (on its servers, on your servers, in the cloud, or a combination of these). It manages all your containers and provides detailed analytics on their performance. By handling the low-level details, Iron.io allows you to focus on your applications. You focus on your business; they’ll worry about making sure it all runs correctly.
Pros and Cons
Here are some things to know about Iron.io:
- Easy to Use: For customers that want the benefits of containerization without having to worry about the lower-level details, Iron.io is perfect. Focus on your applications and let the pros worry about infrastructure.
- Flexible: For customers that have Docker/Kubernetes expertise, Iron.io provides its hybrid solution. You host the hardware and run the workers there. Iron.io provides automation, scheduling, and reporting. You don’t have to give up what you already have to gain what Iron.io has to offer. Iron also offers a completely on-premise deployment of Worker. This allows installing Worker in environments with high compliance and security requirements.
- Powerful: Iron.io can scale from one to thousands of parallel workers, easily accommodating all sizes of computing needs.
- Deployments: Unique to Iron Worker is the ability to deploy fully on-premise, as well as hybrid and fully cloud.
- No Vendor lock-in: Another unique aspect of Iron Worker is the ability to avoid being locked into any single vendor. It is cloud agnostic, so it will run on any cloud. Migration is also virtually a one-click process. This means operational expenses are kept to a bare minimum. It also means deploying redundantly to multiple clouds is an easy, efficient process.
Containerization is the future of computing. The need to own and run our own servers (or even our own operating systems) is slowly fading. The big question is where to start? Customers with Docker expertise, and existing cloud provider integrations, may find a container solution from a big cloud provider as the best choice. For customers just starting out in this field, or those looking to add management and analytics to an existing solution, Iron.io adds a good deal of power. Iron.io will grow with you, and with initial architectures in place, other options will unfold.
With this information in hand, you’re better prepared to answer some big questions. May your containers go forth and multiply!