Infrastructure & Integrations
CI/CD and release engineering: one path for every change, and a way back
The path every change takes
01
Built
From the code's history, by a machine
Never from someone's laptop, so what's tested is exactly what's released.
02
Tested
Automatically, on every change
The rules that matter most, checked before anyone looks at it.
03
Previewed
Its own address, sample data
Anyone can try the change on their own phone before it reaches customers.
04
Reviewed
By a person
Another developer reads the code; the person who asked for the change tries the preview.
05
Database changes made safe
The old version keeps working
Changes are made in steps both versions can live with, so switching back never breaks the data.
06
Released, watched, undoable
The last good release kept ready
Errors are watched after each release, and switching back takes a minute.
What's checked before release
Three changes, one path
Fix a typo on the plans page
- done
Built and tested
4 minutes
- done
Preview
office manager checks the wording
- not needed
Database change
- done
Released
same afternoon
Twenty minutes start to finish, through the same checks as everything else.
Split the customer's name into first and last
- done
Release 1
adds the new fields; both versions still work
- done
Existing customers
names copied into the new fields, checked
- done
Release 2
the app uses the new fields
- done
Release 3
the old field removed, a week later
Three small releases instead of one risky one; any of them could be switched back.
Booking form broken for one browser
- done
Switched back
to the last good release, in a minute
- done
Fix built and tested
with a new test for that browser
- done
Preview
checked on that browser
- done
Released
the same path, just quicker
Urgent didn't mean skipping the checks. Switching back bought the time to do it properly.
Released by hand, or by pipeline
Released by hand
- 01Steps followed from memory
- 02Tested if there's time
- 03Database changed directly
- 04Undoing it is another late night
Releases get rarer and bigger, so each one is riskier.
Released by pipeline
- 01The same stages for every change
- 02Tests and checks on every change
- 03Database changes the old version can live with
- 04Switched back in a minute
Releases get smaller and more frequent, so each one is safer.
What the pipeline connects
In
Out
Worth setting up from the first release
Good fit
- Releases are rare, late and nerve-racking.
- Something broke last time and took hours to undo.
- More than one person changes the software.
Not the right fit
- A site built and edited in a website builder. The builder handles releases.
- A throwaway prototype. Though the first real version should start with a pipeline.
Questions about CI/CD and release engineering
What does CI/CD stand for?
Continuous integration and continuous delivery. In plain terms: every change is built and tested automatically, and can be released at any time through the same steps.
How often should we release?
As often as there's something worth releasing. Small, frequent releases are easier to check and easier to undo than big ones.
Can we approve releases ourselves?
Yes. The preview review can be anyone you choose, like the office manager for changes to booking. Nothing reaches production until they approve it.
What if switching back isn't possible?
Occasionally a change can't simply be undone, like a message already sent to customers. Those changes are planned in smaller steps, released at a quiet time and watched closely.