Netflix gần đây đã công bố Kiến trúc Dữ liệu Thống nhất ( UDA ), một hệ thống được thiết kế để giải quyết tình trạng phân mảnh dữ liệu trên ngăn xếp công nghệ khổng lồ của họ. Thông báo này đã kích hoạt cuộc thảo luận sôi nổi trong cộng đồng công nghệ về việc liệu các mô hình dữ liệu toàn cục là một giải pháp hay một vấn đề đang chờ xảy ra.
Lời hứa và nguy cơ của mô hình dữ liệu toàn cục
UDA của Netflix nhằm mục đích cho phép các nhóm mô hình hóa một lần, thể hiện ở mọi nơi bằng cách tạo ra một nguồn sự thật duy nhất cho các khái niệm kinh doanh như phim, diễn viên và dữ liệu người dùng. Hệ thống tự động tạo ra các lược đồ cho các nền tảng khác nhau - từ GraphQL API đến các bảng cơ sở dữ liệu - đảm bảo tính nhất quán trên kiến trúc microservices rộng lớn của Netflix .
Tuy nhiên, cộng đồng công nghệ đang chia rẽ về việc liệu cách tiếp cận này có thực sự hoạt động trong thực tế hay không. Nhiều nhà phát triển chỉ ra một căng thẳng cơ bản: trong khi các mô hình thống nhất hứa hẹn tính nhất quán, chúng cũng tạo ra các nút thắt cổ chai tổ chức. Mọi thay đổi đối với định nghĩa dữ liệu được chia sẻ giờ đây đều yêu cầu sự chấp thuận từ nhiều nhóm, có thể làm chậm đáng kể quá trình phát triển.
Các thành phần chính của UDA:
- Domain Models: Nắm bắt các khái niệm và mối quan hệ kinh doanh
- Mappings: Kết nối các mô hình miền với lưu trữ dữ liệu vật lý (cơ sở dữ liệu, APIs)
- Projections: Tạo ra các schema cho các hệ thống khác nhau ( GraphQL , Avro , SQL )
- Knowledge Graph: Đại diện cho các mối quan hệ giữa các khái niệm dữ liệu
- Upper: Metamodel để mở rộng (chi tiết chưa được công bố)
Bài học từ những nỗ lực trước đây
Cuộc thảo luận tiết lộ rằng Netflix không phải là công ty đầu tiên cố gắng áp dụng cách tiếp cận này. Các nhà phát triển đã chia sẻ kinh nghiệm với các hệ thống tương tự tại Uber (được gọi là Dragon ) và các tổ chức lớn khác. Hầu hết những nỗ lực này hoặc thất bại hoàn toàn hoặc chỉ thành công trong những trường hợp sử dụng rất hạn chế, cụ thể.
Một hiểu biết quan trọng từ cộng đồng tập trung vào bản chất của chính các khái niệm kinh doanh. Một bộ phim có ý nghĩa khác nhau đối với nhóm tài chính của Netflix (một hợp đồng), nhóm cơ sở hạ tầng (một tệp), và khách hàng (nội dung giải trí). Việc cố gắng ép buộc những bối cảnh khác nhau này vào một định nghĩa toàn cục duy nhất thường tạo ra nhiều vấn đề hơn là giải quyết chúng.
Các nỗ lực tương tự trong ngành:
- ** Uber Dragon **: Hệ thống tích hợp schema (chưa bao giờ được mở mã nguồn)
- ** LinkedIn Hydra **: Tiếp tục các khái niệm của Dragon (mã nguồn mở)
- ** SAP **: Phương pháp schema cố định yêu cầu khách hàng phải thích ứng
- ** Epic EMR **: Hệ thống chăm sóc sức khỏe với những thách thức mô hình phổ quát tương tự
Tiến thoái lưỡng nan của Microservices
Các nhà phê bình cho rằng UDA đại diện cho một bước lùi từ các nguyên tắc microservices, nơi mỗi dịch vụ nên sở hữu dữ liệu của mình một cách độc lập. Điều trớ trêu là Netflix đã giúp phổ biến kiến trúc microservices, nhưng UDA dường như mâu thuẫn với triết lý đó bằng cách tập trung hóa các định nghĩa dữ liệu.
Một số nhà phát triển đặt câu hỏi liệu Netflix có tạo ra một vấn đề không cần giải quyết hay không. Họ chỉ ra rằng GraphQL đã được thiết kế để cung cấp các góc nhìn thống nhất về dữ liệu mà không yêu cầu các lược đồ toàn cục. Sự tồn tại của nhiều định nghĩa Movie thực sự có thể là một tính năng, không phải là một lỗi.
Thách thức triển khai kỹ thuật
Ngoài những mối quan tâm triết học, cộng đồng đã xác định các thách thức thực tế với cách tiếp cận của UDA . Quản lý phiên bản trở nên phức tạp khi một thay đổi lược đồ duy nhất ảnh hưởng đến hàng chục dịch vụ. Xử lý lỗi không rõ ràng - nếu một hệ thống hiểu sai lược đồ toàn cục, UDA phát hiện và sửa chữa những lỗi này như thế nào?
Hệ thống dựa nhiều vào RDF và các công nghệ web ngữ nghĩa phổ biến vào giữa những năm 2000 nhưng không bao giờ đạt được sự chấp nhận rộng rãi. Mặc dù những công cụ này mạnh mẽ, chúng thêm vào sự phức tạp mà nhiều tổ chức gặp khó khăn để duy trì lâu dài.
Nền Tảng Kỹ Thuật:
- Được xây dựng trên RDF ( Resource Description Framework )
- Sử dụng các công nghệ web ngữ nghĩa ( SPARQL , OWL )
- Tích hợp với Apollo Federation cho GraphQL
- Hỗ trợ tự động tạo schema trên nhiều định dạng
- Tận dụng đồ thị tri thức để khám phá dữ liệu và theo dõi nguồn gốc
Sự đánh đổi quản trị
Có lẽ mối quan tâm quan trọng nhất được nêu ra là tổ chức hơn là kỹ thuật. Các mô hình dữ liệu toàn cục yêu cầu các cấu trúc quản trị mạnh mẽ để ngăn chặn hỗn loạn. Điều này có nghĩa là các ủy ban, quy trình phê duyệt và chi phí phối hợp có thể làm chậm sự đổi mới.
Về cơ bản đây là một vấn đề kinh doanh, chứ không phải là một vấn đề kỹ thuật, nhưng nó có tác động đến tốc độ phát triển, vì vậy về mặt thứ yếu, đây là một vấn đề kỹ thuật.
Các kiến trúc sư của Netflix thừa nhận những mối quan tâm này nhưng lập luận rằng UDA được thiết kế để cùng tồn tại với các hệ thống hiện có thay vì thay thế chúng hoàn toàn. Họ nhấn mạnh rằng việc áp dụng sẽ là tự nguyện, không bắt buộc trên toàn tổ chức.
Nhìn về phía trước
Cuộc tranh luận làm nổi bật một thách thức rộng lớn hơn mà các công ty công nghệ lớn đang đối mặt: làm thế nào để duy trì tính nhất quán và giảm sự trùng lặp mà không kìm hãm sự đổi mới. UDA của Netflix đại diện cho một cách tiếp cận, nhưng phản ứng hỗn hợp của cộng đồng cho thấy không có giải pháp toàn cục nào cho vấn đề toàn cục này.
Việc UDA có thành công hay không có thể phụ thuộc ít vào các ưu điểm kỹ thuật của nó và nhiều hơn vào khả năng của Netflix trong việc quản lý các thay đổi tổ chức cần thiết. Thành tích của công ty với các thay đổi kiến trúc quy mô lớn mang lại cho họ uy tín, nhưng lịch sử của những nỗ lực tương tự cho thấy cần thận trọng.
Cuộc thảo luận tiếp tục khi các công ty khác theo dõi thí nghiệm của Netflix với sự quan tâm, biết rằng họ đối mặt với những thách thức tương tự trong kiến trúc dữ liệu của riêng mình.
Tham khảo: Model Once, Represent Everywhere: UDA (Unified Data Architecture) at Netflix