Денис Яремов "Offline-first приложение на Reflex"

Preview:

Citation preview

1Reflex - offline first for human beings

Offline-first приложение на ReflexДокладчик: Денис Яремов

2Reflex - offline first for human beings

OFFLINE-FIRST

Как я к этому пришел?

3Reflex - offline first for human beings

OFFLINE ОДНИМ СЛОВОМ

БОЛЬ

4Reflex - offline first for human beings

ShareJS

Redux

DiffSync

5Reflex - offline first for human beings

CAP

6Reflex - offline first for human beings

OFFLINE И ФИЗИКА

Все клиенты видят одно (общее)

состояние данных

Каждый клиентможет всегда читать и писать данные

Система работает хорошо, не смотря на физическое деление сети

7Reflex - offline first for human beings

C – A – P

C + A + P < 3

8Reflex - offline first for human beings

C – A – P И ВОСПРИЯТИЕ

Eventual consistency = ½ consistency

9Reflex - offline first for human beings

C – A – P И ВОСПРИЯТИЕ

Eventual availability?

10Reflex - offline first for human beings

OFFLINE И ФИЗИКА

Все клиенты видят одно (общее)

состояние данных

Каждый клиентможет всегда читать и писать данные

Система работает хорошо, не смотря на физическое деление сети

11Reflex - offline first for human beings

C – A – P И ВОСПРИЯТИЕ

Eventual availability = ½ availability

12Reflex - offline first for human beings

C – A – P И ВОСПРИЯТИЕ

½ C + ½ A + P = ?

ReflexМетодология для создания интерактивных

offline-first приложений

14Reflex - offline first for human beings

ЧТО ТАКОЕ REFLEX?

Методология

15Reflex - offline first for human beings

В ЧЕМ УНИКАЛЬНОСТЬ REFLEX?

• Любой клиент• Любой backend• Любая* база данных• Любая поддерживающая технология

16Reflex - offline first for human beings

КАК УСТРОЕН REFLEX?

17Reflex - offline first for human beings

КАК ДАННЫЕ ХРАНЯТСЯ И ИСПОЛЬЗУЮТСЯ?

?

18Reflex - offline first for human beings

КАК ДАННЫЕ ХРАНЯТСЯ И ИСПОЛЬЗУЮТСЯ?

19Reflex - offline first for human beings

КАК ПРОИСХОДИТ ОБМЕН ДАННЫМИ?

?

Client-side storage

Partial database

replica

20Reflex - offline first for human beings

КАК ПРОИСХОДИТ ОБМЕН ДАННЫМИ?

21Reflex - offline first for human beings

КАК ИДЕНТИФИЦИРОВАТЬ ДАННЫЕ ПОЛЬЗОВАТЕЛЯ?

Обратный HTTP

Простая выборка

Client-side storage

Partial database

replica

?

22Reflex - offline first for human beings

КАК ИДЕНТИФИЦИРОВАТЬ ДАННЫЕ ПОЛЬЗОВАТЕЛЯ?

23Reflex - offline first for human beings

КАК РАБОТАТЬ С ДАННЫМИ?

Обратный HTTP

Простая выборка

Client-side storage

Partial database

replicaPermissions

?

24Reflex - offline first for human beings

КАК РАБОТАТЬ С ДАННЫМИ?

25Reflex - offline first for human beings

КАК ПРОИСХОДИТ ОБРАБОТКА КОНФЛИКТОВ?

Обратный HTTP

Простая выборка

Client-side storage

Partial database

replica

?Permissions

Полносвязный graph

данных на клиенте

26Reflex - offline first for human beings

КАК ПРОИСХОДИТ ОБРАБОТКА КОНФЛИКТОВ?

27Reflex - offline first for human beings

КАК ПРОИСХОДИТ ОБРАБОТКА КОНФЛИКТОВ?

28Reflex - offline first for human beings

КОНФЛИКТЫ – ИНОГДА ЭТО ХОРОШО

29Reflex - offline first for human beings

КОНФЛИКТЫ – ИНОГДА ЭТО ХОРОШО

30Reflex - offline first for human beings

GET LATEST

31Reflex - offline first for human beings

КАК ЭТО ВЫГЛЯДИТ ВЖИВУЮ

Обратный HTTP

Простая выборка

Client-side storage

Partial database

replica

Мультиверсионность

Permissions

Полносвязный graph

данных на клиенте

32Reflex - offline first for human beings

КОНТАКТЫ

Денис Яремовdenis.yaremov@gmail.com