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.
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.
Check out the GitHub repository for more information about gehen
and how to use it.