Chapter 2. The System of Truth
A complex system that works is invariably found to have evolved from a simple system that worked.
John Gall (Gall’s law)
To have an effective DevOps pipeline, it is important to have a single system of truth to understand what bits and bytes are being deployed into production. Typically, this starts with a source code management system that contains all of the source code that gets compiled and built into the production deployment. By tracing a production deployment back to a specific revision in source control, you can do root cause analysis of bugs, security holes, and performance issues.
Source code management solves several key roles in the software delivery lifecycle:
- Collaboration
-
Large teams working on a single codebase would constantly get blocked by one another without effective source code management, reducing productivity as the team size grows.
- Versioning
-
Source code systems let you track versions of the code to identify what is being deployed into production or released to a customer.
- History
-
By keeping a chronological record of all versions of software as it is developed, it is possible to revert to an older version of the code or identify the specific change that caused a regression.
- Attribution
-
Knowing who made the changes in a particular file allows you to identify ownership, assess domain expertise, and assess risk when making changes.
- Dependencies
-
Source code has become the canonical source for other key ...