Team Guides for Software
Foreword
Introduction
- What is software releasability?
- What constitutes a delivery system?
- What does resilient delivery feel like?
- Warning signs of software delivery debt
- Why invest in software releasability?
- Relationship to Continuous Delivery
- What this book is (not) about
- How to use this book
- Feedback and suggestions
1.Treat your pipeline as a product for resiliency and fast feedback loops
- Key Points
- 1.1Make your pipeline the single route to production
- 1.2Your pipeline is now a product: invest in it
- 1.3Avoid simply retro-fitting CD into a CI server
- 1.4Measure delivery to visualize flow and identify bottlenecks
- 1.5Design the delivery system to evolve with your needs
- 1.6Apply monitoring and logging to minimize issues and downtime
- 1.7Scale the infrastructure to avoid pipelines queuing up
- 1.8Scale the practices and pipelines to support growing usage
- 1.9Care for pipeline testability and usability to encourage adoption
- 1.10Build security into and around the pipeline
- 1.11Get started!
- 1.12Summary
2.Regularly restore your delivery system to build resiliency
- Key Points
- 2.1Investing in minimal recovery time pays off in engineering time
- 2.2Store everything in version control
- 2.3Store your pipeline definitions in source control
- 2.4Treat your pipeline as code or configuration?
- 2.5Repeatable Environment Provisioning
- 2.6Rollback without (too much) pain
- 2.7Include the delivery system in disaster recovery scenarios
- 2.8Get started!
- 2.9Summary
3.Ensure delivery system is operable to minimize downtime
- 3.1Visibility and tracing
- Semantic Versioning
4.Ensure both practices and infrastructure can scale to meet usage growth
5.Care for pipeline testability and usability to encourage adoption
6.Measure delivery to visualize flow and identify bottlenecks
- 6.1Plan and monitor build capacity to avoid queues
- 6.2Build latency/throughput (?) / responsiveness
- 6.3Monitor Code Repositories / Forensics
- 6.4Monitor Your Builds and Environments
- 6.5Aligning Agents with Delivery Tasks vs Generic Build Machines (it depends on cost of agent provisioning + running)
- 6.6TODO: reference Steve Smith’s talk/book for further info
7.Treat your pipeline as a value stream to tackle largest bottlenecks first
- Key Points
- 7.1Static (or Nearly) Value Stream Mapping
- 7.2Dynamic Value Stream Mapping (in the Pipeline)
- 7.3Pipeline stages, not environments
- 7.4Single Pipeline, Single Binary
- 7.5visualize (actual) workflow, pipeline = value stream map, identify non-technical bottlenecks, support global optimization instead of local optimization
- 7.6Goal: Short and Wide pipelines, not long and narrow
- 7.7Resources
- 7.8Inclusive Pipelines
- 7.9Choose your tools wisely - the hidden costs of “DevOps solutions” (e.g. Visual Studio)
8.Organize teams to promote build and release ownership
- 8.1CDaaS
- 8.2Clarify Build Team vs Product Team Responsibility (Build, Infra, Deploy)
- 8.3Build Team
- 8.4Knowledge Sharing in Product Teams
- 8.5DVTs for Collaboration Between Product and Ops/Infra Teams
9.Appendix A: build security into and around the pipeline
Terminology
References and further reading
About the authors
- Chris O’Dell
- Manuel Pais
