gehen - Easily update ECS services.

gehen is a small CLI tool that makes it easy to deploy updates to AWS Elastic Container Service (ECS) services. It updates the docker image used by the service, deploys a new version, and waits for the cutover to be complete. gehen will check that the new version of the service has been deployed, and wait until all old versions have stopped running. If the deployment of the new version fails, gehen will recover by rolling back to the previous version to ensure the ECS service does not remain in a bad state. gehen has been a crucial component of the Continuous Delivery (CD) process at TouchBistro.

As the CD processes at TouchBistro evolved, gehen required changes to support new use cases. The challenge here was how to implement the necessary functionality without making gehen coupled to TouchBistro's internal tools and use cases. The desire was to keep gehen as simple as possible, and to have it be orthogonal to the other tools it was used in conjunction with. If a new feature was being added, or a change was being made, it had to be done in such a way that did not compromise the design of gehen. It had to be implemented as a general purpose API that could make sense in other use cases, instead of a specific one that old made sense to the use case at TouchBistro.

What technologies does it use?

gehen is built in Go. It uses the AWS SDK to make the necessary changes on ECS. This was a great opportunity for me to get familiar with the AWS SDK and some of the AWS APIs. I gained a better understanding of how ECS works and the components involved with it.

Want to know more?

Check out the GitHub repository for more information about gehen and how to use it.