ݺߣ

ݺߣShare a Scribd company logo
Swarm
синхронизация данных
для мобильных и веб-приложений
victor.grishchenko@gmail.com
Бесконечная память!
У Google в 1998 было 147GB
данных. Сейчас, за $100 можно
купить 128GB microSD карту
для телефона!
Память – дешёвая и почти
бесконечная!
На новые телефоны ставят
64-битные многоядерные
процессоры – этого достаточно
для сложной логики.
20141998
Сейчас, узкое место – сеть!
Пользователи ждут загрузки
данных часто и подолгу!
Мобильные и веб- приложения "едят"
всё больше данных, однако время
отклика в сетях не улучшается
(физика).
!
Мобильные устройства работают в
беспроводных сетях, которые
по природе своей ненадежны (физика).
!
У одного пользователя несколько
устройств: планшет, телефон...
Он ожидает мгновенной синхронизации
данных между устройствами.
!
Сеть медленна и ненадёжна.
!
И?
Истории из жизни
Пользователь едет в аэропорт,
опаздывая на рейс.
Регистрируется с телефона на
сайте авиакомпании. Нажав ОК,
не заметил, что пропал
интернет. Все данные потеряны.
В iCloud, пропадающий WiFi
вызвал сбой синхронизации.
Пользователь сделал 10
слайдов, но на сервер
сохранился только первый.
При отправке письма из веб-
интерфейса в вагоне метро,
пользователь не заметил, что
пропал интернет. Браузер
пишет "Web page not available",
текст письма потерян.
На компьютерной конференции,
WiFi сеть перегружена, 3G
"тормозит". Есть замечательный
мобильный сайт с расписанием
докладов, но участники
предпочитают смотреть в буклет.
Официант делает заказ через
приложение в iPod. Но, на
втором этаже ресторана в углу,
WiFi не ловит. Обидная заминка,
официант уходит ловить WiFi.
В кафе ЦПКиО, клиент
понимает, что ему необходимо
воспользоваться клиент-
банком. WiFi крайне
ненадёжный, приложение
показывает "часики" и ошибки.
Решение: всё кэшировать
и синхронизировать
Когда данные уже получены, кэширование –
бесплатно!
Если данные заранее запасены в кэше:
• никаких сообщений "идет загрузка...";
• можно работать в оффлайне;
• неустойчивое соединение – не проблема
Пользователь очень доволен!
Но с "тотальным" кэшированием есть одна
загвоздка:
• данные меняются и локально и на сервере
• а значит, инвалидации кеша недостаточно
• нужны версионирование и синхронизация
(это сложней)
CRDT позволяет "тотальное"
кэширование и синхронизацию
CRDT: технология синхронизации данных
• фоновая синхронизация в режиме реального времени
• версионирование (можно отличить новое от виденного)
• поддержка работы в offline, кэширования, предзагрузки
• бесконфликтное слияние конкурентных изменений
• CRDT используются в Cassandra, Riak
Causal trees: совместное редактирование (как Google Docs)
• это основанная на CRDT замена для OT*
• полностью кешируется, работает в оффлайне
• реализуемо в браузерах (JavaScript, contentEditable)
• сохраняет авторство (кто что написал?)
• показ изменений в тексте (что поменялось?)
• первоначально разработано для letters.yandex.ru
* Operational Transformation
Swarm: CRDT в браузере
Swarm: кэш объектов с real-time синхронизацией
• библиотека для репликации модели (M из MVC)
• как "Dropbox для объектов"
• клиентский код: JavaScript (ObjC, Java в плане)
• серверный код: node.js (Java в плане)
• Backbone-подобная, ~2 тыс. строк кода
Citrea: совместный редактор текста
• работает поверх DOM
• отслеживает историю изменений и авторство
• как "Google Docs для вашего сайта"
Создание системы тотального
кэша с нуля – это человеко-годы
"There are only two hard things in
Computer Science: cache
invalidation and naming things"

– некий P.Karlton
Хранение данных на стороне
клиента превращает Web систему
(простую) в AP* систему (сложную)
Разработка займёт человеко-годы.
Мы эту работу проделали!
* по теореме CAP
Преимущества наших
решений
• приложение работает с локальной репликой данных,
временная пропажа интернета не вызывает ошибок и потери
данных (особенно актуально для веб-приложений)
• мгновенное время отклика приложения, т.к. не нужна
пробежка к серверу на большинство действий пользователя
• разработчик освобождён от написания рутинного сетевого
кода, в т.ч. обработки сетевых ошибок, сериализации и т.п.
• экземпляры приложения на разных устройствах
синхронизируются в реальном времени "сами собой"
• уменьшается передача данных на клиента, что особо
актуально для устройств на слабых мобильных соединениях
Команда: мы реализуем CRDT
быстрей, чем пишут теорию! *
Виктор Грищенко, к.ф.-м.н., УрГУ и
Университет Технологии Дельфта
(Нидерланды), Банк России, Яндекс,
отвечает за науку.
Алексей Баландин, УрГУ, Наумен,
Билайн, ЭйТи Консалтинг, gosuslugi.ru,
отвечает за энтерпрайз.
* мы обнаружили это на PaPEC'14
Swarm
Пишите и звоните нам:
victor.grishchenko@gmail.com
+7 926 102 33 94

More Related Content

Swarm (русская версия)

  • 1. Swarm синхронизация данных для мобильных и веб-приложений victor.grishchenko@gmail.com
  • 2. Бесконечная память! У Google в 1998 было 147GB данных. Сейчас, за $100 можно купить 128GB microSD карту для телефона! Память – дешёвая и почти бесконечная! На новые телефоны ставят 64-битные многоядерные процессоры – этого достаточно для сложной логики. 20141998 Сейчас, узкое место – сеть!
  • 3. Пользователи ждут загрузки данных часто и подолгу! Мобильные и веб- приложения "едят" всё больше данных, однако время отклика в сетях не улучшается (физика). ! Мобильные устройства работают в беспроводных сетях, которые по природе своей ненадежны (физика). ! У одного пользователя несколько устройств: планшет, телефон... Он ожидает мгновенной синхронизации данных между устройствами. ! Сеть медленна и ненадёжна. ! И?
  • 4. Истории из жизни Пользователь едет в аэропорт, опаздывая на рейс. Регистрируется с телефона на сайте авиакомпании. Нажав ОК, не заметил, что пропал интернет. Все данные потеряны. В iCloud, пропадающий WiFi вызвал сбой синхронизации. Пользователь сделал 10 слайдов, но на сервер сохранился только первый. При отправке письма из веб- интерфейса в вагоне метро, пользователь не заметил, что пропал интернет. Браузер пишет "Web page not available", текст письма потерян. На компьютерной конференции, WiFi сеть перегружена, 3G "тормозит". Есть замечательный мобильный сайт с расписанием докладов, но участники предпочитают смотреть в буклет. Официант делает заказ через приложение в iPod. Но, на втором этаже ресторана в углу, WiFi не ловит. Обидная заминка, официант уходит ловить WiFi. В кафе ЦПКиО, клиент понимает, что ему необходимо воспользоваться клиент- банком. WiFi крайне ненадёжный, приложение показывает "часики" и ошибки.
  • 5. Решение: всё кэшировать и синхронизировать Когда данные уже получены, кэширование – бесплатно! Если данные заранее запасены в кэше: • никаких сообщений "идет загрузка..."; • можно работать в оффлайне; • неустойчивое соединение – не проблема Пользователь очень доволен! Но с "тотальным" кэшированием есть одна загвоздка: • данные меняются и локально и на сервере • а значит, инвалидации кеша недостаточно • нужны версионирование и синхронизация (это сложней)
  • 6. CRDT позволяет "тотальное" кэширование и синхронизацию CRDT: технология синхронизации данных • фоновая синхронизация в режиме реального времени • версионирование (можно отличить новое от виденного) • поддержка работы в offline, кэширования, предзагрузки • бесконфликтное слияние конкурентных изменений • CRDT используются в Cassandra, Riak Causal trees: совместное редактирование (как Google Docs) • это основанная на CRDT замена для OT* • полностью кешируется, работает в оффлайне • реализуемо в браузерах (JavaScript, contentEditable) • сохраняет авторство (кто что написал?) • показ изменений в тексте (что поменялось?) • первоначально разработано для letters.yandex.ru * Operational Transformation
  • 7. Swarm: CRDT в браузере Swarm: кэш объектов с real-time синхронизацией • библиотека для репликации модели (M из MVC) • как "Dropbox для объектов" • клиентский код: JavaScript (ObjC, Java в плане) • серверный код: node.js (Java в плане) • Backbone-подобная, ~2 тыс. строк кода Citrea: совместный редактор текста • работает поверх DOM • отслеживает историю изменений и авторство • как "Google Docs для вашего сайта"
  • 8. Создание системы тотального кэша с нуля – это человеко-годы "There are only two hard things in Computer Science: cache invalidation and naming things"
 – некий P.Karlton Хранение данных на стороне клиента превращает Web систему (простую) в AP* систему (сложную) Разработка займёт человеко-годы. Мы эту работу проделали! * по теореме CAP
  • 9. Преимущества наших решений • приложение работает с локальной репликой данных, временная пропажа интернета не вызывает ошибок и потери данных (особенно актуально для веб-приложений) • мгновенное время отклика приложения, т.к. не нужна пробежка к серверу на большинство действий пользователя • разработчик освобождён от написания рутинного сетевого кода, в т.ч. обработки сетевых ошибок, сериализации и т.п. • экземпляры приложения на разных устройствах синхронизируются в реальном времени "сами собой" • уменьшается передача данных на клиента, что особо актуально для устройств на слабых мобильных соединениях
  • 10. Команда: мы реализуем CRDT быстрей, чем пишут теорию! * Виктор Грищенко, к.ф.-м.н., УрГУ и Университет Технологии Дельфта (Нидерланды), Банк России, Яндекс, отвечает за науку. Алексей Баландин, УрГУ, Наумен, Билайн, ЭйТи Консалтинг, gosuslugi.ru, отвечает за энтерпрайз. * мы обнаружили это на PaPEC'14
  • 11. Swarm Пишите и звоните нам: victor.grishchenko@gmail.com +7 926 102 33 94