Fundamentals of DevOps and Software Delivery

Book description

This book is a guide to DevOps and software delivery: that is, a guide to the numerous tools and techniques that are required to take that application code and run it and maintain it in production, where it can generate value for your users and your company on an ongoing basis. This includes going through all the modern practices for deploying applications and microservices to the cloud, managing your infrastructure as code, automating your software delivery lifecycle in a CI/CD pipeline, configuring networking, setting up data stores, and hooking up monitoring.

Publisher resources

View/Submit Errata

Table of contents

  1. Brief Table of Contents (Not Yet Final)
  2. Preface
    1. Why I Wrote This Book
    2. Watch Out for Snakes
    3. Who Should Read This Book
    4. What You’ll Find in This Book
    5. What You Won’t Find in This Book
    6. Open Source Code Examples
      1. Opinionated Code Examples
      2. You Have to Get Your Hands Dirty
      3. Using Code Examples
    7. Conventions Used in This Book
    8. O’Reilly Online Learning
    9. How to Contact Us
    10. Acknowledgments
  3. 1. An Introduction to DevOps and Software Delivery
    1. A Primer on DevOps
      1. Where DevOps Came From
      2. The Evolution of DevOps
      3. Adopting DevOps Practices
    2. An Introduction to Deploying Apps
      1. Example: Run the Sample App Locally
      2. Deploying an App on a Server
      3. Deploying On Prem Versus in the Cloud
      4. Deploying An App Using PaaS
      5. Deploying an App Using IaaS
      6. Comparing PaaS and IaaS
    3. Conclusion
  4. 2. How to Manage Your Infrastructure as Code
    1. The Benefits of IaC
    2. Ad Hoc Scripts
      1. Example: Deploy an EC2 Instance Using a Bash Script
      2. How Ad Hoc Scripts Stack Up
    3. Configuration Management Tools
      1. Example: Deploy an EC2 Instance Using Ansible
      2. Example: Configure a Server Using Ansible
      3. How Configuration Management Tools Stack Up
    4. Server Templating Tools
      1. Example: Create a VM Image Using Packer
      2. How Server Templating Tools Stack Up
    5. Provisioning Tools
      1. Example: Deploy an EC2 Instance Using OpenTofu
      2. Example: Update and Destroy Infrastructure Using OpenTofu
      3. Example: Deploy an EC2 Instance Using an OpenTofu Module
      4. Example: Deploy an EC2 Instance Using an OpenTofu Module from GitHub
      5. How Provisioning Tools Stack Up
    6. Using Multiple IaC Tools Together
      1. Provisioning Plus Configuration Management
      2. Provisioning Plus Server Templating
      3. Provisioning Plus Server Templating Plus Orchestration
    7. Adopting IaC
    8. Conclusion
  5. 3. How to Deploy Many Apps: Orchestration, VMs, Containers, and Serverless
    1. An Introduction to Orchestration
    2. Server Orchestration
      1. Example: Deploy Multiple Servers in AWS Using Ansible
      2. Example: Deploy an App Securely and Reliably Using Ansible
      3. Example: Deploy a Load Balancer Using Ansible and Nginx
      4. Example: Roll Out Updates with Ansible
    3. VM Orchestration
      1. Example: Build a VM Image Using Packer
      2. Example: Deploy a VM Image in an Auto Scaling Group Using OpenTofu
      3. Example: Deploy an Application Load Balancer Using OpenTofu
      4. Example: Roll Out Updates with OpenTofu and Auto Scaling Groups
    4. Container Orchestration
      1. Example: A Crash Course on Docker
      2. Example: Create a Docker Image for a Node.js app
      3. Example: Deploy a Dockerized App with Kubernetes
      4. Example: Deploy a Load Balancer with Kubernetes
      5. Example: Roll Out Updates with Kubernetes
      6. Example: Deploy a Kubernetes Cluster in AWS Using EKS
      7. Example: Push a Docker Image to ECR
      8. Example: Deploy a Dockerized App into an EKS Cluster
    5. Serverless Orchestration
      1. Example: Deploy a Serverless Function with AWS Lambda
      2. Example: Deploy an API Gateway in Front of AWS Lambda
      3. Example: Roll Out Updates with AWS Lambda
    6. Comparing Orchestration Options
    7. Conclusion
  6. 4. How to Version, Build, and Test Your Code
    1. Version Control
      1. Version Control Primer
      2. Example: A Crash Course on Git
      3. Example: Store your Code in GitHub
      4. Example: Open a Pull Request in GitHub
      5. Version Control Best Practices
    2. Build System
      1. Example: Configure your Build Using NPM
      2. Dependency Management
      3. Example: Add Dependencies in NPM
    3. Automated Testing
      1. Example: Add Automated Tests for the Node.js App
      2. Example: Add Automated Tests for the OpenTofu Code
      3. Testing Best Practices
    4. Conclusion
  7. 5. How to Set Up Continuous Integration (CI) and Continuous Delivery (CD)
    1. Continuous Integration (CI)
      1. Dealing with Merge Conflicts
      2. Preventing Breakages with Self-Testing Builds
      3. Making Large Changes
      4. Example: Run Automated Tests for Apps in GitHub Actions
      5. Machine User Credentials and Automatically-Provisioned Credentials
      6. Example: Configure OIDC with AWS and GitHub Actions
      7. Example: Run Automated Tests for Infrastructure in GitHub Actions
    2. Continuous Delivery (CD)
      1. Deployment Strategies
      2. Deployment Pipelines
    3. Conclusion
  8. 6. How to Work with Multiple Teams and Environments
    1. Breaking Up Your Deployments
      1. Why Deploy Across Multiple Environments
      2. How to Set Up Multiple Environments
      3. Challenges with Multiple Environments
      4. Example: Set Up Multiple AWS Accounts
    2. Breaking Up Your Codebase
      1. Why Break Up Your Codebase
      2. How to Break Up Your Codebase
      3. Challenges with Breaking Up Your Codebase
      4. Example: Deploy Microservices in Kubernetes
    3. Conclusion
  9. About the Author

Product information

  • Title: Fundamentals of DevOps and Software Delivery
  • Author(s): Yevgeniy Brikman
  • Release date: May 2025
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781098174590