- 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
In the e-commerce sphere, the speed and stability of applications are the decisive factors for success for us. We managed to significantly improve the quality and speed of releases thanks to competent automation of processes. devops services from Artjoker company artjoker.net, a team of guys who understand business tasks and technologies very well, helped us especially. This approach allowed us to make developments more transparent and reliable.