bythe.net
← К ленте
Тренд

Local-first: данные живут у пользователя, а сервер догоняет

CRDT-библиотеки повзрослели, и приложения всё чаще работают с локальной копией данных, синхронизируясь в фоне. Что это меняет для продуктов и разработчиков.

Сдвиг

Десять лет веб-приложения строили по одной схеме: клиент показывает то, что ответил сервер. Нет сети — нет приложения. Спиннер на каждое действие, гонки при одновременной правке, потеря черновика при обрыве связи.

Local-first переворачивает схему. Приложение работает с полной локальной копией данных: читает и пишет мгновенно, а изменения отправляются на сервер и другим устройствам в фоне. Сервер превращается из источника истины в точку обмена и резервную копию.

Почему сейчас

Идея старая, а реализуемой её сделали три вещи:

  • CRDT-библиотеки. Yjs и Automerge умеют сливать одновременные правки без конфликтов и без центрального арбитра. Текст, списки, карты, вложенные структуры.
  • Хранилище в браузере. IndexedDB, OPFS и SQLite, скомпилированный в WebAssembly, дают на клиенте настоящую базу, а не кеш.
  • Готовые движки синхронизации. Electric, PowerSync, Replicache, Triplit, Jazz и другие берут на себя протокол, очереди и разрешение конфликтов, оставляя разработчику схему данных.

Что получает пользователь

Интерфейс без ожиданий: нажал — изменилось. Работа в самолёте, в метро, на даче. Совместное редактирование, где чужие правки появляются, а свои не теряются. Данные, которые остаются при вас, даже если сервис закрылся.

Что получает разработчик

Иную модель мышления. Нет запросов «загрузи, покажи, отправь». Есть локальное состояние, к которому подписан интерфейс, и слой синхронизации, который надо настроить один раз. Оптимистичные обновления перестают быть отдельной техникой — они просто единственный режим работы.

Плата за это — сложность там, где раньше её не было. Схема данных должна быть готова к слиянию. Права доступа проверяются и на сервере, и на клиенте. Миграции затрагивают данные на устройствах, которые могут месяцами не выходить в сеть.

Где это уже работает

Linear и Figma построены на локальном состоянии с фоновой синхронизацией, хотя и не на публичных CRDT. Obsidian хранит заметки в файлах и синхронизирует поверх. Заметочники, канбаны, дизайн-инструменты и всё, где человек часто и мелко правит, переходят на эту модель первыми.

Чего ждать

Local-first не заменит серверные приложения целиком. Банковские транзакции, инвентарь на складе и всё, где нужна строгая последовательность, останутся на сервере. Но для инструментов, где главное — скорость реакции и совместная работа, это становится вариантом по умолчанию. Судя по тому, сколько движков синхронизации появилось за два года, рынок в это верит.

Войти, чтобы оценить материал

Комментарии

Войти, чтобы оставить комментарий