<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Infrastructure on Huy Vũ</title><link>https://vuvtdhh.pages.dev/categories/infrastructure/</link><description>Recent content in Infrastructure on Huy Vũ</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><copyright>Huy Vũ</copyright><lastBuildDate>Sun, 26 Apr 2026 14:45:00 +0700</lastBuildDate><atom:link href="https://vuvtdhh.pages.dev/categories/infrastructure/index.xml" rel="self" type="application/rss+xml"/><item><title>Zero-downtime với chiến lược Blue-Green Deployment</title><link>https://vuvtdhh.pages.dev/p/zero-downtime-v%E1%BB%9Bi-chi%E1%BA%BFn-l%C6%B0%E1%BB%A3c-blue-green-deployment/</link><pubDate>Sun, 26 Apr 2026 14:45:00 +0700</pubDate><guid>https://vuvtdhh.pages.dev/p/zero-downtime-v%E1%BB%9Bi-chi%E1%BA%BFn-l%C6%B0%E1%BB%A3c-blue-green-deployment/</guid><description>&lt;p&gt;Hầu hết các trang web và ứng dụng hiện đại đều cần hoạt động liên tục.&lt;br&gt;
Tuy nhiên, trên thực tế, để cập nhật phiên bản hoặc sửa lỗi, đội ngũ vận hành cần một khoảng thời gian nhất định để thực hiện một số công việc như ghi đè artifact, database migration, health check,&amp;hellip;&lt;br&gt;
Trong thời gian này, hệ thống sẽ tạm ngưng hoạt động, dẫn đến việc gián đoạn truy cập của người dùng. Ngoài ra, việc ngắt kết nối có thể gây thất thoát dữ liệu do mất đồng bộ với các hệ thống bên thứ ba hoặc làm đứt gãy quy trình nghiệp vụ trong kiến trúc microservices.&lt;/p&gt;
&lt;p&gt;Để giải quyết vấn đề này, chúng ta cần một chiến lược triển khai đảm bảo không gián đoạn. Có nhiều chiến lược triển khai không gián đoạn, trong đó &lt;strong&gt;blue-green deployment&lt;/strong&gt; là một trong những chiến lược phổ biến.&lt;/p&gt;
&lt;h2 id="cơ-chế-hoạt-động-của-blue-green-deployment"&gt;Cơ chế hoạt động của Blue-Green Deployment
&lt;/h2&gt;&lt;p&gt;Về cơ bản, chiến lược này duy trì hai môi trường song song:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Blue (Live): Môi trường hiện tại đang tiếp nhận và xử lý các yêu cầu (traffic/requests) thực tế.&lt;/li&gt;
&lt;li&gt;Green (Idle): Môi trường dự phòng, nơi phiên bản mới được triển khai và kiểm soát chất lượng (QA/Staging) trước khi chính thức tiếp nhận traffic.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="quy-trình-triển-khai-tiêu-chuẩn"&gt;Quy trình triển khai tiêu chuẩn:
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Deploy&lt;/strong&gt;: Đưa code mới lên môi trường &lt;strong&gt;Green&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verify&lt;/strong&gt;: Thực hiện smoke test, kiểm tra các endpoint để đảm bảo dịch vụ hoạt động ổn định trong môi trường cô lập.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Swap&lt;/strong&gt;: Điều hướng lưu lượng truy cập (traffic) từ Blue sang Green thông qua bộ chuyển mạch (Router/Load Balancer/Gateway).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitor &amp;amp; Rollback&lt;/strong&gt;: Theo dõi log và chỉ số hệ thống. Nếu có bất kỳ sự cố nào, chỉ cần chuyển mạch ngược lại về Blue ngay lập tức.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://vuvtdhh.pages.dev/p/zero-downtime-v%E1%BB%9Bi-chi%E1%BA%BFn-l%C6%B0%E1%BB%A3c-blue-green-deployment/Blue-green-deployment.jpg"
width="2816"
height="1536"
loading="lazy"
alt="Nguyên lý triển khai Blue-Green Deployment"
class="gallery-image"
data-flex-grow="183"
data-flex-basis="440px"
&gt;&lt;/p&gt;
&lt;h2 id="triển-khai-thực-tế-trên-iis-internet-information-services"&gt;Triển khai thực tế trên IIS (Internet Information Services)
&lt;/h2&gt;&lt;p&gt;Dù IIS không có sẵn &amp;ldquo;Blue-Green&amp;rdquo;, chúng ta hoàn toàn có thể thiết lập kiến trúc này bằng cách kết hợp bộ ba công cụ mạnh mẽ: &lt;strong&gt;Application Request Routing (ARR)&lt;/strong&gt;, &lt;strong&gt;URL Rewrite&lt;/strong&gt;, và &lt;strong&gt;Server Farm&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Vai trò của các thành phần:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gateway Site (Tầng 1)&lt;/strong&gt;: Đây là site duy nhất công khai ra Internet (cổng 80/443). Site này không chứa code ứng dụng, chỉ chứa file web.config để cấu hình điều hướng.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Server Farm (Tầng 2)&lt;/strong&gt;: Đối tượng quản lý danh sách các server hoặc cổng (port) của Blue và Green. Tại đây, chúng ta có thể bật/tắt các node để điều phối traffic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Application Sites (Tầng 3)&lt;/strong&gt;: Các instance thực tế chạy code ứng dụng (ví dụ: Blue chạy port 8081, Green chạy port 8082).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://vuvtdhh.pages.dev/p/zero-downtime-v%E1%BB%9Bi-chi%E1%BA%BFn-l%C6%B0%E1%BB%A3c-blue-green-deployment/Blue-green-deployment-iis.jpg"
width="2816"
height="1536"
loading="lazy"
alt="Kiến trúc triển khai Blue-Green Deployment trên IIS"
class="gallery-image"
data-flex-grow="183"
data-flex-basis="440px"
&gt;&lt;/p&gt;
&lt;h3 id="ưu-điểm-của-mô-hình-này"&gt;Ưu điểm của mô hình này:
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zero-Downtime&lt;/strong&gt;: Đảm bảo không gián đoạn truy cập cho người dùng cuối và các upstream services trong hệ thống.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tính cô lập (Isolation)&lt;/strong&gt;: Việc triển khai và kiểm thử trên môi trường Green hoàn toàn không ảnh hưởng đến tiến trình đang chạy của Blue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An toàn tuyệt đối&lt;/strong&gt;: Luôn có bản dự phòng sẵn sàng để Rollback tức thì nếu phiên bản mới gặp lỗi logic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kiểm soát tập trung&lt;/strong&gt;: Mọi hành động &amp;ldquo;Swap&amp;rdquo; chỉ diễn ra ở tầng Gateway, giúp giảm thiểu rủi ro vận hành.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Khả năng mở rộng&lt;/strong&gt;: Dễ dàng tích hợp thêm các node mới vào Server Farm khi nhu cầu tải tăng cao.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Lưu ý quan trọng&lt;/strong&gt;: Khi triển khai Blue-Green, hãy đảm bảo cơ sở dữ liệu (Shared Database) của bạn có thiết kế tương thích ngược (backward compatibility) để cả hai phiên bản cũ và mới đều có thể hoạt động ổn định trong thời điểm chuyển giao. Nếu cần thiết, phải triển khai thêm chiến lược &lt;strong&gt;Expand and Contract (Parallel Change)&lt;/strong&gt; để đảm bảo tính nhất quán của dữ liệu khi schema có sự thay đổi.&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>