November 21, 2017

Integrating AWS's EC2 Container Service into Convoy


Convoy, our framework for DevOps on AWS now supports AWS’s EC2 Container Service (ECS) for container orchestration and management.  

In our first release of Convoy, we integrated Docker Swarm and Kubernetes as container orchestration platforms. However, we increasingly find that customers don’t want the hassle and overhead of managing these container orchestration tools, instead preferring to use ECS for a simplified experience.

We’re big fans of ECS. Despite it’s relative simplicity compared to something such as Kubernetes, we’re now deploying it with a number of clients operating with challenging scale, performance and uptime requirements.  

We’re finding it’s solid even when deploying thousands of containers at scale.  

About ECS

ECS is an AWS service that eliminates the need to install, operate, and scale your own cluster management infrastructure, and allows you to schedule Docker-enabled applications across a cluster based on your resource needs and availability requirements.

You can run anything on ECS: applications, batch jobs, or short lived or long running microservices.

Amazon ECS abstracts away all the complexity of the infrastructure so you can focus on designing, building, and running containerized applications in more of a Platform-as-a-Service model.

Check out my article here for more details on getting started with ECS.

About Convoy

Convoy is a lightweight framework that we use to accelerate our consulting engagements. Using an opinionated but flexible approach, Convoy automates the following two basic building blocks required by our customers:

  • Building on-demand environments in AWS
  • Building a CI/CD pipeline to continuously deliver apps into these environments

Within ten minutes - and with a single command - Convoy enables rapid iteration of your full infrastructure and software stack so that your teams can focus on creating value, rather than configuring infrastructure.

Integrating ECS into Convoy

This was actually remarkably easy - it took about 30 minutes from start to finish - a testament to the simplicity and robustness of ECS.

First, we just have to register one ECS cluster per environment. This was done with the following three lines of Terraform code:

All of our application nodes already run Docker 1.13, the latest release of Docker, so the only other thing we need to do was run a single ECS container running the ECS agent on relevant nodes.

Once the agent is added to the application nodes, we now have a separate ECS cluster in development, staging and production which we can then use to target containers at.  

Docker environments.png

 Integrating ECS into Continuum.png

Elastic Container Registry

Of course, we can also make use of Elastic Container Registry as part of this solution, avoiding the need to manage a separate Docker artifact registry.  

This registry can be pushed and pulled from in the same way using standard Docker APIs, meaning it’s supported by all tools in a Docker toolchain.  

Integrating ECS into Continuum2.png

What this means for Convoy and our customers

The huge business value of Convoy is that it saves clients’ teams huge amounts of time and energy on configuring infrastructure and middleware, neither of which add a competitive edge to the business. With Convoy, teams can concentrate their efforts on the application layer - where true differentiation and competitive advantage can be achieved.

We’re very excited to further container-enable Convoy with ECS, saving our customers the overhead of any complex orchestration layer to manage: meaning they can spend even more time creating value at the application layer for their own customers.