<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kubernetes on </title>
    <link>/tags/kubernetes/</link>
    <description>Recent content in Kubernetes on </description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 30 Aug 2026 10:00:00 +0700</lastBuildDate><atom:link href="/tags/kubernetes/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Zero-Downtime Deployment: Rolling vs Blue/Green vs Canary</title>
      <link>/posts/zero-downtime-deployment/</link>
      <pubDate>Sun, 30 Aug 2026 10:00:00 +0700</pubDate>
      
      <guid>/posts/zero-downtime-deployment/</guid>
      <description>Deploy xong mà service down vài giây thôi cũng đủ để user complain và on-call bị gọi dậy lúc nửa đêm 😩. Dưới đây là 3 chiến lược phổ biến nhất để release mà không ai nhận ra có chuyện gì vừa xảy ra.
🔵 Rolling Update Thay dần từng pod/instance cũ bằng bản mới, theo từng batch nhỏ.
 ✅ Không cần thêm hạ tầng, tiết kiệm chi phí ✅ Default strategy của Kubernetes Deployment ⚠️ Trong lúc rollout, cả 2 version cùng chạy song song → cẩn thận breaking change ở API/schema ⚠️ Rollback không tức thời, phải rolling ngược lại  Phù hợp: hầu hết workload nội bộ, ít rủi ro về schema.</description>
      <content>&lt;p&gt;Deploy xong mà service down vài giây thôi cũng đủ để user complain và on-call bị gọi dậy lúc nửa đêm 😩. Dưới đây là 3 chiến lược phổ biến nhất để release mà không ai nhận ra có chuyện gì vừa xảy ra.&lt;/p&gt;
&lt;h2 id=&#34;-rolling-update&#34;&gt;🔵 Rolling Update&lt;/h2&gt;
&lt;p&gt;Thay dần từng pod/instance cũ bằng bản mới, theo từng batch nhỏ.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ Không cần thêm hạ tầng, tiết kiệm chi phí&lt;/li&gt;
&lt;li&gt;✅ Default strategy của Kubernetes Deployment&lt;/li&gt;
&lt;li&gt;⚠️ Trong lúc rollout, cả 2 version cùng chạy song song → cẩn thận breaking change ở API/schema&lt;/li&gt;
&lt;li&gt;⚠️ Rollback không tức thời, phải rolling ngược lại&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Phù hợp: hầu hết workload nội bộ, ít rủi ro về schema.&lt;/p&gt;
&lt;h2 id=&#34;-bluegreen&#34;&gt;🟢 Blue/Green&lt;/h2&gt;
&lt;p&gt;Dựng song song 2 môi trường (Blue = đang chạy, Green = bản mới), test kỹ Green rồi chuyển toàn bộ traffic sang trong một phát.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ Rollback tức thì: trỏ traffic ngược lại Blue&lt;/li&gt;
&lt;li&gt;✅ Không có trạng thái &amp;ldquo;nửa cũ nửa mới&amp;rdquo;&lt;/li&gt;
&lt;li&gt;⚠️ Tốn gấp đôi tài nguyên trong lúc chuyển đổi&lt;/li&gt;
&lt;li&gt;⚠️ Cần layer routing/load balancer switch được nhanh (DNS, ALB, Service selector&amp;hellip;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Phù hợp: hệ thống critical, cần rollback nhanh và chắc chắn.&lt;/p&gt;
&lt;h2 id=&#34;-canary&#34;&gt;🟠 Canary&lt;/h2&gt;
&lt;p&gt;Đẩy bản mới cho một nhóm nhỏ traffic (1% → 10% → 50% → 100%), theo dõi metrics/error rate trước khi tăng dần.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ Giảm blast radius nếu bản mới có bug&lt;/li&gt;
&lt;li&gt;✅ Kết hợp tốt với observability (Prometheus, Datadog&amp;hellip;) để auto rollback theo threshold&lt;/li&gt;
&lt;li&gt;⚠️ Cần service mesh hoặc ingress hỗ trợ traffic splitting (Istio, Argo Rollouts, Flagger)&lt;/li&gt;
&lt;li&gt;⚠️ Phức tạp hơn để setup và debug&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Phù hợp: hệ thống lớn, thay đổi rủi ro cao, có sẵn observability tốt.&lt;/p&gt;
&lt;h2 id=&#34;chọn-cái-nào&#34;&gt;Chọn cái nào?&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tiêu chí&lt;/th&gt;
&lt;th&gt;Rolling&lt;/th&gt;
&lt;th&gt;Blue/Green&lt;/th&gt;
&lt;th&gt;Canary&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chi phí hạ tầng&lt;/td&gt;
&lt;td&gt;Thấp&lt;/td&gt;
&lt;td&gt;Cao (tạm thời)&lt;/td&gt;
&lt;td&gt;Trung bình&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tốc độ rollback&lt;/td&gt;
&lt;td&gt;Chậm&lt;/td&gt;
&lt;td&gt;Tức thì&lt;/td&gt;
&lt;td&gt;Nhanh (giảm % traffic)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Độ phức tạp&lt;/td&gt;
&lt;td&gt;Thấp&lt;/td&gt;
&lt;td&gt;Trung bình&lt;/td&gt;
&lt;td&gt;Cao&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rủi ro khi lỗi&lt;/td&gt;
&lt;td&gt;Trung bình&lt;/td&gt;
&lt;td&gt;Thấp&lt;/td&gt;
&lt;td&gt;Rất thấp&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Không có strategy nào &amp;ldquo;đúng nhất&amp;rdquo; — chọn theo mức độ chấp nhận rủi ro và hạ tầng hiện có. Nhiều team production thực ra kết hợp cả 3: Rolling cho service phụ, Blue/Green cho service critical, Canary cho những thay đổi lớn ở core service 🚀.&lt;/p&gt;
</content>
    </item>
    
  </channel>
</rss>
