Netflix gần đây đã chia sẻ chi tiết về việc cải tiến kiến trúc của Tudum, trang web dành cho người hâm mộ của họ, thay thế hệ thống CQRS bằng một kho lưu trữ đối tượng trong bộ nhớ có tên RAW Hollow. Trong khi công ty trình bày điều này như một câu chuyện thành công về mặt kỹ thuật, cộng đồng kỹ sư đã phản ứng với những chỉ trích rộng rãi, đặt câu hỏi liệu sự phức tạp như vậy có được biện minh cho thứ mà nhiều người coi là về cơ bản chỉ là một trang blog.
Sự không khớp giữa quy mô và độ phức tạp
Khía cạnh nổi bật nhất của cuộc tranh cãi này tập trung vào sự chênh lệch đáng kể giữa kích thước vấn đề và độ phức tạp của giải pháp. Các thành viên cộng đồng nhanh chóng chỉ ra rằng toàn bộ tập dữ liệu của Tudum - bao gồm nội dung của ba năm - chỉ nén được 130MB. Dung lượng nhỏ bé này khiến nhiều người đặt câu hỏi tại sao Netflix lại triển khai các hệ thống phân tán cấp doanh nghiệp bao gồm Kafka, Cassandra và cơ sở dữ liệu tùy chỉnh trong bộ nhớ cho lượng dữ liệu ít hơn cả một ứng dụng smartphone thông thường.
Một số nhà phát triển lưu ý rằng các bộ xử lý hiện đại có kích thước cache gần bằng khối lượng dữ liệu này, khiến các lựa chọn cơ sở hạ tầng trở nên đặc biệt thừa thãi. Sự đồng thuận của cộng đồng cho rằng các giải pháp truyền thống như PostgreSQL với read replicas, hoặc thậm chí tạo trang web tĩnh, sẽ xử lý khối lượng công việc này với độ phức tạp thấp hơn nhiều.
So sánh kích thước Dataset Tudum
- Dữ liệu nén: 130MB (nội dung trong 3 năm)
- Kích thước không nén: ~520MB
- Bối cảnh: Kích thước bộ nhớ đệm L3 của bộ xử lý cao cấp đang tiến gần đến những mức này
- Người dùng hàng tháng: 20 triệu
Vấn đề preview đã khởi đầu tất cả
Vấn đề ban đầu mà Netflix nhằm giải quyết tương đối bình thường: các biên tập viên nội dung phải chờ hàng chục giây để xem trước các thay đổi của họ do chu kỳ làm mới cache. Tuy nhiên, cộng đồng đã xác định nhiều giải pháp đơn giản hơn có thể giải quyết vấn đề này mà không cần đại tu kiến trúc. Các đề xuất bao gồm tạo một môi trường preview chuyên dụng với cache bị vô hiệu hóa, triển khai các kỹ thuật cache-busting sử dụng content hash, hoặc đơn giản là xây dựng một hệ thống CMS local-first.
Giải pháp phổ biến là tạo một hostname DNS chuyên dụng có tên gọi như 'preview.www.netflix.com' và tắt tất cả caching khi người dùng truy cập qua đường dẫn đó. Các biên tập viên và người đánh giá sử dụng đó, và thế là... xong! Đã giải quyết!
Quan điểm này phản ánh sự thất vọng của cộng đồng với những gì họ coi là một giải pháp kỹ thuật cho một vấn đề tổ chức có thể được giải quyết thông qua những thay đổi vận hành đơn giản hơn.
Các Thành Phần Kiến Trúc Được Thay Thế
- Hệ Thống Cũ: CQRS với Kafka + Cassandra + Near Cache
- Hệ Thống Mới: Kho lưu trữ đối tượng trong bộ nhớ RAW Hollow
- Vấn Đề Được Giải Quyết: Độ trễ làm mới cache (hàng chục giây)
- Các Giải Pháp Thay Thế Được Đề Xuất: Môi trường preview, cache-busting, tạo trang web tĩnh
Cáo buộc phát triển theo hướng làm đẹp CV
Có lẽ chỉ trích gay gắt nhất tập trung vào cáo buộc về resume-driven development - thực hành chọn các công nghệ phức tạp để nâng cao triển vọng nghề nghiệp thay vì giải quyết hiệu quả các vấn đề kinh doanh. Các thành viên cộng đồng cho rằng việc có hơn 20 kỹ sư tài năng làm việc trên thứ về cơ bản là blog của công ty tự nhiên dẫn đến over-engineering, khi các nhóm tìm cách biện minh cho sự tồn tại của họ và tạo ra các dự án xứng đáng để thăng tiến.
Cuộc thảo luận tiết lộ mối quan ngại rộng hơn của ngành về cách các chỉ số thăng tiến và cái tôi kỹ thuật có thể thúc đẩy sự phức tạp không cần thiết. Một số người bình luận lưu ý rằng vị thế có lợi nhuận của Netflix cho phép họ hấp thụ chi phí của những thí nghiệm như vậy, nhưng cảnh báo các startup không nên sao chép những mẫu kiến trúc này mà không có tài nguyên tương tự hoặc nhu cầu thực tế.
Các chủ đề phê bình từ cộng đồng
- Thiết kế quá phức tạp cho chức năng blog đơn giản
- Cáo buộc phát triển theo hướng làm đẹp CV
- Hành vi kiến trúc sư không gian
- Sự không phù hợp giữa quy mô vấn đề và độ phức tạp của giải pháp
- Các giải pháp thay thế đơn giản hơn có sẵn
Các kiến trúc sư công nghệ phi thực tế
Cộng đồng đã đặc biệt chỉ trích những gì họ gọi là hành vi architecture astronaut - các kỹ sư tạo ra các hệ thống phức tạp vì mục đích phức tạp thay vì giá trị kinh doanh. Các nhà phê bình chỉ ra rằng toàn bộ trang Tudum có thể được phục vụ bởi một cơ sở dữ liệu duy nhất với caching truyền thống, hoặc thậm chí được tạo thành các file tĩnh.
Sự mỉa mai không khỏi khiến các người bình luận chú ý rằng Netflix, một công ty nổi tiếng với việc tiên phong kiến trúc microservices, tiếp tục áp dụng các giải pháp quy mô doanh nghiệp cho những vấn đề không đòi hỏi sự phức tạp như vậy. Một số lưu ý rằng ngay cả diễn đàn thảo luận này cũng xử lý chỉnh sửa, cá nhân hóa và cập nhật thời gian thực mà không cần CQRS, Kafka hoặc cơ sở dữ liệu phân tán tùy chỉnh.
Bài học cho ngành công nghiệp
Cuộc tranh cãi này làm nổi bật những câu hỏi quan trọng về các lựa chọn công nghệ phù hợp trong phát triển phần mềm. Trong khi đội ngũ kỹ thuật của Netflix chắc chắn sở hữu chuyên môn đáng kể, phản ứng của cộng đồng cho thấy rằng khả năng kỹ thuật không phải lúc nào cũng chuyển thành các phương pháp giải quyết vấn đề phù hợp.
Cuộc tranh luận này nhắc nhở rằng các quyết định kỹ thuật nên được thúc đẩy bởi các yêu cầu thực tế thay vì công nghệ có sẵn hoặc sở thích của nhóm. Đối với hầu hết các tổ chức đối mặt với những thách thức quản lý nội dung tương tự, sự đồng thuận của cộng đồng hướng tới các giải pháp đơn giản hơn nhiều sẽ mang lại kết quả tốt hơn với chi phí bảo trì thấp hơn và chu kỳ phát triển nhanh hơn.
Tham khảo: Netflix Revamps Tudum's CQRS Architecture with RAW Hollow In-Memory Object Store