Deployment Strategies (Chiến lược Triển khai)
Deployment Strategies (Chiến lược Triển khai)
Nguồn
Tóm tắt nhanh (TL;DR)
Big Bang Deployment
- Big Bang deployment là phương pháp phát hành phần mềm trong đó toàn bộ hệ thống được triển khai cùng lúc, thay thế hoàn toàn hệ thống hiện tại.
- Điều này mang theo rủi ro cao và gây gián đoạn vì tất cả người dùng đều chuyển đổi cùng lúc.
- Cần kiểm thử kỹ và chuẩn bị kỹ lưỡng để đảm bảo quá trình chuyển đổi diễn ra suôn sẻ, cũng như có khả năng rollback về phiên bản trước nếu triển khai thất bại.
- 💡 Dễ hiểu: : Này dễ nhất, thay toàn bộ hệ thống cũ bằng cái mới một lần duy nhất. Dễ gây downtime nếu có lỗi.
Rolling Deployment
- Rolling deployment là phương pháp cập nhật phần mềm theo cách từ từ, chỉ áp dụng cho một phần hệ thống hoặc một nhóm người dùng tại một thời điểm.
- Phiên bản mới được triển khai trong khi phiên bản cũ vẫn đang hoạt động.
- Phương pháp này giúp giảm rủi ro và ảnh hưởng bằng cách cho phép giám sát, thử nghiệm và xử lý sự cố theo từng bước nhỏ.
- Cập nhật theo giai đoạn mang lại trải nghiệm chuyển đổi mượt mà hơn và ít gián đoạn hơn cho toàn bộ hệ thống.
- Ví dụ như hình: có 3 pods → update lần lượt từng pod sang v2. Không update tất cả cùng lúc.
Blue Green Deployment
- Blue Green deployment là chiến lược phát hành trong đó hai môi trường giống hệt nhau, gọi là “blue” và “green”, được duy trì song song.
- Môi trường blue đại diện cho phiên bản hiện tại đang chạy trong production, còn môi trường green là bản sao nơi triển khai phiên bản mới.
- Ban đầu, lưu lượng truy cập được điều hướng đến môi trường blue.
- Khi môi trường green được kiểm thử và xác nhận thành công, lưu lượng sẽ được chuyển sang green.
- Phương pháp này cho phép triển khai không downtime, dễ dàng rollback và khôi phục nhanh chóng trong trường hợp có sự cố, vì môi trường blue vẫn còn nguyên.
- 💡 Dễ hiểu: : v1 (cũ) đang chạy. Khi deploy v2 (mới), v1 vẫn “standby”. Nếu v2 lỗi thì chuyển traffic lại về v1 ngay, không cần khởi động lại hay allocate lại tài nguyên.
Canary Deployment
- Canary deployment là chiến lược phát hành trong đó một phiên bản mới của phần mềm được triển khai cho một nhóm người dùng hoặc máy chủ nhỏ, được gọi là “canary group”.
- Nhóm này sẽ sử dụng phiên bản mới trong khi những người dùng còn lại vẫn dùng phiên bản cũ.
- Điều này cho phép kiểm thử và giám sát phiên bản mới trong môi trường thực tế, nhằm đảm bảo tính ổn định và hiệu suất.
- Nếu nhóm canary không gặp sự cố, phiên bản mới sẽ được mở rộng dần cho toàn bộ người dùng.
- Kết hợp Canary + Rolling deployment thường mang lại hiệu quả tốt nhất.
- 💡 Dễ hiểu: : Chuyển một phần user sang dùng v2 (mới), phần còn lại vẫn dùng v1 (cũ). Theo dõi lỗi từ nhóm user nhỏ trước khi rollout toàn bộ.
Feature Deployment
- Feature deployment là chiến lược phát hành trong đó một số tính năng cụ thể được triển khai cho một nhóm người dùng hoặc môi trường nhất định.
- Các tính năng mới được bật cho nhóm mục tiêu trong khi những người khác vẫn sử dụng chức năng hiện có.
- Phương pháp này cho phép phát hành theo từng bước nhỏ và thử nghiệm tính năng mới, thu thập phản hồi và xử lý lỗi trước khi phát hành diện rộng.
- Ưu điểm: linh hoạt, có thể mở rộng và dễ tinh chỉnh dựa trên phản hồi từ người dùng.
- Feature Toggle có thể được sử dụng kết hợp với bất kỳ chiến lược triển khai nào ở trên.
- Ví dụ thực tế như Facebook: bật flag để một nhóm user được dùng tính năng mới (test group), còn lại vẫn dùng bản cũ. Dễ dàng bật/tắt không cần redeploy.
Tài liệu tham khảo:
- https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/deployment-methods.html
- https://www.opsmx.com/blog/advanced-deployment-strategies-devops-methodology/
Nguồn bài viết gốc : https://harshityadav.in/posts/Deployment-Types/
This post is licensed under CC BY 4.0 by the author.