[{"data":1,"prerenderedAt":271},["ShallowReactive",2],{"news-item-\u002Fvi\u002Fnews\u002Fblue-green-deployment":3},{"id":4,"title":5,"body":6,"category":258,"created by":260,"date":261,"description":12,"extension":262,"meta":263,"navigation":264,"path":265,"sections":266,"seo":267,"stem":268,"thumbnail":269,"__hash__":270},"content_vi\u002Fvi\u002Fnews\u002Fblue-green-deployment.md","BLUE\u002FGREEN DEPLOYMENT",{"type":7,"value":8,"toc":250},"minimark",[9,13,16,29,32,35,40,43,57,60,83,86,89,103,107,110,113,116,151,155,158,178,182,187,201,205,219,224,232,238,244],[10,11,12],"p",{},"Chào các bạn, hôm bữa leader của mình có giao cho một task, mình nghe xong là thấy trầm cảm nhẹ: “Em ơi, chuẩn bị phát hành phiên bản mới của ứng dụng A trên production rồi đó, em giúp chị triển khai nhé!”",[10,14,15],{},"Ứng dụng đang chạy trên production mà đụng vào là mình thấy toát mồ hôi lạnh. Mình bắt đầu mường tượng ra một viễn cảnh không mấy tươi sáng:",[17,18,20,23,26],"div",{"style":19},"margin-left: 24px;",[10,21,22],{},"1. Downtime rất lâu dẫn đến người dùng không truy cập được.",[10,24,25],{},"2. Deploy lỗi, service crash thì sao? Backup restore lại à? Mất bao lâu?",[10,27,28],{},"3. Trường hợp tệ hơn là không thể rollback, mất dữ liệu thì... chắc mình xách balo đi xa luôn quá.",[10,30,31],{},"Mồ hôi hột bắt đầu tuôn ra. Mình bắt đầu lục tung Google với những từ khóa như “how to deploy without downtime”, “zero downtime deployment”... và rồi vấp phải một khái niệm nghe khá thú vị đó là “Blue\u002FGreen Deployment”.",[10,33,34],{},"Ban đầu đọc cũng rối, nhưng sau một hồi thì bất chợt nhận ra… đây chính là thứ mình đang tìm! Hôm nay, mình muốn chia sẻ chiếc “phao cứu sinh” này với các bạn.",[36,37,39],"h3",{"id":38},"_1-bluegreen-deployment-là-gì","1. Blue\u002FGreen Deployment là gì?",[10,41,42],{},"Trước khi tìm hiểu về Blue\u002FGreen, mình và các bạn hãy xem lại cách triển khai một ứng dụng truyền thống sẽ như thế nào nhé! Giả sử, chúng ta chỉ có một môi trường production duy nhất, mỗi khi muốn deploy ứng dụng, quy trình thường diễn ra như sau:",[17,44,45,48,51,54],{"style":19},[10,46,47],{},"1. Thông báo thời gian bảo trì đến người dùng và gửi lời xin lỗi.",[10,49,50],{},"2. Đúng giờ đã thông báo, tắt server. Toàn bộ người dùng bị ngắt kết nối và nhìn thấy lỗi “503“ hoặc thông báo “Đang bảo trì“ trên màn hình.",[10,52,53],{},"3. Đội ngũ phát triển vội vàng thực hiện quá trình deploy ứng dụng.",[10,55,56],{},"4. Khởi động lại server và hy vọng mọi thứ hoạt động ổn định, không phát sinh lỗi.",[10,58,59],{},"Cách làm truyền thống này sẽ gây ra khá nhiều vấn đề:",[61,62,63,71,77],"ul",{},[64,65,66,70],"li",{},[67,68,69],"strong",{},"Downtime chắc chắn xảy ra:"," Người dùng sẽ không thể truy cập hệ thống. Với các hệ thống e-commerce hay tài chính, nếu xảy ra downtime đồng nghĩa với việc mất tiền.",[64,72,73,76],{},[67,74,75],{},"Rủi ro lỗi cao:"," Nếu có bug (ví dụ như lỗi logic thanh toán), người dùng sẽ là người chịu ảnh hưởng trực tiếp.",[64,78,79,82],{},[67,80,81],{},"Khó khăn khi rollback:"," Khi server gặp sự cố và cần khôi phục về phiên bản trước, bạn phải thực hiện lại toàn bộ quy trình triển khai, đồng nghĩa với việc hệ thống sẽ phải chịu thêm một lần downtime nữa.",[10,84,85],{},"Để giải quyết những vấn đề ở trên, Blue\u002FGreen Deployment ra đời như một giải pháp tối ưu. Nói một cách đơn giản và dễ hiểu, đây là phương pháp triển khai phần mềm giúp giảm thiểu downtime và rủi ro bằng cách sử dụng hai môi trường production song song, có cấu hình giống hệt nhau được gọi là “Blue” và “Green”.",[10,87,88],{},"Trong đó:",[61,90,91,97],{},[64,92,93,96],{},[67,94,95],{},"Môi trường Blue:"," Là môi trường chạy “live”, đang phục vụ người dùng thật. Đây là phiên bản ổn định hiện tại.",[64,98,99,102],{},[67,100,101],{},"Môi trường Green:"," Là môi trường “clone” của Blue. Đây là nơi triển khai phiên bản mới của ứng dụng và thực hiện các kịch bản kiểm thử mà không làm ảnh hưởng đến môi trường Blue.",[36,104,106],{"id":105},"_2-bluegreen-deployment-hoạt-động-như-thế-nào","2. Blue\u002FGreen Deployment hoạt động như thế nào?",[10,108,109],{},"Về cơ bản, Blue\u002FGreen Deployment hoạt động dựa trên việc triển khai song song hai môi trường giống hệt nhau nhằm giảm thiểu thời gian gián đoạn dịch vụ. Phương pháp này sao chép toàn bộ môi trường đang chạy “live”, bao gồm máy chủ, máy ảo, container, cấu hình và database, để tạo ra một môi trường riêng biệt nhưng hoàn toàn tương đồng với môi trường hiện tại.",[10,111,112],{},"Tuy nhiên, Blue\u002FGreen Deployment thường không yêu cầu phải nhân bản toàn bộ hệ thống, đặc biệt là đối với database, việc đồng bộ dữ liệu giữa hai database là điều rất khó. Thay vào đó, các thành phần dùng chung như database thường được chia sẻ giữa hai môi trường, giúp giảm chi phí và độ phức tạp, miễn là các thay đổi được quản lý cẩn thận để tránh gây gián đoạn dịch vụ.",[10,114,115],{},"Quy trình triển khai theo mô hình Blue\u002FGreen diễn ra như sau:",[17,117,118,121,130,133,137,140,144,147],{"style":19},[10,119,120],{},"1. Ban đầu, người dùng sẽ sử dụng phiên bản hiện tại đang chạy trên môi trường Blue.",[122,123],"img",{"className":124,"alt":127,"src":128,"style":129},[125,126],"block","mx-auto","","https:\u002F\u002Fhomepage-media.s3.ap-southeast-1.amazonaws.com\u002Fwp-content\u002Fuploads\u002F2026\u002F07\u002F22100500\u002Fimage2.png","width: 100%;",[10,131,132],{},"2. Sau đó chúng ta sẽ triển khai phiên bản mới trên môi trường Green bằng cách tạo một bản sao từ Blue.",[122,134],{"className":135,"alt":127,"src":136,"style":129},[125,126],"https:\u002F\u002Fhomepage-media.s3.ap-southeast-1.amazonaws.com\u002Fwp-content\u002Fuploads\u002F2026\u002F07\u002F22100500\u002Fimage1.png",[10,138,139],{},"3. Khi môi trường Green hoạt động ổn định, chỉ cần chuyển hướng Router hoặc Load Balancer sang Green, quá trình này giúp giảm downtime gần như bằng 0. Sau khi chuyển đổi, Green chính thức trở thành môi trường “live”, còn Blue giữ vai trò dự phòng, sẵn sàng được kích hoạt lại nếu cần rollback khi phát sinh sự cố.",[122,141],{"className":142,"alt":127,"src":143,"style":129},[125,126],"https:\u002F\u002Fhomepage-media.s3.ap-southeast-1.amazonaws.com\u002Fwp-content\u002Fuploads\u002F2026\u002F07\u002F22100500\u002Fimage5.png",[10,145,146],{},"4. Sau một thời gian quan sát và xác nhận rằng Green hoạt động ổn định, bạn có thể giữ lại môi trường Blue như một bản sao lưu cho lần triển khai tiếp theo, hoặc loại bỏ hoàn toàn để giảm chi phí vận hành và giải phóng tài nguyên hạ tầng.",[122,148],{"className":149,"alt":127,"src":150,"style":129},[125,126],"https:\u002F\u002Fhomepage-media.s3.ap-southeast-1.amazonaws.com\u002Fwp-content\u002Fuploads\u002F2026\u002F07\u002F22100500\u002Fimage4.png",[36,152,154],{"id":153},"_3-ứng-dụng-của-bluegreen-deployment","3. Ứng dụng của Blue\u002FGreen Deployment",[10,156,157],{},"Blue\u002FGreen Deployment không chỉ là giải pháp an toàn để triển khai phiên bản mới mà còn phù hợp cho nhiều kịch bản vận hành quan trọng:",[61,159,160,166,172],{},[64,161,162,165],{},[67,163,164],{},"Phát hành phiên bản ứng dụng:"," Đây là ứng dụng phổ biến nhất, dùng để triển khai các phiên bản (releases) mới của ứng dụng Web, API, hoặc Microservices. Phiên bản mới cho phép thực hiện kiểm thử đầy đủ trên một bản sao của production trước khi traffic được chuyển qua.",[64,167,168,171],{},[67,169,170],{},"Nâng cấp hạ tầng:"," Blue\u002FGreen cho phép thay đổi các thành phần hạ tầng cơ bản một cách an toàn. Thay vì vá lỗi hoặc nâng cấp trực tiếp trên môi trường đang chạy production.",[64,173,174,177],{},[67,175,176],{},"Quản lý Database:"," Đây thường là phần khó nhất trong quy trình triển khai. Blue\u002FGreen đòi hỏi một chiến lược migration phù hợp để đảm bảo tính tương thích ngược: môi trường Green phải chạy được với schema cũ, và môi trường Blue cũng phải chịu được schema mới trong trường hợp rollback. Tin vui là nhiều nền tảng cloud, như AWS RDS, hiện đã hỗ trợ cơ chế Blue\u002FGreen cho cả việc nâng cấp phiên bản database (ví dụ: MySQL 5.7 → 8.0).",[36,179,181],{"id":180},"_4-ưu-điểm-và-nhược-điểm-của-bluegreen-deployment","4. Ưu điểm và nhược điểm của Blue\u002FGreen Deployment",[183,184,186],"h4",{"id":185},"_41-ưu-điểm","4.1. Ưu điểm",[61,188,189,195],{},[64,190,191,194],{},[67,192,193],{},"Giảm thiểu downtime:"," Bạn có thể triển triển khai các nâng cấp mà không làm gián đoạn dịch vụ. Người dùng không bị ảnh hưởng nhờ việc chuyển hướng traffic qua Load Balancer hoặc DNS.",[64,196,197,200],{},[67,198,199],{},"Rollback nhanh và an toàn:"," Nếu phát hiện lỗi ở môi trường mới, bạn chỉ cần chuyển lại traffic về môi trường cũ (Blue) ngay lập tức.",[183,202,204],{"id":203},"_42-nhược-điểm","4.2. Nhược điểm",[61,206,207,213],{},[64,208,209,212],{},[67,210,211],{},"Chi phí hạ tầng cao:"," Cần duy trì hai môi trường có cấu hình tương đương, dẫn đến nhân đôi chi phí tài nguyên (server, database).",[64,214,215,218],{},[67,216,217],{},"Phức tạp trong quản lý database:"," Database thường được chia sẻ, khó tách biệt. Khi thay đổi schema lớn, ứng dụng phiên bản mới phải được thiết kế tương thích ngược.",[10,220,221],{},[67,222,223],{},"Tài liệu tham khảo",[10,225,226],{},[227,228,229],"a",{"href":229,"rel":230},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fwhitepapers\u002Flatest\u002Fblue-green-deployments\u002Fintroduction.html",[231],"nofollow",[10,233,234],{},[227,235,236],{"href":236,"rel":237},"https:\u002F\u002Fwww.blazemeter.com\u002Fblog\u002Fblue-green-deployment-testing",[231],[10,239,240],{},[227,241,242],{"href":242,"rel":243},"https:\u002F\u002Fmartinfowler.com\u002Fbliki\u002FBlueGreenDeployment.html",[231],[10,245,246],{},[227,247,248],{"href":248,"rel":249},"https:\u002F\u002Fdocs.aws.amazon.com\u002FAmazonRDS\u002Flatest\u002FUserGuide\u002Fblue-green-deployments-overview.html",[231],{"title":127,"searchDepth":251,"depth":251,"links":252},2,[253,255,256,257],{"id":38,"depth":254,"text":39},3,{"id":105,"depth":254,"text":106},{"id":153,"depth":254,"text":154},{"id":180,"depth":254,"text":181},[259],"tech talk","DUC LE TRI","2026-07-22","md",{},true,"\u002Fvi\u002Fnews\u002Fblue-green-deployment",null,{"title":5,"description":12},"vi\u002Fnews\u002Fblue-green-deployment","https:\u002F\u002Fhomepage-media.s3.ap-southeast-1.amazonaws.com\u002Fwp-content\u002Fuploads\u002F2026\u002F07\u002F22100500\u002Fimage3.png","JNbcV-OFaF6xp8E5TLkUseklIWna8slIgY6Mje7THXE",1784703332149]