senckađ
Group745
Group745
Group745
Group745
Group745
Group745
Thought Leaders in association withPartners in Crime
Group745

Unlocking the Power of Amazon Elastic Container Service (And Why It Crushes EC2)

08/05/2024
Digital Agency
New York, USA
25
Share
Somesh Kumar, lead DevOps engineer at Code and Theory, on boosting productivity

Image credit: Glenn Carstens-Peters via Unsplash


Are you interested in boosting your team’s productivity?

Do you want to reduce deployment downtime to zero?

If the answer is yes, read on.

In the past, developers frequently utilised virtual machines to run their applications locally, requiring them to manage tasks such as networking and security.

But with Amazon Elastic Compute Cloud (EC2), virtual machines exist in the cloud. In other words, you don’t need to buy your own hardware. You can set up virtual servers that fit your needs. EC2 provides computing power and can build and run apps faster.

With EC2, you can avoid spending money on physical servers. It enables you to start up as many virtual servers as you want, set up and customise security and networking, and manage storage easily.


But, are you still relying on EC2 rather than Elastic Container Service (ECS)? Hold on! Here are the top reasons why you should make the switch from EC2 immediately:

  • Manual configuration: EC2 instances require manual configuration for provisioning, scaling and managing the underlying infrastructure. This can be time-consuming and error-prone, especially when deploying complex applications with multiple dependencies.
  • Scalability: Scaling EC2 instances requires careful planning and management. Organisations must anticipate changes in traffic patterns and manually scale the infrastructure, which can lead to over- or under-provisioning resources.
  • High availability: Ensuring high availability and fault tolerance in EC2 deployments requires additional setup, e.g., establishing auto-scaling groups and load balancers and implementing health checks. Managing failover and recovery processes adds complexity to the deployment architecture.
  • Resource management: Organisations need to manage resources (e.g., CPU, memory, storage, etc.) on EC2 instances manually. Optimising resource utilisation and performance requires constant monitoring and tuning of the infrastructure.
  • Security: Securing EC2 instances involves configuring firewall rules, managing SSH keys, implementing encryption and regularly patching the operating system and software. Failure to properly secure EC2 instances can expose applications to security vulnerabilities and attacks.
  • Cost management: EC2 instances incur costs based on usage, including compute resources, storage and data transfer. Optimising costs requires monitoring usage patterns, rightsizing instances and implementing cost-saving strategies, such as Reserved Instances or Spot Instances.
  • Infrastructure complexity: Deploying applications on EC2 instances involves managing a variety of infrastructure components, including virtual machines, networking, storage and security groups. Dealing with this complexity can be challenging, especially for organisations with limited expertise in AWS infrastructure management.
  • Deployment consistency: Ensuring consistent deployment environments across multiple EC2 instances can be challenging, particularly in environments with frequent updates or changes. Managing configuration drift and ensuring consistency in software versions and dependencies requires robust deployment automation and configuration management tools.

As organisations grow, using EC2 can lead to increased infrastructure complexity, manual processes, security maintenance and longer deployment times. Transitioning to ECS is advisable to mitigate these challenges, improve developer productivity and reduce cloud costs.


Now that we’ve discussed the reasons for moving away from EC2, let’s explore how ECS revolutionises the approach entirely:

  • Containerization: ECS is specifically designed for containerized applications. Containers offer numerous benefits, such as consistency, scalability and portability across different environments. By utilising ECS, organisations can easily orchestrate and manage their containerized workloads.
  • Managed service: ECS is a fully managed service provided by AWS, meaning that AWS handles the underlying infrastructure management, such as server provisioning, patching and scaling. This allows organisations to focus on their application development and deployment rather than managing the underlying infrastructure.
  • Scalability: ECS provides automatic scaling capabilities that enable organisations to scale their containerized applications seamlessly based on demand. This ensures that applications can handle fluctuations in traffic without manual intervention, improving reliability and performance.
  • Integration with AWS: ECS integrates seamlessly with other AWS services, such as Amazon ECR (Elastic Container Registry), AWS Fargate (a serverless compute engine for containers), AWS CloudFormation (for infrastructure as code), AWS IAM (Identity and Access Management) and AWS CloudWatch (for monitoring and logging). This tight integration simplifies the development, deployment and management of containerized applications within the AWS ecosystem.
  • Cost optimization: ECS helps organisations optimise costs by paying only for the resources they consume. With features like AWS Fargate, organisations can run containers without managing the underlying infrastructure, which can generate cost savings by eliminating the need to provision and manage EC2 instances.
  • Flexibility: ECS provides flexibility in deployment options. Organisations can run their containers on their own EC2 instances or use AWS Fargate to run containers without managing servers. This flexibility allows organisations to tailor their deployment strategy based on their specific requirements and constraints.

Amazon ECS allows users to run and manage Docker containers in a highly scalable and reliable manner. It supports Linux and Windows containers, making it versatile for numerous applications. ECS provides the infrastructure needed to deploy, manage and scale containerized applications, abstracting away the complexity of managing the underlying infrastructure.


How ECS helped me and my team:

Upon joining the team, I noticed opportunities for improvement in our EC2 instance management. We were using more resources than necessary, leading to an additional cost of about 20–30%. Also, we needed to enhance our security checks to better protect our systems.

The key issue we faced was package version mismatches. Specifically:

  • Each deployment issue took about 35 minutes to diagnose.
  • With approximately three incidents per sprint and with three developers, we spent around nine developer hours per sprint addressing these issues.

This situation highlighted a significant opportunity for us to streamline our deployment process and improve our resource utilisation.


Having transitioned from EC2 to ECS Fargate, we’ve experienced significant improvements in various aspects:

Transitioning from EC2 to ECS Fargate has not only streamlined our deployment processes but also enhanced developer productivity and significantly reduced infrastructure costs. Embracing containerization with ECS has empowered our team to focus on innovation and business goals, leading to more efficient, resilient application development and deployment.

  • Deployment time per EC2 instance was reduced from 15 minutes to fewer than five minutes, a decrease of approximately 67%.
  • The total daily time saving for developers using ECS Fargate is 40 minutes, assuming two deployments per day.
  • Developer productivity was boosted by 30%, primarily due to the effective resolution of package and versioning issues with containerization.
  • Hardware resource utilisation efficiency improved by 30%, leading to a corresponding cost reduction.
  • Deployment downtime was eliminated thanks to a rolling update deployment strategy and automatic application restart feature.
  • Developer focus shifted toward business logic, with reduced infrastructure management responsibilities.

Transitioning from EC2 to ECS Fargate has not only streamlined our deployment processes but also enhanced developer productivity and significantly reduced infrastructure costs. Embracing containerization with ECS has empowered our team to focus on innovation and business goals, leading to more efficient, resilient application development and deployment.

Credits