Triển khai theo đợt: landing zone, CI/CD và một go-live không drama
Một lần go-live lớn dồn toàn bộ rủi ro vào một đêm. Chúng tôi làm ngược lại: dựng nền tảng chuẩn, tự động hoá phát hành, rồi đưa lên từng đợt có thể quay lui.
Có một kiểu go-live diễn ra thế này: bắt đầu 22 giờ đêm thứ Bảy, một phòng họp đầy người, một danh sách việc trong đầu người trưởng nhóm, và một quyết tâm chung là “xong bằng mọi giá”. Nếu mọi thứ trơn tru thì đó là một đêm dài. Nếu không, đó là một buổi sáng Chủ nhật mà không ai biết nên tiến hay nên lùi.
Cách còn lại: coi cutover là một sự kiện có thể tập dượt, với điều kiện dừng được quyết trước khi bắt đầu. Nó không hào hùng bằng, nhưng nó lặp lại được.
Tập dượt là phần không được cắt khi thiếu thời gian
Buổi diễn tập không nhằm chứng minh mọi thứ sẽ chạy. Nó nhằm tìm ra thứ chưa ai nghĩ tới: một job cron còn trỏ về IP cũ, một secret hết hạn giữa quá trình, một bước cần quyền mà người trực đêm đó không có.
- Diễn tập trên môi trường giống production về cấu hình, không nhất thiết giống về quy mô.
- Chạy đúng runbook sẽ dùng thật, kể cả các bước nhàm chán.
- Bấm đồng hồ từng bước — con số này là căn cứ cho cửa sổ downtime cam kết với khách hàng.
- Diễn tập cả đường quay lui, không chỉ đường tiến.
Nếu lịch bị nén và phải cắt một thứ, cắt phạm vi của đợt, đừng cắt buổi diễn tập. Một đợt nhỏ hơn nhưng đã tập dượt luôn an toàn hơn một đợt đủ mà chưa ai thử.
Go/no-go: quyết định phải được chốt khi mọi người còn tỉnh
Tiêu chí go/no-go viết vào tài liệu trước ngày cutover, và người có quyền quyết phải có mặt. Đặc điểm của một tiêu chí tốt là nó trả lời được bằng “đúng” hoặc “sai”, không cần tranh luận lúc 2 giờ sáng.
- Backup mới nhất đã kiểm tra khôi phục được, không chỉ đã chạy xong.
- Đủ nhân sự theo vai trò, kèm người dự phòng cho mỗi vai trò then chốt.
- Không có sự cố P1 nào đang mở trên hệ thống liên quan.
- Kênh liên lạc và danh sách leo thang đã xác nhận hoạt động.
- Thời điểm muộn nhất được phép bắt đầu — quá mốc đó thì hoãn, không thương lượng.
Một phương án quay lui chưa từng được chạy thử thì không phải phương án quay lui. Đó là một đoạn văn.
Di chuyển dữ liệu là chỗ khó thật, không phải chỗ cài đặt
Cài đặt và cấu hình có thể tự động hoá và lặp lại. Dữ liệu thì không quay lui dễ như vậy. Ba câu cần trả lời trước: đồng bộ một chiều hay hai chiều, chấp nhận độ trễ bao nhiêu, và kiểm tra tính đúng đắn bằng cách nào.
Phần kiểm tra thường bị làm hời hợt. So sánh số bản ghi là mức tối thiểu; nó không phát hiện được lỗi sai kiểu dữ liệu, sai encoding, hay mất bản ghi ở khoảng giữa. Nên có thêm kiểm tra theo checksum trên tập mẫu và một số truy vấn nghiệp vụ đối chiếu hai bên.
72 giờ đầu quan trọng hơn đêm cutover
Hệ thống lên được không có nghĩa là đã xong. Phần lớn vấn đề thật xuất hiện khi tải thật đi qua: một truy vấn chậm chỉ lộ ra ở giờ cao điểm, một job đêm chưa ai chạy trên môi trường mới, một hạn mức bị chạm khi lượng người dùng trở lại.
- Giữ chế độ theo dõi tăng cường trong 72 giờ, với ngưỡng cảnh báo chặt hơn bình thường.
- Giữ đường quay lui còn mở đến hết mốc đã cam kết, đừng dọn dẹp môi trường cũ quá sớm.
- Có người trực rõ tên cho từng khung giờ, không phải “cả đội cùng theo dõi”.
- Ghi lại mọi thao tác chữa cháy — đây là nguyên liệu cho runbook vận hành sau này.
Cutover thành công là cutover mà sau đó không ai kể lại như một câu chuyện anh hùng. Nếu có chuyện để kể, thường là đã thiếu một buổi diễn tập.


