Создание интерактивной доски, или Почему ресёрч важнее кода

Хабр-колонка главы R&D описывает запуск «VK Доски» как стартапа внутри корпорации при дедлайне 1 сентября и ограниченных ресурсах. Команда потратила ~1,5 месяца на ресёрч и PoC трёх OSS-редакторов (Excalidraw, tldraw, Blocksuite), выбрав стек Canvas+CRDT (Yjs) из-за зрелой экосистемы и local-first офлайна. Официальный бэкенд на Rust заменили на NodeJS-стек: Hocuspocus (Yjs WS-синхронизация) + find-my-way (HTTP). Модель доставки — SaaS через JS-SDK, который встраивает iframe, даёт high-level API (render/renderList) и низкоуровневые методы (create/get/edit/delete/share), отдельные дизайн-токены и строгий CSP.

Архитектура: адаптированная Clean Architecture с DI, общим shared-кодом и архитектурным линтингом (eslint-boundaries). Реактивный слой сначала на Signia, затем подменён на Reatom через фасад без переписывания UI. Для коллаборации выделено 4 состояния: AppState, SessionState (Redis), Y.Doc и Y.Awareness. Практики CRDT: плоские структуры с ID-ссылками, минимум Y.Array, транзакции, throttle/debounce и экономия истории.

После ухода крупного вендора («компания на букву М») сервис быстро превратили из SDK-компонента в публичный продукт с VK ID. Проблему квадратичной нагрузки Redis pub/sub при росте сессий решили: Consistent Hashing (сводит пользователей одной доски на один pod), вынесение Awareness на отдельную ферму и телеметрия/профилирование (cpupro). Рассматриваются Redis Streams и дальнейшее троттлирование событий.

← Назад в лентуЧитать оригинал →
✈️ Подписывайтесь на мой Telegram-канал — там еще больше интересного про AdTech, MarTech, AI и многое другое!