DDevArchive
Đăng nhập

Incident Response: khi hệ thống cháy, làm gì trước?

Hệ thống sẽ cháy — không phải "nếu" mà là "khi nào". Khác biệt giữa junior và senior không phải ai viết code không lỗi, mà ai xử lý sự cố nhanh, đúng quy trình, và rút kinh nghiệm.

Quy trình xử lý sự cố

BướcHành độngThời gian mục tiêu
1. Phát hiệnAlert hoặc user báo lỗi< 5 phút
2. Đánh giáSeverity? Ảnh hưởng bao nhiêu user?< 10 phút
3. Thông báoBáo team, stakeholder, status page< 15 phút
4. Khoanh vùngTìm service/component lỗi< 30 phút
5. Xử lýRollback, hotfix, restartTuỳ mức độ
6. PostmortemViết báo cáo, rút kinh nghiệm, tạo action item< 48 giờ

Rollback: vũ khí số 1

Khi sự cố xảy ra ngay sau deploy, rollback là cách nhanh nhất để phục hồi. Tag mỗi release bằng git tag v1.2.0 và Docker tag. Rollback = deploy lại bản cũ, mất < 2 phút.

// File: rollback.sh
# Tag trước mỗi release
git tag v1.2.0
docker tag myapp:latest myapp:v1.2.0

# Khi cần rollback
docker stop myapp
docker run -d --name myapp myapp:v1.1.0  # quay lại bản cũ

# Hoặc với Railway/Render
# Vào dashboard → Deployments → Redeploy bản trước

Postmortem: không đổ lỗi, chỉ tìm nguyên nhân gốc

Postmortem không phải để trách ai, mà để hệ thống không lặp lại lỗi. Format: (1) Timeline chính xác, (2) Root cause, (3) Impact, (4) What went well, (5) What can be improved, (6) Action items có người và deadline.

💡 Blameless culture

Văn hoá “không đổ lỗi” khuyến khích mọi người thật thà chia sẻ sai lầm. Nếu mọi người sợ bị phạt, họ giấu thông tin → lần sau lặp lại. Senior tạo không gian an toàn để team học từ sự cố.

❓ Hành động đầu tiên khi phát hiện sự cố production nên là gì?

  • Thuộc 6 bước xử lý sự cố
  • Chuẩn bị rollback nhanh trước mỗi deploy
  • Viết postmortem blameless
  • Tạo action items có người và deadline