01: DevOps Fundamentals

Definition

DevOps = Development + Operations, a philosophy and set of practices that bridges developers (who build features) and operations (who run systems), aiming to:

  • Faster, reliable software delivery
  • Shared responsibility for quality
  • Continuous improvement through automation

Core DevOps Principles

1. Culture: Breaking Down Silos

DevOps isn't just tools—it's a mindset. Historically:

Traditional Setup:
  Developers → "It works on my machine"
                    ↓
              [Throw it over the wall]
                    ↓
              Operations → "I don't know what to run"
                    ↓
              ❌ Blame, slow releases, firefighting

DevOps approach:

DevOps Mindset:
  Developers ↔ Operations
       ↓
  Shared goals: Fast, reliable, secure releases
       ↓
  Shared tools, shared dashboards, shared on-call
       ↓
  ✅ Collaboration, automation, continuous improvement

2. Key Principles (CALMS)

Principle Meaning Example
Culture Shared responsibility, collaboration Dev + Ops work together, no blame
Automation Remove manual, repetitive work CI/CD pipelines, infrastructure as code
Lean Eliminate waste, focus on value Small batches, fast feedback
Measurement Data-driven decisions Metrics, dashboards, alerting
Sharing Transparency, knowledge sharing Runbooks, documentation, postmortems

The DevOps Value Stream

graph LR A["Developer
Writes Code"] -->|Git Commit| B["CI Pipeline
Build + Test"] B -->|Tests Pass| C["Build Artifact
Docker Image"] C -->|Approved| D["Deploy to
Staging"] D -->|Smoke Tests| E["Deploy to
Production"] E -->|Running| F["Monitor &
Alert"] F -->|Issue Found| G["Incident
Response"] G -->|Fix Deployed| A style A fill:#e3f2fd style B fill:#f3e5f5 style C fill:#fff3e0 style D fill:#e8f5e9 style E fill:#fce4ec style F fill:#e0f2f1 style G fill:#ffe0b2

The goal: Reduce the time from idea → production while keeping quality high.

Key DevOps Practices

1. Infrastructure as Code (IaC)

Instead of clicking buttons in AWS/GCP, write code that describes infrastructure:

# Terraform example
resource "kubernetes" "cluster" {
  name       = "production"
  nodes      = 5
  cpu        = 4
  memory     = 8
}

Benefits:

  • ✅ Version controlled (Git history)
  • ✅ Reproducible (same every time)
  • ✅ Testable (validate before apply)
  • ✅ Documentable (code is documentation)

2. Continuous Integration (CI)

Definition: Every code commit is automatically:

  1. Built
  2. Tested
  3. Analyzed for quality
  4. Packaged (as a Docker image)
Developer pushes code
       ↓
Webhook triggers CI pipeline
       ↓
Compile, run tests, static analysis
       ↓
If all pass: build Docker image
       ↓
If any fail: alert developer

Benefits:

  • 🔍 Catch bugs early
  • 📊 Consistent build quality
  • ✅ Automated quality gates
  • 🚀 Always-ready artifacts

3. Continuous Delivery / Deployment (CD)

Continuous Delivery: Ready-to-deploy artifacts (can be manual approval)

Continuous Deployment: Automatically deploy to production (no manual approval)

CI Pipeline (Continuous Integration)
     ↓
Artifact Ready (Docker image)
     ↓
Deploy to Staging (Continuous Delivery)
     ↓ [Optional: Manual Approval]
     ↓
Deploy to Production (Continuous Deployment)

4. Monitoring & Observability

What to measure:

  • Metrics: CPU, memory, request latency, error rate
  • Logs: Application and system events
  • Traces: Request path through microservices
  • Alerts: Trigger actions when thresholds exceeded
Production Application
     ↓
Prometheus (collects metrics)
     ↓
Grafana (visualizes dashboards)
     ↓
AlertManager (triggers alerts)
     ↓
Slack/PagerDuty (notifies team)

5. Incident Response & Postmortems

When things break:

  1. Alert → Team gets notified
  2. Respond → Mitigate impact immediately
  3. Investigate → Find root cause
  4. Postmortem → Learn and improve
  5. Automate → Prevent recurrence

DevOps Tools Landscape

No tool is "DevOps"—the mindset is DevOps. Tools are enablers.

CI/CD Orchestration

  • Jenkins (on-premises)
  • GitHub Actions (GitHub-native)
  • GitLab CI (GitLab-native)
  • Gitea (self-hosted)

Container & Orchestration

  • Docker (containerization)
  • Kubernetes (K8s orchestration)
  • Minikube / kind (local K8s)

Infrastructure as Code

  • Terraform (cloud-agnostic)
  • CloudFormation (AWS-specific)
  • Ansible (configuration management)

Package Management

  • Helm (Kubernetes packages)
  • Apt/Yum (Linux packages)

GitOps (Configuration Automation)

  • Flux CD
  • ArgoCD
  • Spinnaker

Observability

  • Prometheus (metrics)
  • Grafana (dashboards)
  • Loki (logs)
  • Jaeger (tracing)
  • ELK Stack (Elasticsearch, Logstash, Kibana)

The Three Ways of DevOps

The First Way: Flow

Maximize flow from development to production. Work in small batches, optimize for speed.

Example: Pull requests → automated testing → automated deployment

The Second Way: Feedback

Amplify and shorten feedback loops so problems are caught early.

Example: Monitoring → alerts → dashboards → postmortems

The Third Way: Experimentation

Encourage risk-taking, learning, and continuous improvement.

Example: Blameless postmortems, chaos engineering, feature flags


Common DevOps Roles

Role Focus Example Tasks
Platform Engineer Build tools & infrastructure Terraform, Kubernetes, CI/CD pipelines
DevOps Engineer Ops + development Monitoring, automation, incident response
SRE (Site Reliability Engineer) Reliability & performance Monitoring, capacity planning, postmortems
Cloud Engineer Cloud infrastructure AWS/GCP/Azure, IAM, security

Why DevOps Matters (Business Value)

Speed

  • ⚡ Before: 6-month releases, weeks to deploy a fix
  • ⚡ After: Daily/hourly releases, minutes to fix

Reliability

  • 🛡️ Before: 10 nines of uptime (frequent outages)
  • 🛡️ After: Production deployments with 99.99%+ uptime

Cost

  • 💰 Before: Over-provisioned servers, waste
  • 💰 After: Auto-scaling, only pay for what you use

Morale

  • 😊 Before: Developers blame ops, ops blame developers
  • 😊 After: Shared ownership, shared success

Anti-Patterns to Avoid

Tool-Centric DevOps

"We bought Jenkins, so we're DevOps!"

Fix: Focus on culture and practices first, tools second

DevOps Team Silos

Hiring a "DevOps team" but keeping them separate from developers

Fix: Embed DevOps engineers with product teams

No Monitoring

"If nobody's checking, there's no problem"

Fix: Instrument everything, set up meaningful alerts

Blame Culture

Blaming individuals when things break

Fix: Blameless postmortems, focus on systems improvement

Manual Runbooks

"Here's 50 manual steps to deploy"

Fix: Automate repetitive tasks


Interview Questions

Q: What's the difference between DevOps and SRE?

  • DevOps is a culture/practice of shared responsibility
  • SRE (Site Reliability Engineering) is a specific job role that operationalizes DevOps with focus on reliability metrics (SLOs, error budgets)

Q: Why is immutable infrastructure important?

  • Immutable = once deployed, never changed (always redeploy)
  • Benefits: Consistent state, easier rollbacks, less drift

Q: What's the difference between CI and CD?

  • CI (Continuous Integration) = build + test every commit
  • CD (Continuous Delivery) = always ready to deploy (manual approval possible)
  • CD (Continuous Deployment) = automatically deployed to production

Key Takeaways

DevOps is a mindset, not a tool or job title
Automation breaks down silos between dev and ops
Measure everything — you can't improve what you don't measure
Blameless postmortems lead to system improvements
Small batches and fast feedback reduce risk
Infrastructure as code makes systems reproducible and testable


Next Steps


References

  • The Phoenix Project (Book) — Explains DevOps narrative
  • DevOps Handbook — Practical guide to implementing DevOps
  • https://devops.com/ — DevOps news and resources