DevOps & CI/CD Fundamentals

Chapter 1
DevOps Foundations and Evolution

Certificate in Cloud Computing
DevOps & CI/CD Fundamentals   •   Certificate

DevOps Foundations and Evolution

Introduction

Software organizations once treated software development and IT operations as separate functions. Developers were rewarded for delivering new features, while operations teams were responsible for stability, availability, security, and support. This separation often produced delays, conflicting priorities, manual handoffs, and a “works on my machine” mentality. DevOps emerged as a response to these problems.

DevOps is not simply a toolset, job title, or automation project. It is an organizational and technical approach that combines collaborative culture, product-oriented ownership, automation, measurement, and continuous learning to improve the flow of value from an idea to a reliable service used by customers. DevOps connects development, operations, quality engineering, security, and business stakeholders across the software lifecycle.

For cloud computing professionals, DevOps is especially important because cloud platforms provide programmable infrastructure, elastic resources, managed services, observability tools, and APIs. These capabilities make rapid and repeatable delivery possible, but they also increase the need for disciplined automation, governance, security, and cost control.

Learning Objectives

By the end of this chapter, you should be able to:

  • explain the origins and evolution of DevOps;
  • distinguish DevOps from Agile, continuous integration, continuous delivery, and continuous deployment;
  • describe the DevOps lifecycle and the responsibilities of its major disciplines;
  • explain the business value and limitations of DevOps;
  • relate DevOps to digital transformation and cloud computing;
  • identify the roles of development, operations, security, quality, and business teams;
  • recognize important DevOps metrics, governance concerns, and implementation practices.

1. The Origins of DevOps

1.1 From sequential delivery to iterative development

Traditional software projects frequently used a sequential or “waterfall” model. Requirements were documented first, followed by design, coding, testing, deployment, and maintenance. This model can be appropriate when requirements are stable and change is costly, but it often performs poorly in uncertain markets. Users may not see working software until late in the project, when correcting misunderstandings is expensive.

Agile methods emerged partly in response to this problem. Agile emphasizes short iterations, working software, customer collaboration, and responsiveness to change. Scrum, Extreme Programming, and Kanban are examples of approaches associated with Agile delivery. Agile improved the work of development teams, but many organizations continued to release software through slow, manual, operations-controlled processes. As a result, development could produce software faster than the organization could safely deploy and operate it.

1.2 The development–operations divide

The development and operations divide was reinforced by different goals and measurements. Development often focused on features and release deadlines. Operations focused on uptime, reliability, capacity, incident response, and minimizing change-related risk. A change that appeared successful to development could create instability in production.

Common symptoms included:

  • large batches of changes released infrequently;
  • manual environment configuration;
  • long approval chains and handoffs;
  • late discovery of defects;
  • weak visibility into production behavior;
  • blame during incidents;
  • limited feedback from users and operations to developers.

The problem was systemic rather than the fault of one professional group. A system that rewards local optimization can produce poor organizational results. DevOps addresses this by treating delivery and operation as a connected value stream.

1.3 Emergence of the DevOps movement

The term DevOps became prominent around 2009, influenced by discussions about Agile infrastructure, operations collaboration, and “development and operations” events. Early DevOps practitioners drew on several existing ideas: Agile software development, Lean thinking, systems administration, infrastructure automation, continuous integration, and reliability engineering.

The DevOps movement did not create all these practices from nothing. Its contribution was to connect them into a coherent operating model. The central question changed from “Which team is responsible for this stage?” to “How can the organization deliver and operate valuable software safely and repeatedly?”

2. What DevOps Means

A useful definition is:

DevOps is a set of cultural, organizational, and technical practices that enables development and operations to collaborate continuously in order to deliver, secure, operate, and improve software systems.

This definition has several implications.

DevOps is cultural. Teams need trust, shared responsibility, open communication, and a willingness to learn from failure.

DevOps is organizational. Team boundaries, ownership models, incentives, and decision rights influence delivery performance.

DevOps is technical. Automation, version control, testing, deployment pipelines, infrastructure as code, monitoring, and incident tooling make the desired behaviors practical.

DevOps is continuous. Delivery is not a one-time project event. Teams continuously plan, build, test, release, observe, and improve.

DevOps does not mean that every developer must become an expert system administrator or that operations concerns disappear. It means that responsibilities and feedback are integrated appropriately. Specialists remain valuable, but their expertise is applied earlier and more collaboratively.

3. Important Terminology

TermMeaning
AgileAn approach to software delivery emphasizing iteration, collaboration, working software, and responsiveness to change.
Continuous integration (CI)The frequent integration of code into a shared repository, accompanied by automated build and test activities.
Continuous deliveryKeeping software in a releasable state through automation, testing, and controlled release processes.
Continuous deploymentAutomatically releasing validated changes to production, subject to defined safeguards.
PipelineAn automated sequence of activities such as build, test, security analysis, packaging, and deployment.
Infrastructure as code (IaC)Defining infrastructure in version-controlled, machine-readable configuration.
Configuration driftThe divergence of an environment from its intended, recorded configuration.
ObservabilityThe ability to understand internal system behavior from externally available outputs such as logs, metrics, and traces.
TelemetryData collected about system behavior, including logs, metrics, traces, and events.
ReliabilityThe ability of a system to perform its required function consistently over time and conditions.
Site reliability engineering (SRE)An engineering discipline applying software and automation practices to operations and reliability.
Shift leftMoving testing, security, and quality activities earlier in the lifecycle.
Shift rightLearning from and validating software behavior in staging or production through monitoring, experimentation, and feedback.
Immutable infrastructureInfrastructure replaced rather than manually modified after deployment.
Service-level objective (SLO)A target for a service characteristic, such as availability or latency.
Error budgetThe acceptable amount of unreliability implied by an SLO, used to balance delivery speed and stability.
Mean time to restore (MTTR)The average time required to restore service after an incident.
Mean time to changeThe average time from an authorized change beginning to its successful operation.
DevSecOpsIntegrating security practices, controls, and responsibility throughout DevOps activities.
Platform engineeringBuilding internal platforms and reusable capabilities that enable delivery teams to work safely and efficiently.

4. The DevOps Lifecycle

The DevOps lifecycle is often represented as a loop rather than a straight line. A common sequence is plan, code, build, test, release, deploy, operate, and monitor. Feedback from monitoring, users, incidents, and business results returns to planning.

Plan

Planning translates customer, regulatory, and business needs into prioritized work. DevOps planning also considers operational requirements such as availability, recoverability, security, performance, and cost. Small, valuable increments reduce risk and enable feedback.

Code

Code includes application source code, tests, configuration, infrastructure definitions, policies, and documentation. Version control provides history, collaboration, review, rollback, and traceability. A strong practice is to treat operational configuration as code wherever practical.

Build

The build process converts source materials into deployable artifacts. It may compile code, resolve dependencies, package applications, generate container images, and record metadata. Reproducible builds are important: the same source and declared dependencies should produce a predictable artifact.

Test

Testing includes unit, integration, system, performance, usability, resilience, compliance, and security testing. Automation provides rapid feedback, but automated tests do not eliminate the need for exploratory testing and professional judgment.

Release

Release management determines whether a version is authorized and ready for deployment. It may include approvals, change records, risk assessment, release notes, evidence of testing, and rollback planning. Modern DevOps seeks risk-based controls rather than unnecessary bureaucracy.

Deploy

Deployment places a release into an environment. Strategies include rolling deployment, blue-green deployment, canary release, and feature flags. The appropriate strategy depends on risk, architecture, traffic patterns, and rollback capability.

Operate

Operations includes capacity management, reliability, backup and recovery, patching, incident response, problem management, and cost management. Cloud services can simplify infrastructure operations but do not remove operational responsibility.

Monitor and learn

Monitoring collects signals about system health and user experience. Logs describe events, metrics measure values over time, and traces show request paths across distributed services. Monitoring must lead to action; collecting data without clear decisions creates noise.

5. Collaboration Across Disciplines

Development

Developers design and implement application behavior. In a DevOps environment, they also consider deployment, observability, failure modes, security, and maintainability. Ownership may extend beyond writing code to understanding how the service behaves in production.

Operations

Operations professionals provide expertise in infrastructure, networks, platforms, availability, capacity, recovery, and incident management. They help create safe deployment mechanisms and reliable runtime environments. Their role evolves from manual administration toward engineering, automation, and platform enablement.

Quality engineering

Quality is not merely a final testing gate. Quality engineers help define acceptance criteria, design test strategies, automate appropriate tests, investigate defects, and promote prevention. Quality includes functional correctness, performance, accessibility, usability, security, and resilience.

Security

Security teams address identity, access control, vulnerability management, data protection, threat modeling, secure development, compliance, and incident response. DevSecOps integrates these activities into planning, coding, building, testing, deployment, and operations rather than treating security as a late inspection.

Product and business stakeholders

Business stakeholders define value, priorities, constraints, and acceptable risk. DevOps is successful only when technical speed produces useful outcomes. Releasing more frequently is not valuable if the releases do not solve meaningful problems or create unacceptable risk.

Shared ownership

Shared ownership does not mean undefined ownership. Each service should have clear accountable owners, escalation paths, documentation, and decision rights. Collaboration works best when responsibilities are explicit and interfaces are automated or well defined.

6. DevOps and Related Practices

DevOps and Agile

Agile primarily addresses how teams plan and develop software under changing requirements. DevOps extends the concern across delivery and operation. Agile iteration without deployment and operational feedback can produce frequent development increments that still accumulate in a release queue.

Continuous integration

In CI, developers integrate changes frequently into a shared mainline. A CI process should provide fast feedback through compilation, automated tests, static analysis, and policy checks. CI reduces integration risk but does not automatically imply production deployment.

Continuous delivery and deployment

Continuous delivery means the system is maintained in a condition in which a validated change can be released on demand. A human decision may still authorize production release. Continuous deployment goes further by automatically releasing changes that pass defined controls. Continuous deployment is not inherently superior; regulated or high-risk systems may require additional approval or staged release.

SRE

SRE shares DevOps goals but places particular emphasis on reliability, service-level indicators, SLOs, error budgets, and operational engineering. It provides a useful model for balancing innovation with service stability.

7. Business Value of DevOps

DevOps can create value in several ways:

  • Faster delivery: Smaller changes and automation reduce waiting and handoffs.
  • Improved quality: Frequent testing and feedback find defects earlier.
  • Higher reliability: Standardized deployment, observability, and recovery reduce operational uncertainty.
  • Reduced risk: Small, reversible changes are generally easier to assess and recover than large releases.
  • Better customer experience: Teams receive evidence about real user behavior and can respond more quickly.
  • Improved employee experience: Automation reduces repetitive work and clarifies ownership.
  • Operational efficiency: Reusable platforms and infrastructure automation reduce duplicated effort.

These benefits are not automatic. Automation can accelerate a bad process, and frequent deployment can increase risk if testing, monitoring, and rollback are weak. DevOps should therefore be evaluated through outcomes, not tool adoption alone.

Useful metrics include deployment frequency, lead time for changes, change failure rate, and time to restore service. Metrics should be interpreted together. For example, high deployment frequency with a high change failure rate may indicate speed without sufficient quality. Metrics should improve systems rather than encourage gaming or blame.

8. DevOps, Cloud Computing, and Digital Transformation

Digital transformation is the organizational use of digital technologies and data to change products, processes, customer experiences, and business models. DevOps supports transformation by making software change more frequent, observable, and dependable.

Cloud computing provides several enabling capabilities:

  • on-demand infrastructure and managed services;
  • programmable resources exposed through APIs;
  • elastic scaling;
  • centralized identity and policy controls;
  • integrated monitoring and logging;
  • geographically distributed deployment;
  • consumption-based pricing.

Infrastructure as code allows environments to be created consistently and reviewed like software. Containers can package applications and dependencies, while orchestration platforms can automate scheduling and service management. However, cloud adoption alone is not DevOps. An organization may move manually managed virtual machines to the cloud and retain the same slow processes.

Cloud introduces responsibilities that must be managed deliberately. Teams must control access, protect data, understand shared-responsibility boundaries, monitor consumption, design for failure, and manage dependencies on providers. DevOps practices help make these responsibilities visible and repeatable.

9. A Practical DevOps Operating Model

A beginner-friendly implementation sequence is:

  1. Identify a valuable service. Select a product or service with a clear customer and accountable team.
  2. Map the value stream. Record steps from approved change to production and measure waiting time, rework, and handoffs.
  3. Establish version control. Store application code, tests, configuration, and infrastructure definitions in controlled repositories.
  4. Create a basic CI pipeline. Build automatically and run fast tests on every proposed change.
  5. Automate environment creation. Use IaC and standardized images or templates.
  6. Add security and quality checks. Scan dependencies, secrets, source code, and artifacts; define quality gates.
  7. Automate deployment. Begin with a non-production environment, then use progressive and reversible production strategies.
  8. Implement observability. Define important service indicators and connect alerts to responsible teams.
  9. Improve continuously. Review incidents without blame, remove bottlenecks, and use evidence to prioritize improvement.

A pipeline should be designed as a control system, not merely a sequence of commands. It should provide traceability from requirement to code, artifact, deployment, and observed result.

10. Ethical, Security, and Governance Considerations

DevOps increases the speed at which organizations can change systems. This creates ethical and governance responsibilities.

Data protection: Pipelines and logs may contain personal, confidential, or regulated information. Data minimization, encryption, retention controls, and access restrictions are essential.

Least privilege: Pipeline identities should have only the permissions necessary for their tasks. Long-lived credentials should be avoided where short-lived, federated identities are available.

Auditability: Organizations may need evidence of who approved, changed, tested, and deployed software. Automation should produce trustworthy records without becoming excessive surveillance.

Supply-chain security: Dependencies, container images, plugins, and build tools can introduce vulnerabilities. Organizations should maintain inventories, verify provenance, scan components, and protect build environments.

Algorithmic and AI systems: If DevOps pipelines deliver AI-enabled systems, teams must consider data quality, bias, explainability, model drift, privacy, and human oversight. Automated deployment does not justify releasing an unsafe model.

Resilience and social impact: Outages may affect health, finance, public services, or vulnerable users. Release decisions should consider consequences beyond technical metrics.

Governance should be embedded in repeatable controls where possible. Policy as code, automated evidence collection, segregation of duties for high-risk changes, and documented exception processes can support both speed and accountability.

11. Challenges and Limitations

DevOps transformations commonly encounter the following challenges:

  • Cultural resistance: Teams may fear loss of authority or increased accountability.
  • Legacy architecture: Monolithic applications and fragile environments may limit deployment frequency.
  • Tool fragmentation: Many disconnected tools can increase complexity rather than reduce it.
  • Insufficient skills: Teams may need training in automation, cloud, testing, security, and observability.
  • Poor metrics: Local performance measures can encourage undesirable behavior.
  • Automation without understanding: Automated deployment cannot compensate for unclear requirements or weak architecture.
  • Cloud cost growth: Elastic resources can create unexpected expenditure without budgets, tagging, and monitoring.
  • Alert fatigue: Excessive or poorly designed alerts reduce attention to genuine incidents.
  • Compliance misconceptions: Regulation usually requires controlled outcomes and evidence, not necessarily manual processes.

DevOps should therefore evolve incrementally. A small, well-supported pilot can reveal constraints and establish credibility. Organizations should avoid copying another company’s practices without considering product risk, architecture, regulation, team capability, and customer expectations.

12. Illustrative Case: Modernizing a Student Enrollment Service

Background

A fictional university operates an online student enrollment service. Releases occur four times each academic year. Developers deliver large batches of changes, operations manually configures servers, and testing is concentrated during the week before release.

Problem

The service experiences defects during enrollment periods. A failed release can prevent students from registering for courses. Development and operations disagree about causes because logs are incomplete and deployment steps are not documented. The university wants faster improvement without increasing enrollment risk.

Analysis

A value-stream review identifies several delays: manual environment preparation, duplicated testing, unclear ownership, and no standard rollback procedure. The service is also difficult to observe because application logs do not include a shared request identifier.

Approach

The university forms a cross-functional service team containing developers, operations personnel, a quality engineer, a security representative, and a product owner. The team:

  • places application and infrastructure definitions under version control;
  • creates a CI pipeline with unit, integration, dependency, and security checks;
  • builds an immutable application artifact;
  • provisions a test environment using IaC;
  • introduces automated database migration checks;
  • adds dashboards for request success, latency, and error rates;
  • rehearses rollback and recovery;
  • uses a canary release during a low-risk period;
  • conducts a blameless review after each incident or near miss.

The team does not begin with fully automatic production deployment. It first establishes reliable evidence and a controlled approval process. Once confidence improves, selected low-risk changes are released automatically, while enrollment-period changes receive additional review.

Outcome

The service team reduces manual handoffs and detects defects before production. Operators can identify affected requests more quickly, and developers receive direct feedback from production behavior. The organization gains faster delivery without treating speed as the sole objective.

Learning points

This case illustrates that DevOps is an operating model rather than a pipeline product. The major improvements come from shared ownership, repeatability, observability, risk-based controls, and learning. Automation supports these practices but does not replace judgment.

Best Practices for Beginners

  • Start with one service and a measurable problem.
  • Keep changes small, reviewable, and reversible.
  • Store code, configuration, tests, and infrastructure definitions in version control.
  • Automate the fastest and most valuable feedback first.
  • Build security and quality into the workflow rather than adding them at the end.
  • Make production behavior visible through useful telemetry.
  • Document ownership, recovery steps, and operational assumptions.
  • Use progressive delivery for higher-risk changes.
  • Treat incidents as opportunities for system improvement, not personal blame.
  • Measure outcomes such as lead time, reliability, recovery, and customer value.
  • Control cloud costs through budgets, tagging, rightsizing, and lifecycle policies.
  • Prefer simple, maintainable toolchains over fashionable complexity.

Chapter Summary

DevOps evolved from the need to overcome the separation between software development and IT operations. It combines Agile delivery, Lean flow, automation, continuous feedback, systems thinking, security, quality engineering, and operational responsibility. Its lifecycle connects planning, coding, building, testing, releasing, deploying, operating, monitoring, and learning.

DevOps is broader than CI/CD and is not synonymous with cloud computing. Cloud platforms make automation and elastic delivery easier, but they also create responsibilities for security, governance, reliability, and cost management. Development, operations, quality, security, product, and business teams must collaborate with clear ownership.

The business value of DevOps includes faster and safer delivery, better quality, greater reliability, improved customer experience, and more efficient use of technical effort. These benefits depend on sound practices and should be evaluated through meaningful outcomes rather than tool adoption. Effective DevOps is incremental, measurable, security-conscious, and oriented toward continuous learning.

Key Terms

DevOps: A collaborative approach integrating development, operations, security, quality, automation, and continuous learning.

Agile: An iterative approach emphasizing collaboration, working software, and responsiveness to change.

Continuous integration: Frequent code integration supported by automated build and test activities.

Continuous delivery: Maintaining software in a releasable state through repeatable controls and automation.

Continuous deployment: Automatically releasing validated changes to production.

Pipeline: An automated workflow for building, testing, securing, and deploying software.

Infrastructure as code: Managing infrastructure through version-controlled, machine-readable definitions.

Configuration drift: Difference between intended configuration and actual environment state.

Observability: Understanding system behavior through outputs such as logs, metrics, and traces.

Telemetry: Operational data collected from a system.

SRE: Engineering practice focused on reliable and scalable service operation.

DevSecOps: Integrating security throughout the DevOps lifecycle.

Shift left: Performing quality or security activities earlier in development.

Shift right: Learning from software behavior in staging or production.

Service-level objective: A target for a measurable service characteristic.

Error budget: The permitted unreliability associated with a service-level objective.

Deployment frequency: How often an organization successfully deploys changes.

Change failure rate: The proportion of deployments that cause failure, rollback, or remediation.

Mean time to restore: Average time needed to recover service after an incident.

Platform engineering: Developing internal platforms and reusable capabilities for delivery teams.

Review Questions

Short Answer Questions

  1. Why did the separation between development and operations create delivery problems?
  2. Define continuous integration and explain one benefit it provides.
  3. What is infrastructure as code?
  4. Distinguish continuous delivery from continuous deployment.
  5. Why is observability important in a DevOps environment?

Long Answer Questions

  1. Explain the origins and evolution of DevOps from sequential delivery and Agile development.
  2. Describe each stage of the DevOps lifecycle and the feedback relationship among the stages.
  3. Explain how development, operations, quality engineering, security, and business stakeholders contribute to shared ownership.
  4. Discuss how cloud computing enables DevOps and why cloud adoption alone does not constitute DevOps.
  5. Evaluate the business value and limitations of DevOps, using suitable examples.

Analytical / Application Questions

  1. A company deploys frequently but experiences many production incidents and slow recovery. Analyze the likely weaknesses in its DevOps system and recommend improvements.
  2. Design a basic DevOps adoption plan for a small organization moving a web application to the cloud. Include version control, CI, testing, security, deployment, monitoring, and cost governance.
  3. A regulated organization requires approval before high-risk production changes. Explain how it can preserve DevOps benefits while maintaining auditability and segregation of duties.

Multiple Choice Questions with Answers

Question 1

Which statement best describes DevOps?

A. A programming language for automating servers

B. A collaborative approach integrating development, operations, automation, security, and continuous learning

C. A replacement for all software testing

D. A cloud provider’s method of charging for infrastructure

Correct Answer: B. A collaborative approach integrating development, operations, automation, security, and continuous learning

Question 2

What is the primary purpose of continuous integration?

A. To delay integration until the end of a project

B. To integrate code frequently and provide automated build and test feedback

C. To deploy every change directly to production without testing

D. To eliminate the need for version control

Correct Answer: B. To integrate code frequently and provide automated build and test feedback

Question 3

Which activity is most closely associated with infrastructure as code?

A. Manually changing a server through a graphical console

B. Defining infrastructure in version-controlled configuration files

C. Writing customer requirements on paper

D. Measuring application response time

Correct Answer: B. Defining infrastructure in version-controlled configuration files

Question 4

What distinguishes continuous deployment from continuous delivery?

A. Continuous deployment automatically releases validated changes to production

B. Continuous deployment avoids all testing

C. Continuous delivery applies only to infrastructure

D. Continuous delivery requires no automation

Correct Answer: A. Continuous deployment automatically releases validated changes to production

Question 5

Which group is primarily responsible for defining service priorities and business value?

A. Product and business stakeholders

B. Only the network administration team

C. The compiler

D. The build server

Correct Answer: A. Product and business stakeholders

Question 6

Which practice helps reduce the impact of a risky production release?

A. Deploying a large batch without monitoring

B. Using a canary release or progressive deployment

C. Removing rollback procedures

D. Disabling automated tests

Correct Answer: B. Using a canary release or progressive deployment

Question 7

What does observability help a team understand?

A. The internal behavior of a system using outputs such as logs, metrics, and traces

B. Only the purchase price of a cloud account

C. The personal performance of each developer

D. The legal ownership of source code

Correct Answer: A. The internal behavior of a system using outputs such as logs, metrics, and traces

Question 8

Which statement about cloud computing and DevOps is correct?

A. Moving to the cloud automatically creates a DevOps culture

B. Cloud capabilities can enable automation, but DevOps also requires collaboration, governance, and feedback

C. Cloud computing eliminates security responsibilities

D. DevOps cannot be used with managed cloud services

Correct Answer: B. Cloud capabilities can enable automation, but DevOps also requires collaboration, governance, and feedback

Question 9

What is the purpose of an error budget in SRE-oriented practice?

A. To define the amount of permitted unreliability implied by a service objective

B. To calculate employee salaries

C. To remove all reliability targets

D. To measure the size of source-code files

Correct Answer: A. To define the amount of permitted unreliability implied by a service objective

Question 10

Which is an appropriate DevSecOps practice?

A. Performing security review only after a public release

B. Integrating security checks and responsibilities throughout the lifecycle

C. Giving every pipeline unlimited administrative access

D. Ignoring third-party dependencies

Correct Answer: B. Integrating security checks and responsibilities throughout the lifecycle

DevOps & CI/CD Fundamentals
Chapter 1 of 14