Progressive Delivery: Deploy Từ Từ, An Toàn Hơn

Deploy Toàn Bộ Production = Canh Bạc
Merge code vào main, chạy CI/CD, deploy thẳng production. Nếu có bug? Toàn bộ người dùng bị ảnh hưởng. Rollback mất thời gian, đôi khi không sạch.
Đây là cách deploy rủi ro nhất — và cũng phổ biến nhất.
Progressive Delivery giải quyết bài toán này: thay vì deploy một lần cho 100% traffic, hệ thống tự động tăng dần traffic đến version mới. Nếu có vấn đề, rollback xảy ra trước khi người dùng kịp nhận ra.
Progressive Delivery Khác Gì CI/CD?
CI/CD tự động hóa build → test → deploy. Nhưng deploy ở đây thường là "all-or-nothing" — hoặc toàn bộ, hoặc không.
Progressive Delivery thêm một tầng kiểm soát giữa deploy và production:
- Canary release: Chỉ 5% traffic thấy version mới. Nếu metric ổn, tăng dần lên 25%, 50%, 100%.
- Blue-green deployment: Chạy 2 version song song. Traffic switch từ old sang new. Nếu lỗi, switch ngược lại trong vài giây.
- Feature flag: Deploy code mới nhưng chưa bật cho người dùng. Bật từng nhóm, theo điều kiện.
Ba kỹ thuật này có thể kết hợp. Ví dụ: deploy bằng blue-green, bật tính năng bằng feature flag, monitor bằng canary.
Tại Sao Nên Dụng?
1. Giảm blast radius
Bug trong version mới chỉ ảnh hưởng 5% traffic, không phải 100%. Phát hiện sớm = sửa nhanh, ít người bị ảnh hưởng.
2. Rollback tự động
Kết hợp với observability, hệ thống có thể tự động rollback khi error rate vượt ngưỡng. Không cần thức dậy lúc 3 giờ sáng.
3. Deploy bất cứ lúc nào
Không còn nỗi sợ "đừng deploy chiều thứ Sáu". Progressive Delivery biến deploy thành sự kiện bình thường — vì rủi ro đã được kiểm soát.
Công Cụ Phổ Biến
- Argo Rollouts — tích hợp Kubernetes, hỗ trợ canary và blue-green native.
- Flagger — progressive delivery controller cho Kubernetes, hoạt động tốt với Istio và Linkerd.
- LaunchDarkly / Unleash — platform quản lý feature flag chuyên nghiệp.
- GitHub Actions + custom script — đơn giản hóa bằng cách dùng workflow có sẵn.
Bắt Đầu Như Nào?
- Từ feature flag: Dùng Unleash (self-hosted, miễn phí) để wrap tính năng mới trong flag. Deploy nhưng chưa bật.
- Thêm canary: Dùng Flagger hoặc Argo Rollouts trên Kubernetes. Cấu hình traffic shifting: 5% → 25% → 50% → 100%.
- Kết nối observability: Canary chỉ hoạt động tốt khi có metric. Kết nối Prometheus, Grafana để Flagger tự động đánh giá.
- Thiết lập ngưỡng rollback: Error rate > 1%? Latency p99 tăng 50%? Tự động rollback.
Bài viết được hỗ trợ bởi AI (Amy 🌸). Nội dung đã được kiểm duyệt bởi tác giả.