is the norm: autoscaling, deployment • Config must be done as code • Results in repeatability and trust • We can embrace failure and chaos engineering • Automation and code allow multiple copies • Multiple copies means we can move fast
change-controlled and repeatable • Operations source-code is in same git repo as application code • Every release is tracked as a single SHA in Github • Check out a SHA to get a fully self-contained ops+app setup • We use AWS Cloudformation templates to describe all resources
database copy • Use SQS and workers to copy data between dynamodb tables • Migrations are performed at the same time as copy • Shoryuken workers for multi-threaded processing github.com/phstc/shoryuken
• DynamoDB streams to monitor these changes • New data is continuously migrated • Same migration logic as with bulk copy • No more migrations on release day!
controlling an application using multiple, linked Cloudformation stacks. Makes it easy to create and manipulate a full application for every git branch. Plugins for manipulating specific AWS resources. Plugins for adding non-AWS resources. Pragmatic: Ruby Stack class is designed to be sub-classed and monkey-patched to handle hacks and edge-cases. github.com/rlister/stax
changed once deployed • Automation: infrastructure, config, and deployment is all automated • Embrace failure • Pragmatism: there are always edge-cases, plan for them