- Everything defined as code
- Reusability
- Consistency
- Transparency
- Validation and testing (just as important as testing code)
- Small and simple parts that you can change independently
- You want your code to be as simple as possible
- Configuration management: Terraform
- Infrastructure provisioning: Chef, Puppet, Ansible
- With the growth of microservices and serverless
- Automate one thing at a time and start slow
- DevOps culture is about making small changes, one at a time, and improve upon them
- Don't try to do all at once
- Automate the most tedious processes first, like server builds
- If you try to do everything at once, you'll most likely have to go back and redo it