Only environments that are setup automatically from code are also manageable and (fast) restorable. Good Deployment Pipeline Practices are:
- Create only through automation
- All environments must be created through automation
- Environment creation must be available on-demand for anyone that needs (aka developers)
- Version Control everything
- All environment pertaining code / config / artifacts must be in version control
- Setup of each deployed stage (aka environment) must match production stage setup
- Think Cattle, not Pets
- It is easier to “shoot and replace” (destroy and re-create servers) than “heal” (repair servers)
- Automated setup infrastructure is magnitudes more resilient than manual
Noteworthy
- Consider development tasks only as done, when they are actually running in production - or production-like - environment