How Figma’s multiplayer technology works (2019)
Как работает технология «мультиплеера» в Figma
Основная идея
Figma позволяет десяткам дизайнеров одновременно работать над одним файлом без конфликтов. Это достигается за счёт оперативной синхронизации изменений и разрешения конфликтов на лету.
Архитектура
- WebSocket-соединение — каждый клиент держит постоянное соединение с сервером.
- Операционные преобразования (OT) — любое действие (перемещение слоя, изменение текста) описывается как операция. Сервер применяет её и рассылает всем клиентам.
- Дельты и патчи — вместо полной передачи файла отправляются только изменения, что экономит трафик и ускоряет работу.
Разрешение конфликтов
Если два пользователя одновременно изменяют один и тот же объект, алгоритм OT выстраивает правильный порядок операций, сохраняя логическую целостность. Пользователи видят результат почти мгновенно.
Производительность
- Дерево объектов хранится в памяти браузера и обновляется по мере поступления операций.
- Сжатие и батчинг — несколько операций объединяются в один пакет, чтобы снизить нагрузку на сеть.
- Кеширование — сервер хранит последние состояния файлов, чтобы быстро «догнать» клиента, который только подключился.
Безопасность и надёжность
- Все операции логируются и могут быть отменены (undo/redo).
- Данные шифруются при передаче и хранятся в зашифрованном виде.
- Регулярные снепшоты защищают от потери данных при сбоях.
Итог
Технология «мультиплеера» превращает Figma в «Google Docs для дизайна», где коллаборация происходит без конфликтов и задержек.