

Cập nhật phần mềm mà không gây gián đoạn hệ thống là bài toán nan giải của mọi doanh nghiệp. Vậy Blue-green deployment là gì và tại sao nó lại giúp loại bỏ nỗi lo downtime hiệu quả đến vậy? Hãy cùng VNPT Cloud tìm hiểu qua bài viết dưới đây.
Triển khai Blue-green (Blue-green deployment) là một chiến lược phát hành phần mềm trong đó hai môi trường production giống hệt nhau được vận hành đồng thời nhằm đạt được triển khai không gián đoạn dịch vụ và hỗ trợ khôi phục (rollback) nhanh chóng.
Người vận hành sẽ duy trì hai môi trường song song, được gọi là "blue" và "green". Một môi trường (blue) đóng vai trò phục vụ lưu lượng truy cập thực tế (phiên bản mà tất cả người dùng đang sử dụng hiện tại), trong khi môi trường còn lại (green) được tiến hành cập nhật.
Sau khi việc kiểm thử hoàn tất trên môi trường không hoạt động (green), toàn bộ lưu lượng truy cập thực tế sẽ được chuyển hướng sang môi trường này (thường thông qua một bộ cân bằng tải - load balancer).
Chiến lược này được phổ biến và đặt tên bởi Jez Humble và David Farley trong cuốn sách nền tảng xuất bản năm 2010 của họ, Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation.
Mặc dù cách gọi “blue-green” là phổ biến nhất, vẫn có những biến thể khác. Netflix sử dụng cách gọi “red/black”, nhưng bản chất khái niệm vẫn không thay đổi. Trong một số trường hợp, đội ngũ phát triển có thể muốn duy trì nhiều hơn hai môi trường. Cách đặt tên theo màu sắc đặc biệt hiệu quả khi cần phân biệt giữa hai môi trường, nhưng các tổ chức cũng có thể sử dụng những quy ước đặt tên khác như số phiên bản, mã bản build hoặc các tên gọi tùy chỉnh, nhất là khi có nhiều hơn hai môi trường tham gia.

Điều kiện tiên quyết quan trọng nhất của blue/green deployment là phải có hai môi trường production giống hệt nhau, cùng với một router, load balancer hoặc service mesh có khả năng chuyển lưu lượng giữa hai môi trường đó.
Quy trình blue/green deployment diễn ra như sau:
Chiến lược Blue-Green giúp giảm thiểu rủi ro gián đoạn dịch vụ trong quá trình triển khai. Đây cũng là một cách tối ưu để tận dụng tài nguyên phần cứng vốn thường chỉ dùng cho môi trường Staging (môi trường thử nghiệm). Một mô hình Blue-Green tiêu chuẩn sẽ phục vụ 3 mục đích cốt lõi:

Blue-Green Deployment là phương pháp triển khai phần mềm giúp doanh nghiệp giảm thiểu rủi ro khi phát hành phiên bản mới, đồng thời duy trì tính ổn định cho hệ thống. Dù áp dụng theo mô hình chuyển đổi toàn bộ hay kết hợp với chiến lược triển khai từng phần như canary, phương pháp này vẫn mang lại nhiều lợi ích nổi bật như:
Blue-Green Deployment giúp chuyển lưu lượng truy cập từ môi trường cũ sang môi trường mới gần như tức thời thông qua load balancer. Nhờ đó, quá trình phát hành phiên bản mới diễn ra liên tục, hạn chế tối đa gián đoạn dịch vụ. Đây là lợi thế quan trọng với các hệ thống yêu cầu tính sẵn sàng cao.
Với hai môi trường vận hành tách biệt, doanh nghiệp có thể nhanh chóng chuyển traffic trở lại phiên bản ổn định nếu môi trường mới phát sinh lỗi. Cách tiếp cận này giúp rút ngắn thời gian xử lý sự cố và giảm ảnh hưởng đến người dùng. Đồng thời, quy trình khôi phục cũng đơn giản và an toàn hơn.

Việc tách riêng môi trường blue và green giúp đội ngũ kỹ thuật dễ dàng theo dõi log, giám sát hiệu năng và đối chiếu dữ liệu giữa hai phiên bản. Điều này hỗ trợ tốt cho việc kiểm thử, phân tích hành vi hệ thống và đánh giá chất lượng sau phát hành. Nhờ đó, doanh nghiệp có thêm cơ sở để đưa ra quyết định chính xác hơn.
Môi trường green cho phép kiểm tra kỹ phiên bản mới trước khi chính thức phục vụ người dùng thực tế. Nhờ đó, doanh nghiệp có thể phát hiện sớm lỗi kỹ thuật, vấn đề tương thích hoặc rủi ro vận hành trước khi chuyển đổi hoàn toàn. Đây là yếu tố giúp Blue-Green Deployment trở thành chiến lược triển khai an toàn và hiệu quả.
Mặc dù quy trình blue-green deployment mang lại nhiều lợi ích, nhưng nó không hoàn toàn chỉ có ưu điểm. Vẫn có một số nhược điểm cần cân nhắc, trong đó đáng chú ý nhất là độ phức tạp về công cụ, quy trình phát hành và chi phí vận hành.
Việc áp dụng chiến lược blue-green deployment luôn đi kèm những đánh đổi nhất định. Dù có thể tránh được downtime, nhưng việc quản lý các tuyến định tuyến (routes) và máy chủ tích hợp liên tục (continuous integration) là một thách thức không hề nhỏ.
Khi hệ thống đang phục vụ trên môi trường blue, đường ống chuyển giao liên tục (CD Pipeline) phải đẩy mã nguồn sang môi trường Green; và sau khi chuyển đổi, quy trình này lại phải đảo chiều. Một số nền tảng có sẵn giải pháp hỗ trợ việc này, nhưng dù sử dụng nền tảng nào thì đây vẫn là yếu tố cần được tính đến.
Như đã đề cập, triển khai blue-green deployment cho phép khôi phục (rollback) an toàn nếu bản phát hành gặp sự cố. Tuy nhiên, điều đó không phải lúc nào cũng khả thi. Chẳng hạn, nếu các ứng dụng dùng chung một cơ sở dữ liệu và bản phát hành phụ thuộc vào việc thay đổi schema, thì rollback có thể không còn là lựa chọn khả dụng.
Dù vẫn có những cách để xử lý các tình huống như vậy, chúng chắc chắn phức tạp hơn so với kiểu triển khai chấp nhận downtime. Khi số lượng thành phần tham gia tăng lên, số thứ cần tự động hóa cũng nhiều hơn, và rủi ro phát sinh lỗi cũng lớn hơn. Vì vậy, đội ngũ vận hành cần đầu tư nhiều thời gian hơn vào cả bộ công cụ CI/CD lẫn năng lực triển khai để có thể kiểm soát tốt mô hình này.
Nếu duy trì đồng thời hai phiên bản của ứng dụng, đội ngũ phát triển cần cân nhắc xem phần chi phí hạ tầng bổ sung có xứng đáng với lợi ích nhận được hay không. Mỗi trường hợp sử dụng sẽ có câu trả lời khác nhau. Ví dụ, với kiến trúc microservices hoặc hệ thống có nhiều ứng dụng, chi phí có thể tăng rất nhanh. Trong tình huống đó, một phiên bản điều chỉnh của blue-green deployment có thể phù hợp hơn. Chẳng hạn, có thể chỉ giữ lại phiên bản cũ trong thời gian đánh giá bản triển khai mới, sau đó gỡ bỏ khi không còn cần thiết, nhưng vẫn đạt được lợi ích triển khai không gián đoạn.
Ngoài ra, cũng có những chiến lược khác thay thế cho mô hình blue-green deployment theo đúng nghĩa chặt chẽ, và trong một số trường hợp, chúng có thể phù hợp hơn với nhu cầu của từng đội ngũ.
Blue-Green Deployment là gì không chỉ là câu hỏi về khái niệm, mà còn là cách doanh nghiệp tiếp cận bài toán phát hành phần mềm an toàn, linh hoạt và hạn chế downtime hiệu quả. Khi được triển khai đúng cách, mô hình này giúp tăng khả năng rollback, giảm rủi ro vận hành và cải thiện tính liên tục của dịch vụ. Tuy vẫn có những yêu cầu cao về hạ tầng, quy trình và chi phí, Blue-Green Deployment vẫn là chiến lược đáng cân nhắc với các hệ thống cần độ ổn định cao.
