During the deployment phase, tested and packaged code is automatically delivered to the target environments (staging or production). Configuration management and infrastructure as code (IaC) tools—which use configuration files and high-level descriptive coding languages to automate infrastructure provisioning and orchestration for software releases—help DevOps teams ensure that software is delivered in a reliable, repeatable way.
Deployment is typically driven by continuous delivery (CD) and containerization platforms (Kubernetes, for example) that orchestrate software deployment processes (pulling build artifacts, updating containers and binaries, running final tests and switching traffic to the new version).
DevOps teams often use different deployment strategies to make sure that new versions are introduced gradually and can be rolled back quickly, if necessary.
With blue-green deployment, for example, apps are deployed in two parallel production environments, and each environment runs a different release of the application. The “blue” environment runs the live application, while the “green” environment handles testing and validation for new app versions. When the new iteration passes, the green environment becomes the live environment, and the blue remains idle—but available—to handle rollbacks.
With canary deployments, teams deploy applications to a small subset of users—or “canaries”—for live-environment monitoring and testing before rolling the app out to the entire user base.
Much like canaries were used to warn coal miners of toxic gases, canary deployments warn development teams of app defects without risking large-scale performance issues that affect every user. If the application performs well with the canary group, developers progressively roll it out to larger groups until it’s available to all users.