11
Swarm синхронизация данных для мобильных и веб-приложений [email protected]

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

Embed Size (px)

DESCRIPTION

Технология Swarm - тотальное кеширование данных на мобильных устройствах.

Citation preview

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

Swarmсинхронизация данных

для мобильных и веб-приложений

[email protected]

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

Бесконечная память!

У Google в 1998 было 147GB данных. Сейчас, за $100 можно купить 128GB microSD карту для телефона! Память – дешёвая и почти бесконечная!

На новые телефоны ставят 64-битные многоядерные процессоры – этого достаточно для сложной логики.

20141998

Сейчас, узкое место – сеть!

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

Пользователи ждут загрузки данных часто и подолгу!

Мобильные и веб- приложения "едят" всё больше данных, однако время отклика в сетях не улучшается (физика). !

Мобильные устройства работают в беспроводных сетях, которые по природе своей ненадежны (физика). !У одного пользователя несколько устройств: планшет, телефон... Он ожидает мгновенной синхронизации данных между устройствами. !

Сеть медленна и ненадёжна. !И?

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

Истории из жизниПользователь едет в аэропорт, опаздывая на рейс. Регистрируется с телефона на сайте авиакомпании. Нажав ОК, не заметил, что пропал интернет. Все данные потеряны.

В iCloud, пропадающий WiFi вызвал сбой синхронизации. Пользователь сделал 10 слайдов, но на сервер сохранился только первый.

При отправке письма из веб-интерфейса в вагоне метро, пользователь не заметил, что пропал интернет. Браузер пишет "Web page not available", текст письма потерян.

На компьютерной конференции, WiFi сеть перегружена, 3G "тормозит". Есть замечательный мобильный сайт с расписанием докладов, но участники предпочитают смотреть в буклет.

Официант делает заказ через приложение в iPod. Но, на втором этаже ресторана в углу, WiFi не ловит. Обидная заминка, официант уходит ловить WiFi.

В кафе ЦПКиО, клиент понимает, что ему необходимо воспользоваться клиент-банком. WiFi крайне ненадёжный, приложение показывает "часики" и ошибки.

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

Решение: всё кэшировать и синхронизировать

Когда данные уже получены, кэширование – бесплатно! Если данные заранее запасены в кэше:

• никаких сообщений "идет загрузка..."; • можно работать в оффлайне; • неустойчивое соединение – не проблема

Пользователь очень доволен!

Но с "тотальным" кэшированием есть одна загвоздка:

• данные меняются и локально и на сервере • а значит, инвалидации кеша недостаточно • нужны версионирование и синхронизация

(это сложней)

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

CRDT позволяет "тотальное" кэширование и синхронизациюCRDT: технология синхронизации данных

• фоновая синхронизация в режиме реального времени • версионирование (можно отличить новое от виденного) • поддержка работы в offline, кэширования, предзагрузки • бесконфликтное слияние конкурентных изменений • CRDT используются в Cassandra, Riak

Causal trees: совместное редактирование (как Google Docs) • это основанная на CRDT замена для OT* • полностью кешируется, работает в оффлайне • реализуемо в браузерах (JavaScript, contentEditable) • сохраняет авторство (кто что написал?) • показ изменений в тексте (что поменялось?) • первоначально разработано для letters.yandex.ru

* Operational Transformation

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

Swarm: CRDT в браузереSwarm: кэш объектов с real-time синхронизацией

• библиотека для репликации модели (M из MVC) • как "Dropbox для объектов" • клиентский код: JavaScript (ObjC, Java в плане) • серверный код: node.js (Java в плане) • Backbone-подобная, ~2 тыс. строк кода

Citrea: совместный редактор текста • работает поверх DOM • отслеживает историю изменений и авторство • как "Google Docs для вашего сайта"

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

Создание системы тотального кэша с нуля – это человеко-годы

"There are only two hard things in Computer Science: cache invalidation and naming things" – некий P.Karlton

Хранение данных на стороне клиента превращает Web систему (простую) в AP* систему (сложную)

Разработка займёт человеко-годы.

Мы эту работу проделали!

* по теореме CAP

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

Преимущества наших решений

• приложение работает с локальной репликой данных, временная пропажа интернета не вызывает ошибок и потери данных (особенно актуально для веб-приложений)

• мгновенное время отклика приложения, т.к. не нужна пробежка к серверу на большинство действий пользователя

• разработчик освобождён от написания рутинного сетевого кода, в т.ч. обработки сетевых ошибок, сериализации и т.п.

• экземпляры приложения на разных устройствах синхронизируются в реальном времени "сами собой"

• уменьшается передача данных на клиента, что особо актуально для устройств на слабых мобильных соединениях

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

Команда: мы реализуем CRDT быстрей, чем пишут теорию! *

Виктор Грищенко, к.ф.-м.н., УрГУ и Университет Технологии Дельфта (Нидерланды), Банк России, Яндекс, отвечает за науку.

Алексей Баландин, УрГУ, Наумен, Билайн, ЭйТи Консалтинг, gosuslugi.ru, отвечает за энтерпрайз.

* мы обнаружили это на PaPEC'14

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

SwarmПишите и звоните нам:

[email protected] +7 926 102 33 94