This is a transformation of Adrian Colyer's Checklist to turn it into a working model for a cloud transformation. The assumption is that the original checklist can suffice for any services that are deployed on the build pipeline, but the question to answer here is about how the environment is provisioned, deployed, monitored and governed in such a way as to fit the architecture implicit in the service checklist.
- Config is supplied via environment variables.
- Anything that doesn't vary between deploys should not be externalised.
- Deployment orchestrator should supply config as it deploys a service
- Secrets should never be supplied as config
- Desired deployment state should be declaratively described in code in a VCS.
- Desired state should be constantly checked and applied by a Reconciliation Loop
- external dependencies should be resolved through a discovery platform
- Never use IP addresses, always use DNS
- Production environments should be constantly chaos tested
- Production environments should be able to immediately recoiver from the abrupt failure of ANY element of the infrastructure and application.
- Infrastructure is specified as code in a VCS
- Infrastructure for all environments is managed by a build pipeline
- Service operation should not be interrupted by infrastructure reconfigurations
- infrastructure specifications should be declarative
- Build Pipelines are supplied as code in a VCS
- Deployments do not destroy or mutate previous versions of a service
- Same deployment model is used in all environments
- Fully automatic smoke tests after every deployment in all environments
- Production deployments pipeline includes:
- rolling blue/green deployments
- canary builds
- Access into all external services is via an intelligent gateway/reverse proxy
- Deployments during office hours should be preferred
- build pipeline should allow/prefer(?) triggering the builds of dependent downstream systems (is this compatible with service versioning?????)
- Intelligent entrypoint into each service or environment:
- Reverse proxying
- A/B testing
- Production cut-over
- Throttling
- Circuit Breaker
- Failover
- Feature switch
- Canary Release
- Dark Launch