6 Continuous delivery and branching models
This chapter covers
- Designing delivery pipelines to avoid pushing failures to production systems
- Choosing a branching model for infrastructure configuration for team collaboration
- Reviewing and managing changes to infrastructure resources within your team
In the previous chapters, you learned how to write patterns for modules and dependencies. You also applied some general practices for writing infrastructure as code. However, you need to coordinate these development practices in your team and commit them to one repository. Any time someone wants to update something, they clone the repository and commit their changes. One day, you try to make a change only to find out that your teammate’s updates might overwrite yours! How do you make sure you manage conflicts during the development process?
Most companies use a process of change management to figure out which changes conflict. Infrastructure change management involves submitting a change request detailing rollout and rollback steps for peer reviewers’ approval. For example, if I wanted to change a server, I needed to fill out a change request in my ticketing system. This change request then gets reviewed by my peers (usually my team) and the change advisory board (on behalf of the company).