Achieving observability in async workflows
Bài tóm tắt Netflix 2021 3. Quy mô lớn Độ khó: Dễ
Netflix · 2021 · 3. Quy mô lớn · Độ khó: Dễ — bài gốc
Đọc toàn văn qua trình duyệt (fetch và Wayback đều lỗi). Bài ngắn, ít chi tiết kỹ thuật về chính nền tảng Cosmos.
Bối cảnh
- Prodicle Distribution (công cụ cho đoàn làm phim gửi tài liệu có watermark riêng cho từng người nhận, theo dõi việc nhận): một job 10 file × 20 người nhận là 200 tài liệu watermark riêng, kèm link thu hồi được, mật khẩu, thumbnail, email và push. Yêu cầu khoảng 1.000 watermark trong một phút cho một lần gửi, traffic bùng nổ.
- Cuối 2019, team bọc chức năng watermark bất đồng bộ (Ruby on Rails) bằng một Java DGS mỏng. Team ôm cả tích hợp Google Drive, watermark, quản lý traffic bùng nổ và on-call; gỡ lỗi phải lần qua nhiều codebase và nhiều hệ quan sát, log rải rác không nối được với nhau, có lúc phải viết SQL vào DB production lúc nửa đêm.
Thay đổi chính
- Khi chuyển workflow sang Java, yêu cầu: gần realtime, có bộ điều phối workflow với observability tốt cho dev, và giao watermark cùng việc chịu traffic bùng nổ cho đúng team.
- So tự làm với nền tảng nội bộ (Conductor và Cosmos), chọn Cosmos (vốn cho xử lý media bất đồng bộ; hai team cùng mở rộng cho xử lý file chung và tinh chỉnh cho nhu cầu gần realtime). Lý do: latency ít biến động, tách API / workflow / function, dễ load test, trừu tượng file I/O, function co giãn, và cổng quan sát Nirvana có tìm kiếm.
- Chuyển quyền sở hữu watermark sang một team khác. Phát hành dần từ 1/2021, xong 4/2021; lúc đó việc dùng tăng 10 lần (6/2020–4/2021), hàng trăm đoàn phim, hàng chục nghìn job, hàng triệu watermark mỗi tháng.
- Kết quả theo bài: ticket hỗ trợ giảm; on-call tìm log và trace liên quan, nhìn trạng thái workflow ở một chỗ.
Vì sao
- Observability cho luồng bất đồng bộ nhiều bước khó tự dựng ở mỗi team; nằm sẵn trong nền tảng workflow thì team ứng dụng được hưởng (Nền tảng nội bộ cho service (đường ray chung), Observability và monitoring).
Bài học cho SWE
- Với workflow bất đồng bộ, khả năng nối các bước của một job lại với nhau (trace, trạng thái) là yêu cầu chọn nền tảng, không phải việc thêm sau.
- Giao phần năng lực không thuộc lõi (watermark, chịu tải bùng nổ) cho team nền tảng để team sản phẩm tập trung vào tính năng.
Liên quan
#Async workflow#Cosmos#Conductor#Nirvana#Observability portal#Watermarking#Bursty traffic#Platform team#DGS
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (5)