upgrade
upgrade

🔄DevOps and Continuous Integration

Essential DevOps Tools

Study smarter with Fiveable

Get study guides, practice questions, and cheatsheets for all your subjects. Join 500,000+ students with a 96% pass rate.

Get Started

Why This Matters

DevOps isn't just a buzzword—it's the backbone of modern software delivery, and you're being tested on understanding how these tools work together to create automated, reliable pipelines. The tools in this guide represent the core categories you'll encounter: version control, CI/CD automation, containerization, orchestration, infrastructure as code, monitoring, and configuration management. Knowing which tool solves which problem—and why—is what separates surface-level memorization from real comprehension.

Don't just memorize tool names and features. Focus on understanding what problem each tool solves, where it fits in the DevOps pipeline, and how tools in the same category compare. When you see an exam question about automating infrastructure or ensuring deployment consistency, you should immediately know which tools apply and why one might be chosen over another.


Version Control: The Foundation of Collaboration

Every DevOps pipeline starts here. Version control systems track code changes, enable parallel development, and provide the audit trail that makes CI/CD possible.

Git

  • Distributed architecture—every developer has a complete repository copy, enabling offline work and reducing single points of failure
  • Branching and merging allow teams to develop features in isolation, then integrate changes through pull requests for code review
  • Integration with CI/CD triggers automated builds and tests when code is pushed to platforms like GitHub or GitLab

CI/CD Automation: The Pipeline Engine

These tools transform code commits into deployed applications. Continuous Integration catches bugs early by building and testing every change; Continuous Delivery ensures code is always deployable.

Jenkins

  • Open-source automation server—the most widely adopted CI/CD tool, offering complete pipeline customization
  • Plugin ecosystem with 1,800+ integrations connects Jenkins to virtually any tool in your DevOps stack
  • Pipeline as code using Jenkinsfile allows version-controlled, reproducible build definitions

SonarQube

  • Static code analysis—scans source code for bugs, security vulnerabilities, and code smells before deployment
  • Quality gates can block builds that don't meet defined standards, enforcing code quality automatically
  • Technical debt tracking quantifies maintenance burden, helping teams prioritize refactoring efforts

Selenium

  • Browser automation framework—enables end-to-end testing of web applications across multiple browsers
  • Cross-platform support for Chrome, Firefox, Safari, and Edge using a single test codebase
  • Integration with CI pipelines allows automated regression testing on every code change

Compare: Jenkins vs. SonarQube—both integrate into CI/CD pipelines, but Jenkins orchestrates the pipeline while SonarQube analyzes code quality within it. An FRQ might ask how these tools work together: Jenkins triggers SonarQube scans as a pipeline stage.


Containerization: Consistent Environments Everywhere

Containers solve the "works on my machine" problem. By packaging applications with their dependencies, containers ensure identical behavior from development through production.

Docker

  • Container runtime—packages applications and dependencies into lightweight, portable images
  • Dockerfile defines build instructions as code, enabling reproducible image creation:
    FROM node:18
    COPY . /app
    RUN npm install
    
  • Microservices enablement allows applications to be decomposed into independently deployable services

Kubernetes

  • Container orchestration—automates deployment, scaling, and management of containerized applications across clusters
  • Self-healing capabilities automatically restart failed containers, replace nodes, and reschedule workloads
  • Declarative configuration using YAML manifests defines desired state; Kubernetes maintains it automatically

Compare: Docker vs. Kubernetes—Docker creates and runs containers on a single host, while Kubernetes orchestrates containers across multiple hosts. You need Docker (or an alternative runtime) to build containers; you need Kubernetes to manage them at scale.


Infrastructure as Code: Programmable Infrastructure

IaC treats infrastructure like software—versioned, tested, and reproducible. Instead of manual server configuration, you define infrastructure in code files that can be reviewed and rolled back.

Terraform

  • Declarative IaC—define what infrastructure you want, and Terraform figures out how to create it
  • Multi-cloud support manages AWS, Azure, GCP, and 100+ providers with consistent syntax:
    resource "aws_instance" "web" {
      ami           = "ami-0c55b159cbfafe1f0"
      instance_type = "t2.micro"
    }
    
  • State management tracks existing infrastructure, enabling incremental changes and drift detection

Ansible

  • Agentless automation—connects via SSH to manage systems without installing additional software
  • YAML playbooks define tasks in human-readable format, lowering the barrier to entry
  • Idempotent operations ensure running the same playbook twice produces the same result

Puppet

  • Agent-based configuration management—agents on managed nodes pull configurations from a central server
  • Declarative DSL defines desired system state; Puppet enforces it continuously
  • Enterprise scalability handles thousands of nodes with reporting and compliance features

Chef

  • Ruby-based DSL—"recipes" and "cookbooks" define configurations with full programming language flexibility
  • Test-driven infrastructure with tools like ChefSpec and InSpec for validation
  • Pull-based architecture where nodes check in with the Chef server for configuration updates

Compare: Ansible vs. Puppet vs. Chef—all three manage configuration, but Ansible is agentless (simpler setup), while Puppet and Chef use agents (better for continuous enforcement). Ansible uses YAML; Chef uses Ruby; Puppet uses its own DSL. Choose based on team skills and scale requirements.

Compare: Terraform vs. Ansible—Terraform excels at provisioning infrastructure (creating servers, networks), while Ansible excels at configuring what's on those servers. Many teams use both: Terraform creates the VM, Ansible installs the software.


Monitoring and Observability: Knowing What's Happening

You can't fix what you can't see. Monitoring tools collect metrics, logs, and traces to provide visibility into system health and performance.

Prometheus

  • Pull-based metrics collection—scrapes targets at configured intervals, storing time-series data
  • PromQL query language enables powerful analysis:
    rate(http_requests_total{status="500"}[5m])
    
  • Alertmanager integration routes alerts based on severity and handles notification deduplication

Grafana

  • Visualization platform—creates dashboards from multiple data sources including Prometheus, Elasticsearch, and databases
  • Alerting capabilities trigger notifications when metrics cross defined thresholds
  • Dashboard as code allows version-controlled dashboard definitions in JSON

Nagios

  • Infrastructure monitoring—monitors servers, networks, and services with plugin-based architecture
  • Active checks probe services at intervals; passive checks receive data pushed from monitored systems
  • Legacy but proven—widely deployed, though newer tools offer more modern interfaces

ELK Stack (Elasticsearch, Logstash, Kibana)

  • Centralized logging—aggregates logs from all systems into a searchable, analyzable platform
  • Elasticsearch provides distributed search; Logstash ingests and transforms data; Kibana visualizes results
  • Log correlation enables tracing requests across microservices for debugging distributed systems

Compare: Prometheus vs. Nagios—both monitor infrastructure, but Prometheus uses a pull model with time-series data optimized for dynamic cloud environments, while Nagios uses traditional active/passive checks better suited for static infrastructure. Prometheus pairs naturally with Kubernetes; Nagios is common in traditional data centers.

Compare: Prometheus + Grafana vs. ELK Stack—Prometheus/Grafana handles metrics (numeric measurements over time), while ELK handles logs (text-based event records). Most production systems need both: metrics tell you something is wrong; logs tell you why.


Project Management: Coordinating the Work

DevOps isn't just tools—it's people working together. Agile project management tools track work, facilitate communication, and provide visibility into progress.

Jira

  • Agile project tracking—supports Scrum sprints, Kanban boards, and hybrid workflows
  • Issue linking connects bugs to code commits, pull requests, and deployments for full traceability
  • DevOps integrations with Bitbucket, GitHub, Jenkins, and others create automated workflow triggers

Quick Reference Table

ConceptBest Examples
Version ControlGit (with GitHub/GitLab)
CI/CD AutomationJenkins, SonarQube, Selenium
ContainerizationDocker
Container OrchestrationKubernetes
Infrastructure as Code (Provisioning)Terraform
Configuration ManagementAnsible, Puppet, Chef
Metrics MonitoringPrometheus, Nagios
Log ManagementELK Stack
VisualizationGrafana, Kibana
Project ManagementJira

Self-Check Questions

  1. Compare and contrast: What's the key architectural difference between Ansible and Puppet? When might you choose one over the other?

  2. A team needs to ensure their web application works correctly across Chrome, Firefox, and Safari after every code commit. Which two tools would you combine, and what role does each play?

  3. You're troubleshooting a production outage. Prometheus shows increased error rates, but you need to see the actual error messages. Which tool in this guide would you use next, and why?

  4. Explain the relationship between Docker and Kubernetes. Why do organizations often need both rather than just one?

  5. FRQ-style: A startup is moving from manual server setup to infrastructure as code. They need to provision AWS resources and install application dependencies. Recommend two tools from this guide and explain how they would work together in the deployment pipeline.