Blue-Green duy trì hai môi trường production song song (blue = đang live, green = bản mới). Deploy lên green, chạy integration test, rồi chuyển traffic ngay tại load balancer (nginx upstream, AWS ALB target group, Kubernetes ingress) — chuyển tức thì, không downtime.
- Rollback cũng tức thì: phát hiện lỗi sau deploy thì trỏ traffic ngược về blue, vì blue vẫn còn nguyên.
- Chi phí là nhược điểm lớn nhất: phải nuôi hai môi trường cùng lúc, hạ tầng lớn thì rất tốn.
- Khó nhất là database migration — migration phải tương thích ngược với cả code blue lẫn green (không thể drop column ở green khi blue vẫn đang dùng).
Canary thì thả bản mới cho một phần nhỏ user (1-5%), theo dõi metric rồi mới tăng dần tỉ lệ nếu ổn.
- Metric cần canh: error rate vọt lên, P99 latency tăng, conversion rate tụt, và metric nghiệp vụ riêng (đơn hàng/phút).
- Đặt ngưỡng để tự động rollback khi error rate vượt mức.
- Trên Kubernetes, Flagger hoặc Argo Rollouts tự chạy canary và promote dựa trên metric; muốn canary ở tầng ứng dụng thì dùng feature flag như LaunchDarkly.
A/B testing khác canary: A/B test là để đo tác động nghiệp vụ của một feature/UI mới trên một nhóm user, còn canary là chiến lược giảm rủi ro khi đổi hạ tầng. Hai cái kết hợp được với nhau.