DevOps Overview
What is DevOps?
DevOps is a set of practices that combines software development (Dev) and IT operations (Ops) to shorten the systems development lifecycle and deliver high-quality software continuously. It emphasizes collaboration, automation, measurement, and sharing (CAMS framework).
At its core, DevOps breaks down the silos between development, QA, and operations teams — enabling organizations to build, test, and release software faster and more reliably.
The CAMS Framework
Culture
Shared responsibility, collaboration, and trust between Dev and Ops. Everyone owns the product — from code to production.
Automation
Automate repetitive tasks: builds, tests, deployments, infrastructure provisioning, and configuration management.
Measurement
Measure everything: deployment frequency, lead time, MTTR, change failure rate. Data drives decisions.
Sharing
Share knowledge, tools, processes, and post-mortems across teams. Build a learning culture.
DevOps Lifecycle
Plan
Define features, user stories, and sprint goals
Code
Write, review, and version-control source code
Build
Compile, package, and create artifacts
Test
Unit, integration, security, and performance tests
Release
Approve, package, and prepare for deployment
Deploy
Push to staging and production environments
Operate
Manage infrastructure, scaling, and incidents
Monitor
Observe metrics, logs, traces, and alerts
Key DevOps Metrics (DORA)
The DORA (DevOps Research and Assessment) metrics measure software delivery performance:
Deployment Frequency
How often do you deploy to production? Elite teams deploy multiple times per day. Aim for: on-demand.
Lead Time for Changes
Time from code commit to running in production. Elite teams achieve <1 hour. Aim for: hours, not weeks.
Mean Time to Restore (MTTR)
How long to recover from a production failure. Elite teams recover in <1 hour. Aim for: <1 hour.
Change Failure Rate
Percentage of deployments causing production failures. Elite teams see <5%. Aim for: 0–5%.
DevOps Toolchain
Version Control
- Git — Distributed version control (industry standard)
- GitHub / GitLab / Bitbucket — Hosted Git with CI/CD integration
CI/CD
- GitHub Actions — Native CI/CD for GitHub repositories
- GitLab CI — Built-in CI/CD with powerful pipeline features
- Jenkins — Highly extensible open-source CI/CD server
- ArgoCD — GitOps-based continuous delivery for Kubernetes
- Tekton — Cloud-native Kubernetes-native CI/CD framework
Infrastructure as Code
- Terraform — Declarative IaC for multi-cloud provisioning
- Ansible — Agentless configuration management and automation
- Pulumi — IaC using general-purpose programming languages
Containerization & Orchestration
- Docker — Build and run containerized applications
- Kubernetes — Container orchestration at scale
- Helm — Kubernetes package manager
Monitoring & Observability
- Prometheus — Metrics collection and alerting
- Grafana — Metrics visualization and dashboards
- ELK Stack — Elasticsearch, Logstash, Kibana for log management
- Datadog / New Relic — Full-stack observability SaaS platforms
- Jaeger / Zipkin — Distributed tracing
Security (DevSecOps)
- Trivy / Snyk — Container and dependency vulnerability scanning
- SOPS / Vault — Secrets management
- OPA / Kyverno — Policy enforcement
- SonarQube — Static code analysis and quality gates
GitOps
GitOps is a modern operational framework that takes DevOps best practices for application development and applies them to infrastructure automation. The core principle: Git is the single source of truth.
GitOps Principles
- The entire system is described declaratively in Git
- Git is the single source of truth for desired state
- Approved changes are automatically applied to the system
- Agents ensure correctness and alert on divergence
# GitOps workflow with ArgoCD
# 1. Developer pushes code
git commit -m "feat: add new endpoint"
git push origin main
# 2. CI pipeline builds and pushes image
# GitHub Actions / GitLab CI automatically:
# - Runs tests
# - Builds Docker image
# - Pushes to container registry
# - Updates image tag in Helm values / Kustomize overlay
# 3. ArgoCD detects drift and syncs
# ArgoCD watches the Git repo and applies changes to K8s
# Manual sync
argocd app sync myapp
# Check sync status
argocd app get myapp
Infrastructure as Code (IaC) Principles
- ✅ Declarative — Define desired state, not step-by-step instructions
- ✅ Idempotent — Running the same code multiple times yields the same result
- ✅ Version-controlled — All infrastructure changes tracked in Git
- ✅ Tested — Infrastructure code has automated tests (Terratest, Molecule)
- ✅ Modular — Reusable modules and roles for common patterns
- ✅ Self-documenting — Code and comments explain intent
Next Steps
- CI/CD Pipelines — Build automated pipelines with GitHub Actions and GitLab CI
- Monitoring & Logging — Set up observability with Prometheus, Grafana, and ELK