Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Антон Давыдов: Лебедь, рак и щука или Всё о кол...

Антон Давыдов: Лебедь, рак и щука или Всё о коллаборативном доступе в мобильном приложении

CocoaHeads

May 07, 2018
Tweet

More Decks by CocoaHeads

Other Decks in Technology

Transcript

  1. Лебедь, рак и щука или Всё о коллаборативном доступе в

    мобильном приложении                                       Давыдов Антон                                       EPAM
  2. Обо мне • Заканчивал ЛЭТИ по направлению "Разработка распределённых программных

    систем" • iOS разработчик в EPAM • Делаю нескучной жизнь мобильного сообщества в EPAM Санкт-Петербург 2
  3. Немного постартапим: приложение для проведения онлайн кодинг-интервью • Пользователи могут

    редактировать текстовый документ • Пользователи могут видеть, что печатают другие пользователи 3
  4. Требования к продукту [UPD] • Пользователи могут редактировать текстовый документ

    одновременно • Пользователи могут видеть, что печатают другие пользователи 14
  5. Вариант 3: Обмен операциями и их сортировка • Лог всех

    операций будет храниться на клиенте 23
  6. Вариант 3: Обмен операциями и их сортировка • Лог всех

    операций будет храниться на клиенте • По логу можно восстановить конечный текст 23
  7. Вариант 3: Обмен операциями и их сортировка • Лог всех

    операций будет храниться на клиенте • По логу можно восстановить конечный текст • Новая операция требует пересоздания текста (нет коммутативности) 23
  8. Требования к продукту [UPD] • Пользователи могут конкурентно редактировать текстовый

    документ • Пользователи должны увидеть одинаковый результат 24
  9. Требования к продукту [UPD] • Пользователи могут конкурентно редактировать текстовый

    документ • Пользователи должны увидеть одинаковый результат • Пользователи не должны ждать и страдать 24
  10. Opera&onal Transforma&on - это • Гарантия сходимости • Трансформация и

    хранение операций на сервере • Одновременная трансформация одной операции на сервере 31
  11. Opera&onal Transforma&on - это • Гарантия сходимости • Трансформация и

    хранение операций на сервере • Одновременная трансформация одной операции на сервере • Формирование очереди на отправку на клиенте, ожидание потверждения 31
  12. Opera&onal Transforma&on - это :( • Большая нагрузка на сервера

    • Не применим для P2P • Непереносимость долгих разрывов сети 32
  13. Обновленные требования к продукту • Пользователи могут конкурентно редактировать текстовый

    документ • Пользователи должны увидеть одинаковый результат 35
  14. Обновленные требования к продукту • Пользователи могут конкурентно редактировать текстовый

    документ • Пользователи должны увидеть одинаковый результат • Пользователи не должны ждать и страдать 35
  15. Обновленные требования к продукту • Пользователи могут конкурентно редактировать текстовый

    документ • Пользователи должны увидеть одинаковый результат • Пользователи не должны ждать и страдать • Устойчивость к долгим разрывам сети 35
  16. Обновленные требования к продукту • Пользователи могут конкурентно редактировать текстовый

    документ • Пользователи должны увидеть одинаковый результат • Пользователи не должны ждать и страдать • Устойчивость к долгим разрывам сети • Устойчивость к блокировкам со стороны Роскомнадзора 35
  17. Что умеет CloudKit делать с данными? • Хранить • Читать

    и изменять • Уведомлять об изменениях 37
  18. Conflict-free Replicated Data Types (CRDT) - это: • Структуры данных

    • Универсальный инструмент • Два вида: передача состояния и обмен операциями 41
  19. Conflict-free Replicated Data Types (CRDT) - это: • Структуры данных

    • Универсальный инструмент • Два вида: передача состояния и обмен операциями • Для использования сервер не обязателен 41
  20. Conflict-free Replicated Data Types (CRDT) - это: • Структуры данных

    • Универсальный инструмент • Два вида: передача состояния и обмен операциями • Для использования сервер не обязателен • Порядок слияния не важен 41
  21. Conflict-free Replicated Data Types (CRDT) - это: • Структуры данных

    • Универсальный инструмент • Два вида: передача состояния и обмен операциями • Для использования сервер не обязателен • Порядок слияния не важен • Конкурентные операции коммутативны 41
  22. Conflict-free Replicated Data Types (CRDT) - это :( • Чем

    больше реплик, тем больше метаинформации 46
  23. Conflict-free Replicated Data Types (CRDT) - это :( • Чем

    больше реплик, тем больше метаинформации • Накопление метаинформации 46
  24. Счастливый пользователь - это когда: • Op$mis$c UI • Автоматическая

    синхронизация • Сеть не влияет на производительность 47
  25. Счастливый пользователь - это когда: • Op$mis$c UI • Автоматическая

    синхронизация • Сеть не влияет на производительность • Пользователи видят одинаковый результат 47
  26. Счастливый пользователь - это когда: • Op$mis$c UI • Автоматическая

    синхронизация • Сеть не влияет на производительность • Пользователи видят одинаковый результат • Данные не теряются 47
  27. О чём стоит помнить: • 20% функциональности требует 80% сил

    и времени • Клиентские время может отставать 48
  28. О чём стоит помнить: • 20% функциональности требует 80% сил

    и времени • Клиентские время может отставать • Не надейтесь на скорость сети 48
  29. О чём стоит помнить: • 20% функциональности требует 80% сил

    и времени • Клиентские время может отставать • Не надейтесь на скорость сети • Выбирайте протокол передачи данных с гарантией доставки 48
  30. О чём стоит помнить: • 20% функциональности требует 80% сил

    и времени • Клиентские время может отставать • Не надейтесь на скорость сети • Выбирайте протокол передачи данных с гарантией доставки • "Умный" сервер не обязателен 48
  31. О чём стоит помнить: • 20% функциональности требует 80% сил

    и времени • Клиентские время может отставать • Не надейтесь на скорость сети • Выбирайте протокол передачи данных с гарантией доставки • "Умный" сервер не обязателен • Opensource сообществу нужна помощь! 48
  32. Почитать про OT • Opera'onal Transforma'on: An Introduc'on • Building

    a real-'me collabora've editor using Opera'onal Transforma'on • High-Latency, Low-Bandwidth Windowing in the Jupiter Collabora'on System 49
  33. Почитать про CRDT • Evalua'ng CRDTs for Real-'me Document Edi'ng

    • High Responsiveness for Group Edi'ng CRDTs • Merging OT and CRDT Algorithms • CRDTs: Consistency without concurrency control • CRDT notes 50
  34. Почитать про Совместное редактирование • Data Laced with History: Causal

    Trees & Opera:onal CRDTs • Data Consistency for P2P Collabora:ve Edi:ng • Towards a unified theory of Opera:onal Transforma:on and CRDT • Clear in the iCloud • Логические часы 51
  35. Примеры • h#ps:/ /github.com/atom/teletype (Teletype Atom CRDT) • h#ps:/ /github.com/archagon/crdt-playground

    (SwiC CRDT) • h#ps:/ /github.com/gritzko/ron (CRDT) • h#ps:/ /github.com/y-js/yjs (JS CRDT) • h#ps:/ /github.com/automerge/automerge • h#ps:/ /github.com/josephg/ShareJS (JS OT) 52