Building
Building, in the context of software development, refers to the process of compiling code, including dependencies, into a runnable application or system.
Purpose
The purpose of the building process is to convert code into usable applications.
Context
Industry Context
There are multiple steps involved in getting from the code on a developer's machine to the point where we have a running application in a production environment. With a fast-paced market and the need to get quick feedback from customers, it is important to have a streamlined process for building and deploying code.
ZeroBlockers Context
We want to remove all of the blockers that prevent us from getting code into production as quickly as possible. This means that we need to remove all handovers and manual processes from the building and deployment process.
Methods
Method | Description | Benefits |
---|---|---|
Configuration Management | The practice of keeping track of code changes and environment settings to ensure consistency across deployments. | Enhances reproducibility and traceability of builds. |
Infrastructure Automation | The use of code to automate the provisioning and management of infrastructure, such as servers, networks, and storage. | Reduces manual effort and human error, improving reliability and consistency. |
Test Automation | The use of software to control the execution of tests, comparing actual outcomes with predicted outcomes. | Increases the scope and depth of tests, improving software quality. |
Continuous Integration (CI) | The practice of frequently integrating code changes into a shared repository, triggering automated builds and tests. | Detects integration errors quickly, facilitating rapid correction. |
Continuous Delivery (CD) | Ensures software can be reliably released at any time, often by automatically deploying all changes to a testing environment. | Makes releases predictable, low-risk events. |
Anti-patterns
- Manual Processes: Relying on manual processes for building and deploying, which can be slow and error-prone.
- Infrequent Integration: Allowing long periods between integrations, leading to complex merges and integration issues.
- Skipping Automated Tests: Not running automated tests as part of the build, risking the quality of the build.
Case Studies
Mitigating Risk through Continuous Delivery
How Xero reduced risk and improved software delivery efficiency by implementing continuous delivery practices.
Xero
Empowering Continuous Delivery Culture at HMH
How Houghton Mifflin Harcourt (HMH) transformed its engineering practices by adopting continuous delivery and a DevOps culture.
Houghton Mifflin Harcourt (HMH)
Scaling Continuous Delivery in Large Organizations
How Glovo's implementation and scaling of continuous delivery (CD) to enhance their software development and deployment processes.
Glovo
Implementing Continuous Delivery: Real-World Insights from WiredCraft
How WiredCraft implemented continuous delivery (CD), highlighting the challenges faced and the tangible benefits realized.
WiredCraft
Streamlining Product Development at Mozilla Firefox
How Mozilla streamlined product development and improved efficiency in the development of Firefox.
Mozilla
Enhancing Deployment Efficiency with Automated Workflows
How Microsoft implemented automated deployment workflows to enhance efficiency and reliability, supporting their extensive user base of 75,000 people.
Microsoft