Definitions
DevOps — integration of software development (Dev) and IT operations (Ops) to shorten systems development lifecycle and provide continuous delivery of software.
In simple words, DevOps is a bridge between code and «healthy run in production» through automation.
1 2 3 4___________Dev____________ / \ code -> build -> test -> release -> deploy -> operate -> monitor \_______________Ops_______________/
CI/CD pipelines:
- Continuous Integration (build, test, merge)
- Continuous Delivery (to repo) and Deployment (to production)
Related terms:
- Software Architecture at Scale (Systems Design)
- DevSecOps — also takes Security into account
Modern evolution of DevOps:
- SRE (Site Reliability Engineering) — reliability, scalability, automation, recovery
- Platform engineering — IDP (Internal Developer Portals), DX, CI/CD architecture, infrastructure abstraction
- Infrastructure engineering — focus on underlying cloud resources (usually AWS and GCP — Amazon and Google)
Software
- GitHub Action, GitLab, Jenkins — CI/CD
- Nix/NixOS — reproducible builds
- TerraForm — IaC (Infrastructure as Code) for cloud infrastructure
- Docker — containerization
- Kubernetes — orchestrator of containers
- Prometheus, Graphana — monitoring, alerting, visualizing data
DORA Metrics
DORA:
- Originally a name of research startup [D]ev[O]ps [R]esearch and [A]ssessment
- Industry then widely adopted DORA metrics that this startup popularized
DORA metrics:
- Deployment Frequency — how often do we ship
- Lead Time to Change — how long from
git committo production - Change Failure Rate — how often do we break production
- MTTR ([M]ean [T]ime [T]o [R]estore service) — how fast we fix when smth breaks