Software Delivery Performance - dennisholee/notes GitHub Wiki
- Change lead time
- Deployment frequency
- Mean time to restore (MTTR)
- Change fail percentage https://www.thoughtworks.com/radar/techniques/four-key-metrics
https://www.devops-research.com/quickcheck.html
New work Unplanned work Rework
- Requirements
- Software
Westrum Organization Culture
Pathological | Bureaucratic | Generative |
---|---|---|
Power oriented | Rule oriented | Performance oriented |
Low cooperation | Modest cooperation | High cooperation |
Messengers "shot" | Messengers neglected | Messengers trained |
Responsibilities shirked | Narrow responsibilities | Risks are shared |
Bridging discouraged | Bridging tolerated | Bridging encouraged |
Failure leads to scapegoating | Failure leads to justice | Failure leads to inquiry |
Novelty crushed | Novelty leads to problems | Novelty implemented |
https://cloud.google.com/architecture/devops/devops-culture-westrum-organizational-culture
Architecture
- Make large-scale changes to the design of their systems without the permission of somebody outside the team or depending on other teams.
- Make large-scale changes to the design of their system without depending on other teams to make changes in their systems or creting significant work for other teams.
- Teams are able to complete work without needing fine-grained communication and coordination with people outside the team.
- Teams deploy and release their product or service on demand, independently of the services it depends on or of other services that depend on it.
- Teams do most of their testing on demand, without requiring an integrated test environment.
- Teams can deploy during normal business hours with negligible downtime.
Versioning
Git Flow
One main development branch develop branch
strict access
create feature branches from main branch
- create pull requests
- developers comment on changes
- accept pull release
- merge to main branch
main branch reach maturity for release
- Create separate
release branch
to prepare final version - test and bug fix
- Merge to
master branch
andtag
with release version.
Suitable
- Open source project
- Mostly junior developers
- Established product or large development team
Not Suitable
- Just starting out
- Iterate quickly
- Mostly senior developers
Trunk-based Development Workflow
- Single branch
master
development model - Developer has open access
- Sometimes create short-lived feature branches
- Mitigates merge conflicts
- Requires full source code review
- Needs enforceable coding style
Suitable:
- Just starting out
- Iterate quickly
- Mostly senior developers
Not Suitable
- Open source project
- Mostly junior developers
- Established product or large development team