К основному содержимому
#DistirbutedSystems

Creating Local-First Collaboration Software with Automerge • Martin Kleppmann • GOTO 2023

#DistirbutedSystems #Architecture #SoftwareDevelopment #SoftwareArchitecture #SystemDesign #RnD

Интересное выступление Мартина Клеппмана, который еще в 2017 году написал уже классическую книгу с кабанчиком (Designing Data-Intensive Applications). Уже в момент издания DDIA Мартин был скорее исследователем распределенных систем, чем промышленным разработчиком. А в конце своей книги он рассказывал про использование CRDT (Conflict-free Replicated Data Type) для решения проблем синхронизации изменений на разных нодах распределенной системы. Мартин долго работал в этом направлении и в этом докладе рассказывает о том

  1. как его библиотека automerge прошла путь от версии 0.1 в 2017 году до версии 2.1 в 2023 году
  2. и почему нам есть до этого дело

Доклад состоял из следующих частей

  • Мартин рассказал для начала о том, как мы сейчас делаем распределенные системы в вебе - круто выглядит картинка из 6 разных представлений состояния приложения (HTML DOM, JS app state, JSON REST API, model objects, database, persistent layer)
  • Дальше Мартин предложил альтернативу в виде local-first software, которая напоминает старые добрые десктопные приложения ... но к ним добавляется библиотека automerge
  • Эта библиотека дает JSON like интерфейс для работы с данными, работа с которыми напоминает git, но уже не для исходного кода, а для данных наших приложений
  • Суть в том, чтобы хранить не просто конечный state данных, а некоторый набор изменений (в git это коммиты), а дальше при параллельном изменении уметь автоматически объединять эти изменения (отсюда название automerge)
  • При таком подходе приложения работают в local-first формате со своими данными, используя библиотеку automerge, плюс эта библиотека забирает на себя сложности распространения и синхронизации изменений по разным нодам
  • Мартин отметил, что этот подход не универсален и не во всех типах приложений стоит его использовать, но для создания коллаборативных сервисов это может быть удобно - например, для того, чтобы сделать свои версии сервисов навроде Google Docs, Miro, Slack, ...
  • Напоследок Мартин рассказал про текущую работу над алгоритмом для работы с rich текстом, который нужен для коллаборативного инструмента для редактирования текста (как раз Google Docs). Здесь Мартин на пальцах объяснил сложность и показал как они планируют ее преодолеть

В общем, это интересный доклад от интересного спикера, мысли которого повлияли на большое количество инженеров. Приятно видеть, что Мартин умеет не только хорошо писать код и книги, но и выступать на сцене:)

#DistirbutedSystems #Architecture #SoftwareDevelopment #SoftwareArchitecture #SystemDesign #RnD