Whilst putting together my slide deck for my upcoming presentation at CFCamp about the AWS Elastic Container Service, I drew the following diagram to show how a basic continuous delivery (CD) setup could be created using ECS along with some associated AWS services.
With this setup, you have your Docker image build process held in a Git repository which pushes to an AWS CodeCommit repository. AWS CodePipeline monitors the repository and when it sees a new commit on the branch you are watching, probably “master” or “develop”, it tells the CodeBuild service to build and test the Docker image before pushing this image to the Elastic Container Registry and then telling the Elastic Container Service to deploy the new version of the image from the registry to the cluster and removing the previous Docker containers from the cluster.
The web frontend the ECS if handled via an Application Load Balancer which can also act as a termination point for SSL’s, certificates for which can be provided, free of charge, via the AWS Certificate Manager.
As the Docker containers are essentially disposable, you need somewhere for persistent storage and AWS has several options for you, which you may need to use more that one of, these are:
This is only a basic example and you could get far more complex and make use of many other AWS services. Also, in the above, I have deliberately left out some of the other services this makes use of in the background, such as CloudWatch and IAM, to simplify the example.
If you are coming to CFCamp and would like to know more, then please come along to my presentation.