- try to get product on the road as fast as possible
- every delay costs money
- try to identify and eliminate bottlenecks
- KPI: lead time
- establish the Flow of things
- collaboration of Dev & Ops
- DevOps does not (necessarily) mean building up your whole tech stack on bare metal
- provide self-service automation
- DevOps is
- Culture / Collaboration
- Techniques
- Tools
- Infrastructure automation
- or at least well defined (automated) interfaces for Ops services
- Ops knowledge in Dev teams
- high level of automation
- T-Shaped people
- certain Ops knowledge
- identify required skills and possible gaps with skills in team
- tech radar / skill radar
- have cloud native in mind
- 12-factor apps
- have backing services in mind
- Pairing
- avoid knowledge bottlenecks
- everybody in the team knows the codebase
- Rookie + Ninja
- Put EVERYTHING in version control
- make changes transparent
- enable roll backs, even for infrastructure
- code reviews
- knowledge sharing
- enable feedback loop
- keep dev, prod and test as similar as possible
- avoid surprise in production
- get early feedback
- automate everything
- start with documentation
- iterate by letting people do the job who were not involved initially
- refactor and refine documentation
- after manual review, automate it
- Important: identify and reduce unplanned work
- make work visible and transparent
- all tasks on the board
- rotating Ops
- everybody has to do it & learn from Ops
- refine documentation and processe
- do not let Ops tasks destroy your sprint planning
- establish Ops --> Dev feedback loop
- have Ops in mind during development
- identify bottlenecks and root causes and consequently eliminate them
- improve automation
- establish self-services
- discuss requirements with Ops
- Establish and speed up feedback loops
- Pair Programming
- Code Reviews
- Continuous Integration / automated tests
- Continuous Delivery / fast feedback from customers
- Visualize your work (Kanban Board)
- Identify Bottlenecks
- Reduce Handoffs
- Small Batches
- WIP Limits
- MVPs
- 5 Whys
- Actionable metrics (AARRR)
- Build-Measure-Learn --> speedup this cycle
- Pivot or Persevere
- Ticketing system
- define requirements
- define acceptance criteria
- document your work
- Dev workspace - Dev/Test/Prod parity
- Vagrant
- Dev & Prod parity (same OS, same configuration, same packages...)
- Docker
- e.g. for backing services
- e.g. for quickly spinning up database with sample data
- Vagrant
- Version Control
- provide transparent history of changes
- link (JIRA) tickets in commits
- write good user stories explaining what a change was made for
- set up code review workflow
- e.g. feature branches
- no commits to master without review
- establish a team guideline for what has to be checked in a code review
- provide transparent history of changes
- Continuous Integration server
- run automated tests with every commit
- make sure that merged features do not break the tests
- integrate (production-like) integration stages into your test suites
- Configuration management
- keep your configuration in version control
- provide staging for configuration management as well
- Artifact repositories
- build once, ship anywhere
- agree upon a versioning schema
- track versions in stages
- provide proper release notes
- what changes happend in a release
- support troubleshooting for Ops (which change might have caused an incident)
- Deployment Server
- automate deployment (in any stage)
- put your deployment scripts in version control
- PAM (credentials store, vault)
- central management of credentials
- least privilege principle
- Monitoring --> pre-incident (get an alarm BEFORE something goes wrong)
- track all relevant KPIs / metrics
- have reasonable alarms on critical metrics
- introduce new metrics / checks as needed
- Logging --> post incident (data for analyzing what went wrong after an incident)
- centeral log management
- provide all necessary data for easy debugging / analysing
- motivate participation at meetups
- have internal tech forums
- introduce innovation days / hackathons
- embrace (reasonable) introduction of new tools and technologies
- do post mortems
- continuous improvement by retrospectives
- establish feedback loops