Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Phát hành phiên bản mới mà làm sập trang web giữa giờ cao điểm là cơn ác mộng. Các chiến lược triển khai sinh ra để giảm rủi ro đó: cập nhật mà người dùng không hay biết, và có đường lui nhanh khi gặp lỗi. Ba cách phổ biến nhất là rolling, blue-green và canary.
Cách cơ bản nhất là dừng bản cũ, chép bản mới, khởi động lại. Dễ làm, nhưng có thời gian ngừng dịch vụ (downtime) và nếu bản mới lỗi thì phải làm lại từ đầu. Với trang web nhỏ ít người dùng thì chấp nhận được, còn hệ thống nghiêm túc thường cần cách tốt hơn.
Giả sử bạn chạy bốn bản sao của ứng dụng. Rolling update thay lần lượt từng bản cũ bằng bản mới: tắt một, bật một bản mới, chờ khỏe, rồi sang bản tiếp theo.
Bạn duy trì hai môi trường giống hệt nhau. Giả sử xanh dương (blue) đang phục vụ người dùng. Bạn triển khai bản mới vào môi trường xanh lá (green), kiểm tra kỹ, rồi chuyển lưu lượng từ blue sang green trong một thao tác, ví dụ đổi cấu hình cân bằng tải.
Tên gọi lấy từ hình ảnh chim hoàng yến trong hầm mỏ. Bạn cho bản mới nhận một phần nhỏ lưu lượng, rồi theo dõi lỗi và độ trễ. Nếu ổn thì tăng dần tỉ lệ; nếu có vấn đề thì rút lại, và chỉ một số ít người dùng bị ảnh hưởng.
| Tiêu chí | Rolling | Blue-green | Canary |
|---|---|---|---|
| Tài nguyên thêm | Ít | Nhiều | Ít đến vừa |
| Tốc độ rollback | Trung bình | Rất nhanh | Nhanh |
| Mức rủi ro | Trung bình | Thấp | Thấp nhất |
| Độ phức tạp | Thấp | Vừa | Cao |
Dù chọn chiến lược nào, thay đổi cấu trúc dữ liệu là chỗ dễ sai nhất. Nguyên tắc an toàn là chia thành nhiều bước tương thích ngược: thêm cột mới trước, cho code mới ghi và đọc cả hai, rồi mới xóa cột cũ ở lần phát hành sau. Đừng đổi tên hoặc xóa cột trong cùng lần với code mới.
Feature flag (cờ tính năng) cho phép đưa code lên production nhưng chưa bật tính năng. Bạn bật dần cho nhóm người dùng nhất định rồi tắt ngay nếu có vấn đề mà không cần triển khai lại. Nó tách việc 'triển khai code' khỏi việc 'phát hành tính năng'.
Không có cách tốt nhất tuyệt đối, chỉ có cách phù hợp với quy mô và khả năng vận hành của bạn. Dù chọn gì, hãy luôn chuẩn bị đường lui và theo dõi hệ thống sau mỗi lần phát hành.
Nếu bạn muốn thực hành các kiểu triển khai này trên dự án mẫu, hãy tham khảo thêm tại codebem.com.
Nguyễn Đình Cường
0 comment