Project STAR*: Streamlining Our On-Call Process

Bài tóm tắt LinkedIn 2018 3. Quy mô lớn Độ khó: Dễ

LinkedIn · 2018 · 3. Quy mô lớn · Độ khó: Dễ — bài gốc

Bối cảnh

  • Voyager On-Call: lịch trực cho app flagship (web, Android, iOS, frontend API). Người trực lo site chạy và giữ cho trunk và pipeline deploy khoẻ. Mỗi tuần một nhóm mới: một engineer mỗi nền tảng, kèm người của Productivity, SRE và một manager điều phối.
  • Quy mô: hơn 600 engineer, 10.434 commit trong Q4/2017.
  • Khảo sát 2016 cho thấy vấn đề nằm ở bốn nhóm (tên dự án STAR* lấy từ đây): lịch trực, công cụ và nợ kỹ thuật, trách nhiệm, vai trò. Ví dụ điển hình: đến tuần trực mới biết engineer Android đã nghỉ phép hai tuần.

Thay đổi chính (bắt đầu đầu 2017, một nhóm manager tình nguyện)

  • Lịch trực tự động:
    • danh sách người đủ điều kiện lấy từ ACL nên thiếu người, và người có mặt trong nhiều ACL thì bị xếp quá nhiều;
    • quy tắc mới: ai có từ 5 commit trở lên trong tháng vào code base Voyager thì vào danh sách (lúc đầu là 1, chỉnh theo phản hồi); mỗi người chỉ thuộc một danh sách;
    • manager vào danh sách trực nếu có người báo cáo trực tiếp đang trong danh sách engineer;
    • xếp lịch trước 60 ngày (đủ sớm để báo, đủ gần để ít lỗ hổng); thông báo trước 4 tuần, nhắc ở 2 tuần và 1 tuần; manager điểm danh xác nhận ở mốc 4 và 2 tuần;
    • có lịch shadow cho người mới trực lần đầu.
  • Công cụ: SRE riêng của Voyager nhận hỗ trợ công cụ deploy và viết playbook; team Productivity nhận vấn đề thời gian build. Một đầu mối duy nhất giúp không báo trùng lỗi cho team Foundation.
  • Trách nhiệm: hơn 90% người trực không biết on-call có được tính vào đánh giá năm hay không. Sửa: manager trực gửi nhận xét về người trực cho manager trực tiếp của họ; trao thưởng nhỏ cho người làm tốt. Trách nhiệm hai chiều: khảo sát mỗi tuần xem người trực có được hỗ trợ đủ không.
  • Vai trò: tách tài liệu "làm gì" khỏi "làm thế nào"; quy về ba nhiệm vụ (giữ site chạy, giữ trunk khoẻ, giúp deploy); tuần trực chiếm 100% thời gian; quy trình RAPID quyết định khi nào rollback API/web hoặc hotfix/bỏ qua bản phát hành mobile.

Kết quả (theo khảo sát của LinkedIn)

  • Không hài lòng với lịch trực: 36% → 8%.
  • Không hài lòng về hỗ trợ công cụ: 16% → 6% (trunk) và 2% (deploy).
  • "Việc thường ngày cản trở việc trực": 84% → 9%.

Vì sao

  • Gốc rễ, theo LinkedIn, là quy mô tổ chức: người vào, ra, chuyển team liên tục nên danh sách làm tay luôn cũ. Chỉ có tự động hoá mới giữ được.
  • Người ta được đánh giá theo việc sản phẩm, nên on-call bị coi là gánh nặng. Phải gắn on-call vào đánh giá thì mới đổi được thái độ.

Bài học cho SWE

  • Lịch trực là dữ liệu về con người và phải sinh tự động từ nguồn sự thật (commit, sơ đồ tổ chức) (Tự động hoá vận hành và auto-remediation).
  • On-call có hiệu quả khi được tính vào đánh giá và được dành trọn thời gian; nếu không, việc trực luôn thua việc sản phẩm (Xử lý sự cố và on-call).
  • Đo bằng khảo sát lặp lại; có số trước/sau mới thuyết phục được.

Liên quan