Công nghệ Multiplayer của Figma khơi dậy cuộc thảo luận về các giải pháp cộng tác thời gian thực

Nhóm Cộng đồng BigGo
Công nghệ Multiplayer của Figma khơi dậy cuộc thảo luận về các giải pháp cộng tác thời gian thực

Cách tiếp cận của Figma đối với việc chỉnh sửa cộng tác thời gian thực tiếp tục tạo ra sự quan tâm đáng kể trong cộng đồng nhà phát triển, với các cuộc thảo luận làm nổi bật cả những thành tựu kỹ thuật và bối cảnh đang phát triển của các công cụ đồng bộ hóa multiplayer. Quyết định của nền tảng thiết kế này trong việc xây dựng một giải pháp tùy chỉnh sử dụng CRDTs (Conflict-free Replicated Data Types) thay vì Operational Transformation truyền thống đã trở thành điểm tham chiếu để hiểu về kiến trúc phần mềm cộng tác hiện đại.

Cuộc thảo luận kỹ thuật tiết lộ cách Figma đã từ bỏ các phương pháp tiếp cận thông thường khi xây dựng chức năng multiplayer của họ bốn năm trước. Họ đã từ chối cả các tính năng stateful tiêu chuẩn và Operational Transformation, thuật toán multiplayer phổ biến vào thời điểm đó, khi nhận thấy rằng OT ngăn cản công cụ thiết kế của họ phản hồi nhanh trong khi vẫn duy trì tính nhất quán. Thay vào đó, họ đã chọn CRDTs như một giải pháp đơn giản hơn cho không gian vấn đề cụ thể của họ.

Các Quyết Định Kỹ Thuật Chính Trong Hệ Thống Multiplayer Của Figma:

  • Từ bỏ Operational Transformation (OT) để chuyển sang CRDTs
  • Xây dựng giải pháp tùy chỉnh thay vì sử dụng các thư viện có sẵn
  • Triển khai renderer WebGL tùy chỉnh để tối ưu hiệu suất
  • Sử dụng phương pháp dựa trên trạng thái với kết quả nhất quán
  • Server theo dõi các giá trị mới nhất từ client để giải quyết xung đột

Tình trạng hiện tại của công nghệ cộng tác thời gian thực

Cuộc thảo luận cộng đồng cho thấy việc xây dựng cộng tác thời gian thực vẫn là thử thách ngay cả ngày nay. Tuy nhiên, bối cảnh đã phát triển đáng kể kể từ khi Figma triển khai ban đầu. Một số sync engine mới đã xuất hiện để giải quyết vấn đề này, bao gồm Rocicorp Zero và Electric SQL, mặc dù không gian này vẫn chưa có nhiều lựa chọn. Những công cụ này nhằm mục đích làm cho các tính năng cộng tác trở nên dễ tiếp cận hơn đối với các nhà phát triển có thể gặp khó khăn với độ phức tạp của việc triển khai CRDTs từ đầu.

Một số nhà phát triển chỉ ra các giải pháp hiện có đã có sẵn trong nhiều năm. Ví dụ, ShareDB và Racer đã cung cấp các snapshot đồng bộ, giải quyết xung đột, diffs và theo dõi thay đổi từ hơn một thập kỷ trước. Ngoài ra, các nền tảng như Liveblocks.io đã làm việc để làm cho cộng tác multiplayer trở nên dễ dàng và dễ tiếp cận, với trọng tâm cốt lõi của họ là khả năng chỉnh sửa multiplayer.

Các giải pháp dành riêng cho Framework và công cụ mới nổi

Cuộc thảo luận cũng làm nổi bật các phương pháp tiếp cận dành riêng cho framework đối với cộng tác thời gian thực. Phoenix LiveView của Elixir kết hợp với PubSub bao phủ nhiều cơ sở cộng tác ngay từ đầu, mặc dù các nhà phát triển lưu ý rằng chức năng broadcast không giống với đồng bộ hóa thực sự, và LiveView không phù hợp cho tất cả các ứng dụng. Phoenix gần đây đã thêm Phoenix.Sync, một thư viện sync engine được thiết kế đặc biệt để giải quyết những hạn chế này.

Hiện tại có một vài sync engine giải quyết vấn đề này. Rocicorp Zero, Electric SQL, và một hoặc hai công cụ khác. Không phải là một không gian đông đúc, nhưng hiện tại đã có các lựa chọn.

Cộng đồng nhận ra rằng trong khi các công nghệ cơ bản cho cộng tác thời gian thực đã tồn tại trong nhiều thập kỷ, việc triển khai và khả năng tiếp cận của các giải pháp này tiếp tục được cải thiện. Sự phát triển liên tục này cho thấy rằng những gì từng là một thách thức kỹ thuật chuyên biệt cao đang dần trở nên dễ tiếp cận hơn đối với một phạm vi rộng hơn của các nhà phát triển.

Các Giải Pháp Cộng Tác Thời Gian Thực Thay Thế:

  • Rocicorp Zero - Công cụ đồng bộ hóa hiện đại
  • Electric SQL - Nền tảng đồng bộ hóa cơ sở dữ liệu
  • Liveblocks.io - Nền tảng cộng tác đa người dùng
  • ShareDB/Racer - Giải pháp 10+ năm tuổi với tính năng snapshot và giải quyết xung đột
  • Phoenix LiveView + PubSub - Giải pháp framework Elixir
  • Phoenix.Sync - Thư viện công cụ đồng bộ hóa được bổ sung gần đây
Biểu diễn trực quan của cấu trúc mạng minh họa các kết nối liên quan đến công nghệ đồng bộ hóa cộng tác
Biểu diễn trực quan của cấu trúc mạng minh họa các kết nối liên quan đến công nghệ đồng bộ hóa cộng tác

Quan điểm cộng đồng về tác động của Figma

Thú vị là, cuộc thảo luận mở rộng ra ngoài các cân nhắc kỹ thuật thuần túy để xem xét tác động rộng lớn hơn của Figma đối với ngành thiết kế. Một số thành viên cộng đồng bày tỏ lo ngại về ảnh hưởng của Figma đối với các mẫu thiết kế và thực hành trải nghiệm người dùng, cho rằng giao diện của chính nền tảng này đã trở thành điểm tham chiếu cho các nhà thiết kế, có khả năng duy trì một số phương pháp thiết kế nhất định.

Cuộc trò chuyện cũng đề cập đến nguồn gốc của công nghệ Figma, với một số người cho rằng công ty ban đầu tập trung vào việc phát triển một engine JavaScript cộng tác thời gian thực và sau đó tìm thấy phần mềm thiết kế như một ứng dụng lý tưởng cho công nghệ này. Quan điểm này đặt thành công của Figma không chỉ về thời điểm và sự phù hợp với thị trường mà còn về sự đổi mới kỹ thuật.

Sự quan tâm liên tục của cộng đồng đối với công nghệ multiplayer của Figma chứng minh tính liên quan tiếp tục của các quyết định kỹ thuật của họ và thách thức rộng lớn hơn trong việc xây dựng phần mềm cộng tác phản hồi nhanh có thể xử lý nhiều người dùng chỉnh sửa cùng một tài liệu đồng thời.

Tham khảo: How Figma's multiplayer technology works