Skip to main content

Netflix: Bậc thầy của Chaos Engineering & Microservices

Netflix không chỉ là một dịch vụ xem phim, họ là một công ty công nghệ tiên phong định hình cách thế giới làm Cloud.

1. Bối cảnh

  • Năm 2008: Netflix bị sập hệ thống dữ liệu (Oracle) trong 3 ngày, ngừng hoạt động hoàn toàn việc gửi đĩa DVD.
  • Quyết định: Di chuyển toàn bộ sang AWS để tận dụng khả năng mở rộng, chấp nhận đập đi xây lại kiến trúc từ Monolith sang Microservices.

2. Kiến trúc Microservices

Netflix có hàng nghìn microservices nhỏ. Một request từ nút "Play" trên TV của bạn có thể kích hoạt chuỗi gọi qua 5-10 services khác nhau (Auth, Recommendation, DRM, CDN locator...).

Tại sao Microservices?

  • Tốc độ: Mỗi team (ví dụ team Search) có thể deploy code mới hàng ngày mà không cần đợi team khác.
  • Cô lập lỗi: Nếu service "Gợi ý phim" bị chết, người dùng vẫn xem được phim (chỉ là không thấy gợi ý).

3. Chaos Engineering (Kỹ thuật Hỗn loạn)

Netflix giả định rằng: "Trên Cloud, mọi thứ chắc chắn sẽ hỏng." (Server chết, mạng lag, AZ sập). Thay vì chờ nó hỏng lúc nửa đêm, họ chủ động làm hỏng nó vào giờ hành chính để xem hệ thống có tự phục hồi không.

Simian Army (Đội quân Khỉ)

  • Chaos Monkey: Ngẫu nhiên tắt các máy chủ EC2 trong Auto Scaling Group. Ép buộc các kỹ sư phải thiết kế stateless và tự động scale bù.
  • Chaos Kong: Giả lập sự cố sập toàn bộ một AWS Region. Netflix phải chuyển traffic người dùng từ Bắc Mỹ sang Châu Âu mượt mà.

4. Global Content Delivery (Open Connect)

Netflix không dùng CloudFront cho video (vì quá tốn kém và lưu lượng quá lớn). Họ tự xây dựng CDN riêng gọi là Open Connect.

  • Các máy chủ chứa ổ cứng (Appliances) được đặt trực tiếp tại các nhà mạng (ISP) như Viettel, VNPT, FPT.
  • Khi bạn xem phim, dữ liệu video đi từ ISP nhà bạn, không cần ra quốc tế.
  • AWS chỉ dùng để chạy Control Plane (Web, API, Logic), còn Data Plane (Video) chạy trên Open Connect.

5. Bài học cho chúng ta

  1. Design for Failure: Đừng hỏi "Nếu server chết thì sao?", hãy hỏi "Khi nào server chết?".
  2. Stateless: Đừng lưu session hay dữ liệu trên RAM/Disk cục bộ của Web Server.
  3. Automation: Nếu phải làm gì đó 2 lần, hãy tự động hóa nó.