🔄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.
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
Jenkinsfileallows 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:
</>DOCKERFILE
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:
</>HCL
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:
</>Code
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
| Concept | Best Examples |
|---|---|
| Version Control | Git (with GitHub/GitLab) |
| CI/CD Automation | Jenkins, SonarQube, Selenium |
| Containerization | Docker |
| Container Orchestration | Kubernetes |
| Infrastructure as Code (Provisioning) | Terraform |
| Configuration Management | Ansible, Puppet, Chef |
| Metrics Monitoring | Prometheus, Nagios |
| Log Management | ELK Stack |
| Visualization | Grafana, Kibana |
| Project Management | Jira |
Self-Check Questions
-
Compare and contrast: What's the key architectural difference between Ansible and Puppet? When might you choose one over the other?
-
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?
-
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?
-
Explain the relationship between Docker and Kubernetes. Why do organizations often need both rather than just one?
-
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.