Modernizing build and deployment processes
Practice · Chapter 14
The problem with legacy pipelines
Section titled “The problem with legacy pipelines”Outdated build and deployment processes are slow and error-prone. Manual builds and deploys invite mistakes. When processes are complex and poorly documented, knowledge concentrates in a few individuals — a risk when they’re unavailable or leave.
Start by understanding the current state: document exactly how builds and deploys are done today, including differences across environments (development, staging, production).
Automating the build and deployment processes
Section titled “Automating the build and deployment processes”- Automation makes builds/deploys fast and consistent across runs and environments, removing person-to-person variation.
- It provides quick feedback and lets you fail fast, so issues surface and get resolved sooner.
- Combine automated builds with automated unit tests run during the build to improve quality and catch problems early.
These practices enable the DevOps flows of CI and CD (see DevOps practices).
Practicing continuous integration (CI)
Section titled “Practicing continuous integration (CI)”- Developers on legacy systems should commit code changes frequently.
- CI surfaces check-in issues earlier and reduces conflicting changes; smaller, more frequently merged change sets are easier to diagnose and fix.
Practicing continuous delivery (CD)
Section titled “Practicing continuous delivery (CD)”- CD is the ability to release changes to users quickly and reliably. Legacy build/deploy steps — especially manual ones — are slow and tedious.
- Aim for a state where the app can be deployed to production at any time; automating the build and running automated unit tests within it is a key enabler.
- A CD pipeline should build and deploy to staging automatically. Taken one step further, continuous deployment automates the final step: deployment to production.
Updating the build tools
Section titled “Updating the build tools”Build tools keep evolving. If the legacy app uses an outdated tool, better options (or newer versions) likely exist. Updating them improves the pipeline and supports CI and CD goals.
Related
Section titled “Related”Citations
Section titled “Citations”- Software Architect’s Handbook (Packt, 2018), Ch.14 “Modernizing build and deployment processes”, pp. 1064-1068.