3 min read

DevOps

DevOps is a set of practices that combines software development (Dev) and IT operations (Ops). It aims to shorten the systems development life cycle and provide continuous delivery with high software quality.

1. The Core Philosophy

DevOps is not just about tools; it is a cultural shift. It breaks down the "silos" between development and operations teams.

  • Traditional: Developers write code and "throw it over the wall" to Operations to deploy and manage. If it breaks, it's Ops' problem.
  • DevOps: "You build it, you run it." The team that writes the code is responsible for its deployment and maintenance in production.

2. The CAMS Model

A common acronym to describe the pillars of DevOps:

  • Culture: Collaboration, communication, and shared responsibility.
  • Automation: Automating repetitive tasks (testing, deployment, infrastructure provisioning) to reduce human error and increase speed.
  • Measurement: Using data (metrics, logs) to make decisions and improve performance.
  • Sharing: Sharing knowledge, tools, and success/failure stories across the organization.

3. The DevOps Lifecycle

The lifecycle is often visualized as an infinite loop:

  1. Plan: Define requirements and tasks.
  2. Code: Write software.
  3. Build: Compile and package the software.
  4. Test: Automated testing (Unit, Integration, etc.).
  5. Release: Prepare artifacts for deployment.
  6. Deploy: Push to production environments.
  7. Operate: Manage and maintain the running system.
  8. Monitor: Track performance and user feedback (Observability).

4. Key Practices

  • Continuous Integration / Continuous Deployment (CI/CD): Automating the path from code commit to production.
  • Infrastructure as Code (IaC): Managing infrastructure (servers, networks) using code and version control (e.g., Terraform, Ansible).
  • Microservices: Building applications as a collection of small, independent services.
  • Monitoring & Logging: Real-time visibility into system health.

5. Benefits

  • Speed: Faster time to market.
  • Reliability: Automated testing and smaller changes reduce failure rates.
  • Scale: Managing complex infrastructure at scale becomes easier with automation.
  • Security: Integrating security early in the lifecycle (DevSecOps).

6. DevSecOps

DevSecOps stands for Development, Security, and Operations. It integrates security practices into the DevOps process.

  • Shift Left Security: Instead of checking for security vulnerabilities at the very end (just before release), security checks are automated and run early in the pipeline (during coding and building).
  • Automated Security Testing:
    • SAST (Static Application Security Testing): Scanning source code for vulnerabilities.
    • DAST (Dynamic Application Security Testing): Scanning running applications for vulnerabilities.
    • Dependency Scanning: Checking for known vulnerabilities in third-party libraries.

7. Site Reliability Engineering (SRE)

SRE is a discipline that incorporates aspects of software engineering and applies them to infrastructure and operations problems.

  • DevOps vs. SRE: DevOps is the philosophy ("Break down silos"), while SRE is a prescriptive way of achieving that philosophy ("Here is how we measure reliability").
  • Error Budgets: The concept that 100% reliability is not the goal. If your SLO is 99.9%, you have an "error budget" of 0.1%. As long as you are within budget, you can ship features fast. If you exhaust it, you freeze releases and fix stability.
  • Toil Reduction: SREs aim to automate manual, repetitive, tactical work (toil) so they can focus on engineering long-term solutions.

programming/ci-cd-pipelines programming/docker-and-containers programming/microservices-architecture programming/observability-vs-monitoring programming/software-development-life-cycle