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.