What is deployment in software?
Deployment vs. release
Deployment is the technical act of putting software onto infrastructure. Release is the business decision to make that software available to users. You can deploy code without releasing it (e.g., behind a feature flag), and you can release features that were deployed earlier.
In modern DevOps, deployment is often automated through CI/CD pipelines. A pipeline might build the code, run tests, and then deploy to staging or production. The goal is to make deployments repeatable and low-risk.
- Build: compile code and create artifacts
- Test: run automated tests
- Deploy: install artifacts on servers
- Release: enable features for users
Common deployment models
Deployment can be as simple as copying files to a server and restarting a service, or as complex as a multi-region Kubernetes rollout. Common strategies include rolling updates (gradually replacing instances), blue-green (two identical environments, switch traffic), and canary (send a small percentage of traffic to the new version).
The choice depends on your tolerance for downtime and risk. For a small web app, a simple restart might be fine. For a high-traffic service, blue-green or canary deployments reduce the impact of a bad release.
Common mistakes
- Confusing deployment with release; they are related but distinct concepts.
- Assuming deployment always means downtime; many strategies allow zero-downtime deployments.
- Neglecting rollback plans; always have a way to revert a bad deployment.
