Mọi người chắc đã từng nghe “On-call là công bằng, chia đều thì ai cũng gánh, ai cũng học”. Nói thì dễ hơn làm rồi, thực tế là nhiều công ty setup on-call rotation thành một vòng xoay kiểu đùn đẩy, và chịu thiệt nhất là mấy ông trực NOC.
Theo tôi thì On-call chỉ hoạt động đúng nghĩa nếu người đang trực có quyền từ chối các task không khẩn cấp. Chắc ai đã từng ngồi canh hệ thống rồi mới hiểu. Team tôi chia khá rõ cũng là vận hành nhưng đội trực NOC riêng vì cũng nhiều services với với lượng người dùng kha khá.
1. On-call không phải helpdesk
Thường thì hiện tại tôi fix issue gấp lắm mới có mặt còn không thì mấy giờ sáng là các em trong team, thì gặp cảnh là đang on-call, alert chưa thấy đâu mà Slack đã ping “anh ơi deploy giúp em cái hotfix này”, “có anh nào add thêm giúp em user này vào group IAM nhé ạ”, “team vận hành check log giùm em service … với.”
Mấy cái đó không phải incident, mà là yêu cầu vận hành bình thường. Nhưng vì engineer đang trực, nên người ta mặc định: tiện tay thì làm luôn. Và thế là on-call biến thành helpdesk 24/7 =)))
2. Tách bạch “khẩn cấp” với “không khẩn cấp”
On-call phải chỉ xử lý những gì ảnh hưởng production ngay lập tức:
- Hệ thống sập
- Latency vượt SLA
- Data loss có nguy cơ xảy ra
- Security incident
Còn lại, tất cả đều nên chuyển thành ticket, đưa vào backlog, xử lý giờ hành chính. Nếu không, kỹ sư trực sẽ bị ngốn sức cho những việc không đáng, mà khi sự cố thật sự xảy ra thì họ đã mệt rũ rời (xót thay mấy ông em…)
3. On-call cần quyền lực, không chỉ là trách nhiệm
Nhiều nơi on-call là “công việc không được từ chối”. Nhưng một on-call engineer phải có quyền nói không với những task không critical. Nếu không có quyền này, rotation chỉ là cách chia mệt mỏi ra cho nhiều người, chứ không tạo ra độ tin cậy thật sự.
4. Trải nghiệm của tôi và anh em
Sau vài lần bị abuse, team tôi đưa ra rule:
- On-call chỉ xử lý alert Sev1, Sev2.
- Sev3 trở xuống tạo ticket.
- Task vận hành bình thường thì assign sang backlog.
Từ đó, on-call rotation mới “sống” được. Người trực không còn cảm giác làm helpdesk, còn team dev cũng học được cách phân loại issue đúng mức, cái này tôi đánh giá cực kỳ quan trọng, không là bào sức khỏe lắm =))).
Chắc vậy thôi
On-call không chỉ là chuyện chia ca, mà là cách tổ chức quyền hạn và trách nhiệm. Muốn rotation bền vững, mọi người cần hiểu:
On-call là để giữ hệ thống sống, không phải để làm mọi việc vặt phát sinh.
Nếu người trực không có quyền từ chối task không khẩn cấp, thì gọi gì cũng được nhưng đó không phải on-call đúng nghĩa.