The release night may have made sense at one point, but in an always-on world striving for shorter cycle times, small batch sizes and limiting work in progress, the release night and the big-bang release cutover have become an anti-pattern that stifles innovation & leads to wider outages, not smaller ones.
The three steps of Progressive Delivery can be used to safely release during business hours, "limiting the blast radius" (time and scope) of unanticipated issues that surface in production:
Decouple deployment from release.
Control code exposure (who new code is "released" to) by targeting a list of users, user attributes or randomized but persistent "buckets"
Observe who has been exposed to new code and watch for the differences in system health and user behavior for the "on" and "off" groups, rather than watching global metrics to determine "how the release is going."
2. Is this the
right way
to release
software?
BarCampManchesterUk - 40 empty pizza boxes
David Graham
https://www.flickr.com/photos/davidistesting/
https://creativecommons.org/licenses/by-nd/2.0/
3. Would you
do this
every day?
BarCampManchesterUk - 40 empty pizza boxes
David Graham
https://www.flickr.com/photos/davidistesting/
https://creativecommons.org/licenses/by-nd/2.0/
4. Would you
do this
every hour?
BarCampManchesterUk - 40 empty pizza boxes
David Graham
https://www.flickr.com/photos/davidistesting/
https://creativecommons.org/licenses/by-nd/2.0/
5. I Don’t Miss Release Nights!
Past Lives: Systems Trainer, Project Manager, Developer, Product Manager
6. Anti-Pattern:
1. Some repeated pattern of action, process or structure that
initially appears to be beneficial, but ultimately produces
more bad consequences than beneficial results.
+
2. A refactored solution exists that is clearly documented,
proven in actual practice and repeatable.
AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis
12. Progressive Delivery
1. Decouple Deploy From Release
2. Expose New Code to a Subset Of Users
3. Observe Impact on System Health & User Behavior
4. Expand or Contract Exposure (Repeat)
26. Tip #1: Do Incremental Feature Development
•Build, Test & Ship Small Pieces
•Keep User-Facing Bits “Latent” Until Ready
•Expose as Needed for Feedback
27. Tip #2: Branch By Abstraction
https://martinfowler.com/bliki/BranchByAbstraction.html
28. Tip #2: Branch By Abstraction
https://martinfowler.com/bliki/BranchByAbstraction.html
29. Tip #2: Branch By Abstraction
https://martinfowler.com/bliki/BranchByAbstraction.html
30. Tip #2: Branch By Abstraction
https://martinfowler.com/bliki/BranchByAbstraction.html
31. Tip #2: Branch By Abstraction
https://martinfowler.com/bliki/BranchByAbstraction.html
41. Wrap Up
1. Progressive Delivery: Decouple, Expose, Observe
2. Always Prioritize Small Batch Size
•Incremental Feature Development
•Branch By Abstraction
3. Decouple Data & Service Migrations Too!
42. The Data is In: You CAN Have a “Day Job” J
https://www.split.io/blog/on-a-mission-to-kill-release-nights/