CI/CD the Easy Way Using AWS CodePipeline | A Three-Part Series

Background

HumanGov is a Model Automated Multi-Tenant Architecture (MAMA) that is meant to be used by the 50 states for personnel tracking. Currently the architecture is based upon containers orchestrated using Kuberntes via Amazon Elastic Kuberntes Services (EKS). The architecture is not ready for go-live. All actions so far are for a proof-of-concept that is presented to the Chief Technical Officer (CTO) for review.

During the weekly team meeting, Ko (Lead User Experience Tester) reports seeing variance when testing different states. Kim (Lead Developer) reports that it is possible Ko is seeing that because the developers are deploying the state applications one-at-a-time, and this workflow does include testing, but it possible that the tests are not consistent, because the tests are run on an ad-hoc basis. Brady (Change Lead) reports that he has not seen any change requests for the application, so he wonders if that could have caught some of the unexpected variances? Lee (Lawyer) reports that the contract with the states requires a change control process that includes a manual approval for changes.

You first get the team to agree on the set of problems (and root cause):
Problem 1: There is inconsistency in the state deployments. (Application changes are built and deployed manually.) Problem 2: There is inconsistency in application testing. (Application changes are tested manually.)
Problem 3: Application changes are deployed without being approved. (Change control is not implemented.)
Problem 4: Contractual requirements are not being met. (Manual approval is not implemented).
After some thought, you propose a solution to (the reported issues):
Use AWS CodePipeline to automate application deployment. (Provide consistency in the state deployments.)
Use AWS CodePipeline to automate application testing. (Provide consistency in the application testing.)
Use AWS CodePipeline to implement manual approval that is logged. (Provide documented change control AND meet contractual requirements.)


This will be a three part series of articles where you implement a proof-of-concept of your proposed solution to implement CI/CD the easy way using code pipeline:

1 of 3: CI/CD the Easy Way Using AWS CodePipeline
In part 1, you will use AWS CodePipeline to automate deployment of application changes.

2 of 3: CI/CD the Easy Way Using AWS CodePipeline
In part 2, you will use AWS CodePipeline to add a Testing stage to your pipeline.

3 of 3: CI/CD the Easy Way Using AWS CodePipeline
In part 3, you will use AWS CodePipeline to add Staging and Manual Approval stages to your pipeline. You will decommission the infrastructure once done, because this is only proof-of-concept.

Highlighting some of the technologies that will be used in this solution:

AWS CodeBuild

AWS CodeBuild is a managed build service. It can compile code, run tests and produce artifacts. If you have ever used the build functionality in GitHub or Jenkins, then you should find AWS CodeBuild familiar.

AWS CodeCommit

AWS CodeCommit is a hosted version control service. If you have ever used GitHub, then CodeCommit is similar.

AWS CodePipeline

AWS CodePipeline is a continuous delivery service that allows for visualizing the steps in your release process. If you have ever used Jenkins, then you should find CodePipeline easy to use.

References

GitHub Docs

Jenkins User Documentation

What is AWS CodeBuild? - AWS CodeBuild

What is AWS CodeCommit? - AWS CodeCommit

What is AWS CodePipeline? - AWS CodePipeline


Lewis Lampkin, III - Blog

Lewis Lampkin, III - LinkedIn

Lewis Lampkin, III - Medium

Comments

Popular posts from this blog

Orphaned No More: Adopting AWS Lambda

Containing the Chaos! | A Three-Part Series Demonstrating the Usefulness of Containerization to HumanGov