August 22nd, 2023 Deno Deploy Post-mortem

Bài tóm tắt Deno 2023 2. Tăng trưởng Độ khó: Dễ

Deno · 2023 · 2. Tăng trưởng · Độ khó: Dễ — bài gốc

Postmortem ngắn. Giá trị chính là một ví dụ về coupling: website công ty và registry package chạy chung một chỗ.

Bối cảnh

  • deno.com và deno.land chạy trên chính Deno Deploy. deno.land/x (registry module bên thứ ba) và deno.land/std (thư viện chuẩn) cũng do website này phục vụ.

Chuyện gì xảy ra

  • 22/8/2023, 07:00–08:30 UTC: một đợt DDoS vào deno.com. Lượng request vượt khả năng Deno Deploy tự scale cho ứng dụng đó, nên website, dashboard và registry module đều sập khoảng 90 phút.
  • Người dùng Deno runtime import package qua HTTPS bị lỗi build. Ứng dụng đã cache hoặc vendor dependency thì không bị ảnh hưởng.
  • Cô lập tài nguyên giữa các deployment hoạt động tốt: các ứng dụng khác trên Deno Deploy gần như không bị ảnh hưởng.
  • Timeline: 07:02 có cảnh báo lỗi → 07:10 nhận ra DDoS → 07:41 gọi thêm người → 08:21 chặn IP tấn công → 08:29 hồi phục.

Khắc phục (theo Deno)

  • Cải thiện khả năng cấp thêm tài nguyên cho ứng dụng bị spike bất thường.
  • Escalate on-call nhanh hơn; cập nhật status page kịp thời hơn.
  • Xem lại cách host code module, để sự cố ở deno.com/Deploy không kéo theo việc quản lý dependency của mọi chương trình Deno.

Bài học cho SWE

  • Hạ tầng mà cả hệ sinh thái phụ thuộc (registry) không nên chung số phận với website marketing (Độ tin cậy và multi-region).
  • Vendor hoặc cache dependency là cách người dùng tự cắt phụ thuộc lúc build.
  • Isolation giữa tenant là thứ cứu phần còn lại của nền tảng (Sự cố và postmortem).

Liên quan