Deployment zero-downtime nghĩa là phát hành phiên bản mới mà không gián đoạn người dùng — ứng dụng luôn sẵn sàng suốt quá trình. Đạt được điều này đòi hỏi chiến lược deploy cẩn thận, thay đổi tương thích ngược, health check và xử lý nhẹ nhàng các request đang dở.
Zero-downtime đòi hỏi gì
MỤC TIÊU: deploy phiên bản mới mà KHÔNG có downtime với người dùng (dịch vụ luôn sẵn sàng):
→ không bao giờ đưa toàn bộ dịch vụ offline để deploy
→ luôn có instance khoẻ mạnh phục vụ trong khi cập nhật những cái khác
→ xử lý nhẹ nhàng request đang dở (đừng làm rớt giữa chừng)
→ Kết hợp nhiều kỹ thuật (bên dưới).
Các kỹ thuật chính
✓ CHIẾN LƯỢC DEPLOY — rolling, blue-green, hoặc canary (không bao giờ downtime all-at-once):
→ rolling: cập nhật instance dần dần (các cái khác vẫn phục vụ)
→ blue-green: chuyển traffic sang môi trường mới ngay lập tức
✓ LOAD BALANCER + HEALTH CHECK → chỉ route traffic tới instance khoẻ/sẵn sàng;
instance mới chỉ tham gia khi đã SẴN SÀNG (readiness check)
✓ GRACEFUL SHUTDOWN → draining: ngừng gửi request mới tới instance, để nó HOÀN THÀNH
request đang dở, RỒI mới dừng (xử lý SIGTERM) → không rớt request
✓ Thay đổi TƯƠNG THÍCH NGƯỢC → phiên bản cũ và mới cùng tồn tại trong lúc rollout
(tương thích API và DATABASE — migration expand-contract)
