Database migration (thay đổi schema) là một trong những phần khó nhất của CI/CD — khác với code ứng dụng vốn stateless, database giữ trạng thái (state) không thể thay thế hay rollback một cách đơn giản. Xử lý migration cẩn thận (tự động hoá, tương thích ngược, các pattern an toàn) là điều thiết yếu để triển khai đáng tin cậy.
Vì sao database migration lại khó
Code ứng dụng là stateless (thay thế, rollback thoải mái). DATABASE giữ STATE:
→ không thể chỉ "rollback" một migration đã xoá cột hay biến đổi dữ liệu
(dữ liệu có thể đã mất) → rollback rủi ro/bất khả thi với thay đổi mang tính phá huỷ
→ trong lúc deploy, code CŨ và MỚI có thể chạy ĐỒNG THỜI (rolling deploy) —
cả hai phải hoạt động được với schema database tại thời điểm đó
→ Thay đổi schema cần phối hợp cẩn thận với việc deploy code.
