4 Reasons Why Version Control is Vital to both Dev and Ops
Amy DeMartine and Kurt Bittner of Forrester recently published an excellent report on the need for organizations to accelerate their delivery cycles. Part of their analysis included a discussion of the relationship between Dev and Ops, and how the two must interact. Not surprisingly, much of what Forrester recommends aligns with our 4 reasons why version control is vital to both Dev and Ops:
- Both need the same single source of truth. When Ops uses the same version control system as Dev, anybody can reproduce the production environment based only on what is in version control. Dev and Ops can depend on version control to ensure that changes to the code and environment are continuously being integrated and deployed into the production environment, resulting in high IT and organizational performance.
- Far more configurable settings can go wrong in the environment than in the code. The environment includes everything—except the code—such as database, OS, and configuration settings. Therefore, all production configurations should be checked into version control, serving as the single source of truth that everyone can depend on for all environments (e.g., Dev, Test, and Prod).
- Continuous delivery requires developers to create production-like environments on-demand via an automated build process. To ensure repeatable outcomes, the build mechanism should be checked into version control, as well as all its dependencies. This guarantees that anyone can re-create environments based only on what is in version control, as opposed to individual or tribal knowledge, or worse.
- Version control helps foster mutual accountability and trust between Dev and Ops. If everything goes through the process and version control actually dictates the way development, test, and production environments are built, there is mutual accountability. Just as version control is necessary to create mutual trust between developers, you need that control in the value stream among Dev, Test, and Ops, which creates accountability and a sense of visibility and trust in the whole value stream.
Clearly part of your DevOps approach, whether in place or just underway, needs to be the use of version control for Ops as well as Dev, and that version control system should be the same for both. Ops should version control all production artifacts, just as Dev version controls everything.
To obtain optimal service delivery, Forrester also recommends that you:
- Optimize on cost using tools and technologies that have emerged to enable repeatable processes and automatic handoffs as well as reduce the development and maintenance cost of scripting.
- Attain delivery speed by automating the handoff between phases and tools across greater parts of the lifecycle until the lifecycle is automated in its entirety.
- Increase quality with tools that can help develop and verify that processes are going to produce a quality result.
- Remove manual processes that are, by definition, error prone and use tools to automate your processes and achieve repeatable results.
To hear it straight from the experts at Forrester read the report, Gear Up For Modern Service Delivery, and expand your thinking on DevOps and delivery cycle acceleration.