Deploy
Deployment Strategies
Deployment is the process of making your application's built assets available on a hosting environment. It bridges the gap between development and production.
Core Deployment Concepts
1. Manual Deployment
The simplest form, where a developer manually uploads files to a server (e.g., via FTP or drag-and-drop into a web console). Highly discouraged for production environments due to lack of reproducibility and high risk of human error.
2. Continuous Deployment (CD)
Automated pipelines that trigger a deployment every time code is merged into the production branch. This aligns with GitHub Flow and Trunk-Based Development for high-velocity teams.
3. Blue-Green Deployment
A strategy that uses two identical production environments ("Blue" and "Green"). Only one is live at a time. New code is deployed to the idle environment, tested, and then traffic is switched.
- Benefit: Zero downtime and instant rollback by switching traffic back.
4. Canary Releases
Rolling out the new version to a small subset of users before making it available to everyone.
- Benefit: Allows monitoring for performance issues or bugs in the real world with minimal impact.
5. Atomic Deploys
Ensuring that the application is updated in its entirety or not at all. This prevents users from experiencing an inconsistent state where some assets are old and some are new.
Effective deployment strategies are automated, reproducible, and include clear rollback paths.