Many enterprises are increasingly moving away from the cumbersome monolithic architecture patterns by adopting the smaller and simpler microservices architecture for their software applications. Due to this, the method that they adopt for deploying their applications and their overall DevOps strategy has changed a lot.
A variety of new tools have been developed to facilitate these latest DevOps practices in implementing and deploying microservices based applications. Some of the popular ones are Docker containers, Kubernetes – an orchestration tool from Google, and ECS (Elastic Container Service) by AWS.
Containers are lightweight processes and Docker is fast becoming the popular container platform service provider these days. Orchestration tools such as Kubernetes Rancher and AWS services help manage these Docker containers. Docker made things simple and easy to manage.
However, the question still remains as to how to decide which tool fits your overall strategy.
In this blog, I’m going to talk about those cases in which you can leverage ECS as a core component of your DevOps strategy.
Engineering teams in most organizations, large or small, are adopting the microservices architecture and as a result, containerization of applications has become a common practice. However, some of these teams are smaller and cross-functional, and they want a simpler way to deploy their applications. In such cases, a much heavier Kubernetes might be an overkill compared the much lighter AWS ECS. AWS ECS itself comes with the Kubernetes flavor.
AWS’s ECS is a great fit for smaller engineering teams as it is simple and fast. Since it’s a fully managed service, the burden of deployment, monitoring and maintaining the logs is lifted off the engineering teams so that they can focus on application development.
Containers can be run or scheduled to run on the same node using ECS. In addition to deploying the containers, ECS also ensures that all essential containers are always running thus maintaining the state of the containers.
ECS allows you to distribute the EC2 utilization (CPU and Memory) between containers. This allows you to achieve high to full utilization of EC2. With ECS, the EC2 instances come with the auto-scaling option enabled by default which is an added advantage.
Additionally, with ECS, you will be able to leverage other services/tools from AWS such as AWS Cloudwatch and Container registry.
AWS Cloudwatch can be set up to monitor each individual container logs and metrics.
With the Container Registry, you can now store container images and automatically encrypt images while pushing them over an HTTPS connection.
With AWS IAM, you can easily manage permissions and access to images in the Container Registry.
Add-on features from AWS:
AWS also provides several add-on features that can be leveraged to make the overall process better.
AWS’s IAM allows you to define permissions at the lowest possible level – the task level – thus providing the ability to limit access. It follows the “Least Privilege” access model.
Example: If there are two containers running on the same instance, you can specifically define which container should access the S3 bucket by assigning the appropriate IAM role to that container.
Containers help improve the utilization of your EC2 resources to help run multiple services on the same instance. Using Docker with ECS in your projects will help in standardizing the processes and configuration across services so that knowledge and resources easily shared across cross-functional teams.
For small teams, better and higher efficiency and throughput are critical and using ECS will help streamline their workflows effectively.