Implementing Azure DevOps Solutions

Book description

A comprehensive guide to becoming a skilled Azure DevOps engineer

Key Features

  • Explore a step-by-step approach to designing and creating a successful DevOps environment
  • Understand how to implement continuous integration and continuous deployment pipelines on Azure
  • Integrate and implement security, compliance, containers, and databases in your DevOps strategies

Book Description

Implementing Azure DevOps Solutions helps DevOps engineers and administrators to leverage Azure DevOps Services to master practices such as continuous integration and continuous delivery (CI/CD), containerization, and zero downtime deployments.

This book starts with the basics of continuous integration, continuous delivery, and automated deployments. You will then learn how to apply configuration management and Infrastructure as Code (IaC) along with managing databases in DevOps scenarios. Next, you will delve into fitting security and compliance with DevOps. As you advance, you will explore how to instrument applications, and gather metrics to understand application usage and user behavior. The latter part of this book will help you implement a container build strategy and manage Azure Kubernetes Services. Lastly, you will understand how to create your own Azure DevOps organization, along with covering quick tips and tricks to confidently apply effective DevOps practices.

By the end of this book, you'll have gained the knowledge you need to ensure seamless application deployments and business continuity.

What you will learn

  • Get acquainted with Azure DevOps Services and DevOps practices
  • Implement CI/CD processes
  • Build and deploy a CI/CD pipeline with automated testing on Azure
  • Integrate security and compliance in pipelines
  • Understand and implement Azure Container Services
  • Become well versed in closing the loop from production back to development

Who this book is for

This DevOps book is for software developers and operations specialists interested in implementing DevOps practices for the Azure cloud. Application developers and IT professionals with some experience in software development and development practices will also find this book useful. Some familiarity with Azure DevOps basics is an added advantage.

Table of contents

  1. Title Page
  2. Copyright and Credits
    1. Implementing Azure DevOps Solutions
  3. About Packt
    1. Why subscribe?
  4. Contributors
    1. About the authors
    2. About the reviewer
    3. Packt is searching for authors like you
  5. Preface
    1. Who this book is for
    2. What this book covers
    3. To get the most out of this book
      1. Download the color images
      2. Conventions used
    4. Get in touch
      1. Reviews
  6. Section 1: Getting to Continuous Delivery
  7. Introduction to DevOps
    1. Technical requirements
    2. What is DevOps?
      1. The relation between DevOps and Agile
        1. Agile work management
          1. Switching to a flow-based methodology
          2. Synchronizing work items to one system
          3. Fastlaning
          4. Decommissioning other work management tools
      2. Goals and benefits of a DevOps culture
        1. Measuring results
          1. Cycle time and lead time
          2. The amount of work in progress
          3. Mean time to recovery
          4. Change rate and change failure rate
    3. Creating your ideal DevOps organization
    4. Exploring DevOps practices and habits
      1. DevOps practices
        1. Configuration management
        2. Release management
        3. Continuous integration
        4. Continuous deployment
        5. Infrastructure as code
        6. Test automation
        7. Application performance monitoring
      2. DevOps habits
        1. Team autonomy and enterprise alignment
        2. Rigorous management of technical debt
        3. Focusing on flow of customer value
        4. Hypothesis-driven development
        5. Evidence gathered in production
        6. Live-site culture
        7. Managing infrastructure as a flexible resource
    5. Five stages of the DevOps evolution
      1. Normalizing the technology stack
      2. Standardizing and reducing variability
      3. Expanding DevOps practices
      4. Automating infrastructure delivery
      5. Providing self-service capabilities
    6. Summary
    7. Questions
    8. Further reading
  8. Everything Starts with Source Control
    1. Technical requirements
    2. Types of source control in Azure DevOps
      1. Centralized source control
      2. Decentralized source control
    3. Source control systems
      1. Team Foundation Version Control
      2. Git
        1. Large File Storage
      3. Migrating between control systems
        1. Migrating existing Git repositories
        2. Migrating from TFVC to an Azure Git repository
        3. Migrating from Subversion to an Azure Git repository
        4. Migrating without retaining history
    4. Selecting a branching and merging strategy
      1. Branching strategies
        1. GitHub flow
        2. GitFlow
        3. Release Flow
        4. Trunk-based development
          1. Branching by abstraction
      2. Merging strategies
        1. TFVC
        2. Git
          1. Merge commit
          2. Squash commit
          3. Rebase
    5. Managing repositories
      1. Monorepo or multi-repo
      2. Creating and removing repositories
      3. Securing repositories
      4. Branch policies
    6. Other tools for source control
      1. GitHub
      2. GitLab
      3. Subversion
    7. Summary
    8. Questions
    9. Further reading
  9. Moving to Continuous Integration
    1. Technical requirements
    2. Introducing continuous integration
      1. The four pillars of continuous integration
    3. Creating a build definition in Azure DevOps
      1. Connecting to source control
        1. Configuring a job
        2. Adding tasks to your job
        3. Publishing build artifacts
        4. Calling other tools
        5. Task Marketplace
      2. Creating variables and variable groups
        1. Variable groups
      3. Triggering the build
      4. Build options
      5. Build history
      6. Task groups
    4. Running a build
      1. Viewing the build results
      2. Building a pull request
      3. Accessing build artifacts
    5. Working with YAML pipelines
      1. The reason for using build definitions as code
      2. Writing a basic YAML pipeline
        1. Writing the YAML file
        2. Creating a YAML pipeline
      3. Multi-job pipelines
        1. Control options
      4. Variables
      5. Pipeline artifacts
      6. Tips for writing YAML pipelines
    6. Agents and agent queues
      1. Built-in agent pools
      2. Creating a private agent pool
        1. Adding and removing agents
      3. Agent selection
      4. Finding agent capabilities
    7. Other tools
      1. GitLab CI
      2. Jenkins
    8. Summary
    9. Questions
    10. Further reading
  10. Continuous Deployment
    1. Technical requirements
    2. Continuous delivery and continuous deployment
    3. Working with Azure DevOps releases
      1. Creating artifacts and release triggers
      2. Specifying the stages to deploy the release
        1. Which stages do I need?
        2. Stage triggers, approvals, and gates
      3. Working with deployment groups
        1. Managing deployment groups
        2. Creating a release pipeline with a deployment group
    4. Writing multi-stage YAML pipelines
      1. Adding stages to YAML pipelines
      2. Downloading artifacts
      3. Approvals
    5. Implementing continuous deployment strategies
      1. Blue-green deployments
        1. Immutable servers
      2. Progressive exposure
        1. Canary deployments
        2. Ring-based deployments
      3. Feature flags
      4. Roll back or fail forward
    6. Deploying mobile applications
      1. Connecting to the app store
      2. Using distribution groups
      3. Publishing an app
      4. App Center via Azure Pipelines
    7. Automating release notes
    8. Other tools
      1. Octopus Deploy
    9. Summary
    10. Questions
    11. Further reading
  11. Section 2: Expanding your DevOps Pipeline
  12. Dependency Management
    1. Technical requirements
    2. Identifying shared components
      1. Types of feeds
    3. Creating a feed
      1. Setting up a feed
        1. Securing access
      2. Managing views on a feed
      3. Configuring upstream sources
    4. Publishing packages
      1. Uploading packages by hand
      2. Publishing packages from a pipeline
        1. Versioning packages
    5. Consuming packages
      1. Consuming packages from Visual Studio
      2. Consuming packages from a pipeline
    6. Working with universal packages
      1. Uploading and downloading universal packages from Azure Pipelines
      2. Uploading and downloading universal packages using the Azure CLI
    7. Exploring other tools
      1. MyGet
      2. Artifactory
      3. Azure Container Registry
    8. Summary
    9. Questions
    10. Further reading
  13. Infrastructure and Configuration as Code
    1. Technical requirements
    2. Having everything as code
    3. Working with ARM templates
      1. Parameters
        1. Parameter files
      2. Variables
      3. Resources
        1. Dependent resources
        2. Nested templates
      4. Outputs
      5. Functions
      6. Deploying ARM templates
        1. PowerShell
        2. The Azure CLI
      7. Azure Pipelines
      8. Reverse engineering a template
        1. Using the Export template
        2. Using the Resource Explorer
      9. Subscription-level templates
        1. Azure Blueprints
      10. November 2019 updates
    4. Using Azure Automation
      1. Automation account resources
        1. Run As account
        2. Schedules
        3. Modules
        4. Variables
        5. Credentials
        6. Connections
      2. Runbooks
        1. Runbook execution
        2. Jobs
        3. Runbooks gallery
      3. PowerShell DSC
        1. Compiling and applying PowerShell DSC
        2. Using Powershell DSC with Azure Automation
    5. Managing application settings
      1. Azure app service settings from an ARM template
      2. Loading settings at runtime from key vault
      3. Azure App Configuration
    6. Other tools
      1. CloudFormation
      2. Chef
      3. Puppet
      4. Ansible
      5. Terraform
    7. Summary
    8. Questions
    9. Further reading
  14. Dealing with Databases in DevOps Scenarios
    1. Technical requirements
    2. Managing a database schema as code
      1. Migrations
      2. End state
    3. Applying database schema changes
      1. Upgrading as part of the release
      2. Upgrading by the application code
      3. Adding a process
    4. Going schema-less
      1. Writing objects to the database
      2. Reading objects from the database
    5. Other approaches and concerns
      1. Minimizing the influence of databases
      2. Full side-by-side deployment
      3. Testing database changes
    6. Summary
    7. Questions
    8. Further reading
  15. Continuous Testing
    1. Technical requirements
    2. Defining quality
      1. Metrics for quality
      2. Technical debt
    3. Understanding test types
      1. Types of automated functional tests
        1. Unit tests
        2. Integration tests
        3. System tests
      2. Types of manual functional tests
        1. Scripted testing
        2. Exploratory testing
          1. Reporting manual test results
      3. Strategies for deciding which types of functional tests you need
        1. The testing pyramid
        2. The testing trophy
      4. Types of non-functional tests
        1. Performance testing
        2. Load testing
        3. Usability testing
    4. Executing tests in a pipeline
      1. Running unit tests
        1. Recording unit test code coverage
      2. Running integration tests
      3. Running external tests
    5. Maintaining quality
      1. Code reviews
      2. Automatically gathering quality metrics
      3. Visualizing quality
      4. Quality gates
        1. Classic releases
        2. Multi-stage pipelines
    6. Summary
    7. Questions
    8. Further reading
  16. Security and Compliance
    1. Technical requirements
    2. Applying DevOps principles to security and compliance
      1. Bringing developers and security engineers together
      2. Security concerns
    3. Working with secrets
      1. Storing secrets in service connections
      2. Storing secrets in variable groups
      3. Detecting unsecured secrets
    4. Detecting application code vulnerabilities
      1. OWASP Top 10
      2. Implementing automated vulnerability scanning
      3. OWASP Zed Attack Proxy
    5. Working with dependencies
      1. Working with WhiteSource Bolt
    6. Ensuring infrastructure compliance
      1. Assigning an Azure Policy or initiative
      2. Writing an Azure Policy
      3. Initiatives
      4. Fetching audit results
    7. Monitoring and detecting runtime security risks and threats
    8. Other tools you can use
    9. Summary
    10. Questions
    11. Further reading
  17. Section 3: Closing the Loop
  18. Application Monitoring
    1. Technical requirements
    2. Investigating application crashes
      1. Gathering crash reports for mobile applications
      2. Gathering crash reports for desktop applications
    3. Instrumenting web applications
      1. Logging
        1. Emitting logs
        2. Searching logs
        3. Alerting on logs
      2. Metrics
        1. Emitting metrics
        2. Graphing metrics
        3. Alerting on metrics
      3. Investigating requests
      4. Optimizing alerting
        1. Optimizing alerts
        2. Alert fatigue
        3. Which metrics to capture
      5. Having an on-call schedule
      6. Live site reviews
    4. Integrating with other tools
      1. IT service management applications
      2. Azure Boards
      3. Grafana
    5. Summary
    6. Questions
    7. Further reading
  19. Gathering User Feedback
    1. Technical requirements
    2. Understanding continuous feedback
    3. Asking for direct feedback
      1. Advantages of in-product feedback
      2. Having a public roadmap
      3. Using interviews or focus groups
    4. Gathering indirect feedback
      1. Sentiment analysis
      2. Support requests
    5. Implementing hypothesis-driven development
    6. Summary
    7. Questions
    8. Further reading
  20. Section 4: Advanced Topics
  21. Containers
    1. Technical requirements
    2. An introduction to containers
      1. DevOps and containers
      2. Hosting options
    3. Building a container image
      1. Creating an application
      2. Adding Docker support to an existing application
      3. Creating an image with the application
      4. Running the container image
    4. Building images in Azure DevOps and running them in Azure
      1. Creating a service endpoint
      2. Creating a new pipeline
    5. An introduction to Kubernetes
      1. Functionalities of Kubernetes
      2. Kubernetes core components and services
        1. Master node
        2. Regular nodes
        3. Pod
        4. Service
        5. Deployment
      3. Operation of Kubernetes
      4. Azure Kubernetes Service
    6. Kubernetes in action
      1. Creating a Kubernetes cluster
      2. Kubernetes infrastructure
      3. Managing Kubernetes
      4. Deploying a container image
    7. Upgrading containers
    8. Scaling containers and Kubernetes
      1. Scaling pods manually
        1. Autoscaling pods
      2. Scaling nodes
      3. Autoscaling nodes
    9. Deploying to Kubernetes with Azure DevOps
    10. Summary
    11. Questions
    12. Further reading
  22. Planning Your Azure DevOps Organization
    1. Technical requirements
    2. Setting up an Azure DevOps organization
      1. How Azure DevOps is organized
      2. Creating an Azure DevOps organization and project
      3. Azure DevOps security model
      4. Azure DevOps licensing
        1. Consumption-based costs
    3. Ensuring traceability
    4. Consolidating tools
      1. Standardizing tools
      2. Migration strategies
        1. Azure DevOps Server to Azure DevOps Services migration
        2. Big-bang migration
        3. Synchronization
        4. Rebuilding
      3. Integrating tools
    5. Accepting there is no end state
    6. Summary
    7. Questions
    8. Further reading
  23. AZ-400 Mock Exam
    1. Designing a DevOps Strategy
    2. Implementing DevOps Development Processes
    3. Implementing Continuous Integration
    4. Implementing Continuous Delivery
    5. Implementing Dependency Management
    6. Implementing Application Infrastructure
    7. Implementing Continuous Feedback
    8. Answers
  24. Assessments
    1. Chapter 1
    2. Chapter 2
    3. Chapter 3
    4. Chapter 4
    5. Chapter 5
    6. Chapter 6
    7. Chapter 7
    8. Chapter 8
    9. Chapter 9
    10. Chapter 10
    11. Chapter 11
    12. Chapter 12
    13. Chapter 13
  25. Other Books You May Enjoy
    1. Leave a review - let other readers know what you think

Product information

  • Title: Implementing Azure DevOps Solutions
  • Author(s): Henry Been, Maik van der Gaag
  • Release date: June 2020
  • Publisher(s): Packt Publishing
  • ISBN: 9781789619690