Advancing Our Chef Infrastructure: Safety Without Disruption
Bài tóm tắt Slack 2025 3. Quy mô lớn Độ khó: Trung bình
Slack · 2025 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Phần 2 của chuỗi ba bài: phần 1 Slack 2024 · phần 3 Slack 2026.
Bối cảnh
- Đã cân nhắc chuyển sang Chef Policyfiles (an toàn hơn về lâu dài) nhưng phải thay role/environment và bắt hàng chục team sửa cookbook: rủi ro ngắn hạn lớn hơn lợi ích. Họ chọn cải thiện khung hiện có mà không động tới cookbook và role.
- Trước đó mỗi instance có cron chạy Chef vài giờ một lần (để giữ cấu hình đúng), giờ chạy lệch nhau theo AZ để không chạy cùng lúc. Nhưng với một môi trường prod dùng chung, mọi node mới dựng sẽ lấy ngay thay đổi mới nhất (có thể hỏng): nguy hiểm nhất lúc scale-out hàng trăm node.
Thay đổi chính
- Tách prod thành
prod-1…prod-6, gán theo AZ ID lúc boot (công cụPoptart Bootstraptrong AMI chạy qua cloud-init). Team vẫn khai báo "prod"; đổi một môi trường chỉ ảnh hưởng node trong các AZ đó. - Lịch promote: đầu giờ đẩy lên sandbox và dev; từ phút 30,
prod-1là canary nhận phiên bản mới nhất mỗi giờ (để lỗi lộ ra gần lúc được đưa vào, với thay đổi nhỏ);prod-2→prod-6đi theo release train: phiên bản mới chỉ vàoprod-2khi phiên bản trước đã đi hết tớiprod-6. Thay đổi tới hết prod chậm hơn, đổi lại có thời gian giữa các AZ để bắt lỗi; một AZ hỏng thì vẫn scale an toàn ở AZ khác. - Bỏ cron, chạy Chef theo tín hiệu: vì mỗi môi trường nhận phiên bản vào lúc không đoán trước được, Chef Librarian ghi một object vào S3 mỗi khi promote (theo stack và môi trường, kèm tham số như
Splayđể rải thời điểm); một dịch vụ mới kích Chef trên node chỉ khi có cập nhật thật.
Vì sao
- Máy mới dựng là đường lan lỗi nhanh nhất vì chúng lấy cấu hình mới nhất ngay; chia môi trường theo AZ biến AZ thành vách ngăn cho cả thay đổi cấu hình (Deploy và release an toàn).
- Chạy theo lịch đoán giờ không còn hợp khi thời điểm cập nhật thay đổi; chờ tín hiệu thật (Tự động hoá vận hành và auto-remediation).
Bài học cho SWE
- Canary nên nhận thay đổi nhỏ và thường xuyên; các tầng sau đi theo train để cách nhau đủ lâu.
- Ánh xạ "môi trường" ngầm theo AZ cho phép tăng an toàn mà không bắt team đổi gì.
- Khi không đoán được lúc có thay đổi, chạy theo tín hiệu thay vì cron.
Liên quan
#Chef#Split prod environments#Availability Zone#Canary environment#Release train#Signal-based runs#S3 trigger#Splay#Blast radius
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (3)