Chuyển tới nội dung chính

Case Study: Prime Video (Microservices to Monolith)

Một bài học nổi tiếng (2023) về việc Microservices không phải lúc nào cũng là giải pháp tốt nhất.

1. Vấn đề​

Team Prime Video Monitoring xây dựng công cụ để giám sát chất lượng video stream.

  • Kiến trúc cũ: Serverless Microservices (AWS Lambda + Step Functions).
  • Thách thức:
    • Chi phí quá cao do Step Functions state transitions.
    • Gặp giới hạn về scaling (Account limits).
    • Dữ liệu truyền giữa các microservices (S3) gây chậm và tốn kém.

2. Giải pháp​

Họ quyết định Refactor lại kiến trúc từ Microservices về Monolith.

  • Gom logic của nhiều Lambda functions vào một process duy nhất chạy trên EC2/ECS.
  • Sử dụng bộ nhớ trong (RAM) để truyền dữ liệu thay vì S3.

3. Kết quả​

  • Chi phí: Giảm 90% chi phí hạ tầng.
  • Hiệu năng: Tăng khả năng xử lý, độ trễ thấp hơn.
  • Đơn giản hóa: Dễ debug và vận hành hơn.

4. Bài học (Key Takeaways)​

  1. Right tool for the job: Serverless/Microservices rất tốt cho scale đột biến và tách biệt team, nhưng tốn kém cho các workload stream dữ liệu lớn liên tục (high-throughput).
  2. Monolith không chết: Modular Monolith vẫn là một kiến trúc cực kỳ hiệu quả nếu được thiết kế tốt.
  3. Evolve: Kiến trúc không bao giờ cố định. Phải liên tục đo lường và thay đổi.