SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Reflex - offline first for human beings 1
Offline-first приложение на Reflex
Докладчик: Денис Яремов
OFFLINE-FIRST
Reflex - offline first for human beings 2
Как я к этому пришел?
OFFLINE ОДНИМ СЛОВОМ
Reflex - offline first for human beings 3
БОЛЬ
4Reflex - offline first for human beings
ShareJS
Redux
DiffSync
5Reflex - offline first for human beings
CAP
6Reflex - offline first for human beings
OFFLINE И ФИЗИКА
Все клиенты видят
одно (общее)
состояние данных
Каждый клиент
может всегда читать
и писать данные
Система работает хорошо, не смотря
на физическое деление сети
C – A – P
7Reflex - offline first for human beings
C + A + P < 3
C – A – P И ВОСПРИЯТИЕ
8Reflex - offline first for human beings
Eventual consistency = ½ consistency
C – A – P И ВОСПРИЯТИЕ
9Reflex - offline first for human beings
Eventual availability?
10Reflex - offline first for human beings
OFFLINE И ФИЗИКА
Все клиенты видят
одно (общее)
состояние данных
Каждый клиент
может всегда читать
и писать данные
Система работает хорошо, не смотря
на физическое деление сети
C – A – P И ВОСПРИЯТИЕ
11Reflex - offline first for human beings
Eventual availability = ½ availability
C – A – P И ВОСПРИЯТИЕ
Reflex - offline first for human beings 12
½ C + ½ A + P = ?
ReflexМетодология для создания интерактивных
offline-first приложений
ЧТО ТАКОЕ REFLEX?
Reflex - offline first for human beings 14
Методология
В ЧЕМ УНИКАЛЬНОСТЬ REFLEX?
15Reflex - offline first for human beings
• Любой клиент
• Любой backend
• Любая* база данных
• Любая поддерживающая технология
КАК УСТРОЕН REFLEX?
16Reflex - offline first for human beings
КАК ДАННЫЕ ХРАНЯТСЯ И ИСПОЛЬЗУЮТСЯ?
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
replica
Permissions
?
Reflex - offline first for human beings 24
КАК РАБОТАТЬ С ДАННЫМИ?
КАК ПРОИСХОДИТ ОБРАБОТКА КОНФЛИКТОВ?
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
GET LATEST
30Reflex - offline first for human beings
КАК ЭТО ВЫГЛЯДИТ ВЖИВУЮ
31Reflex - offline first for human beings
Обратный
HTTP
Простая
выборка
Client-side
storage
Partial
database
replica
Мультиверси
онность
Permissions
Полносвязн
ый graph
данных на
клиенте
КОНТАКТЫ
Reflex - offline first for human beings 32
Денис Яремов
denis.yaremov@gmail.com

Weitere ähnliche Inhalte

Andere mochten auch

Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"Fwdays
 
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...Fwdays
 
Michael North "The Road to Native Web Components"
Michael North "The Road to Native Web Components"Michael North "The Road to Native Web Components"
Michael North "The Road to Native Web Components"Fwdays
 
Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений"
Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений" Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений"
Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений" Fwdays
 
Алексей Волков "Интерактивные декларативные графики на React+D3"
Алексей Волков "Интерактивные декларативные графики на React+D3"Алексей Волков "Интерактивные декларативные графики на React+D3"
Алексей Волков "Интерактивные декларативные графики на React+D3"Fwdays
 
Илья Прукко: "Как дизайнеру не становиться художником"
Илья Прукко: "Как дизайнеру не становиться художником"Илья Прукко: "Как дизайнеру не становиться художником"
Илья Прукко: "Как дизайнеру не становиться художником"Fwdays
 
"Spring Boot. Boot up your development" Сергей Моренец
"Spring Boot. Boot up your development" Сергей Моренец"Spring Boot. Boot up your development" Сергей Моренец
"Spring Boot. Boot up your development" Сергей МоренецFwdays
 
Александр Воронов | Building CLI with Swift
Александр Воронов | Building CLI with SwiftАлександр Воронов | Building CLI with Swift
Александр Воронов | Building CLI with SwiftFwdays
 
Сергей Жук "Android Performance Tips & Tricks"
Сергей Жук "Android Performance Tips & Tricks"Сергей Жук "Android Performance Tips & Tricks"
Сергей Жук "Android Performance Tips & Tricks"Fwdays
 
4 puchnina.pptx
4 puchnina.pptx4 puchnina.pptx
4 puchnina.pptxFwdays
 
"Красная книга веб-разработчика" Виктор Полищук
"Красная книга веб-разработчика" Виктор Полищук"Красная книга веб-разработчика" Виктор Полищук
"Красная книга веб-разработчика" Виктор ПолищукFwdays
 
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"Fwdays
 
Светлана Старикова "Building a self-managing team: why you should not have e...
 Светлана Старикова "Building a self-managing team: why you should not have e... Светлана Старикова "Building a self-managing team: why you should not have e...
Светлана Старикова "Building a self-managing team: why you should not have e...Fwdays
 
Трансформация команды: от инди разработки к играм с коммерческой успешностью
Трансформация команды: от инди разработки к играм с коммерческой успешностьюТрансформация команды: от инди разработки к играм с коммерческой успешностью
Трансформация команды: от инди разработки к играм с коммерческой успешностьюFwdays
 
"Query Execution: Expectation - Reality (Level 300)" Денис Резник
"Query Execution: Expectation - Reality (Level 300)" Денис Резник"Query Execution: Expectation - Reality (Level 300)" Денис Резник
"Query Execution: Expectation - Reality (Level 300)" Денис РезникFwdays
 
Евгений Обрезков "Behind the terminal"
Евгений Обрезков "Behind the terminal"Евгений Обрезков "Behind the terminal"
Евгений Обрезков "Behind the terminal"Fwdays
 
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...Fwdays
 
Fighting Fat Models (Богдан Гусев)
Fighting Fat Models (Богдан Гусев)Fighting Fat Models (Богдан Гусев)
Fighting Fat Models (Богдан Гусев)Fwdays
 

Andere mochten auch (19)

Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
 
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
 
Michael North "The Road to Native Web Components"
Michael North "The Road to Native Web Components"Michael North "The Road to Native Web Components"
Michael North "The Road to Native Web Components"
 
Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений"
Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений" Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений"
Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений"
 
Алексей Волков "Интерактивные декларативные графики на React+D3"
Алексей Волков "Интерактивные декларативные графики на React+D3"Алексей Волков "Интерактивные декларативные графики на React+D3"
Алексей Волков "Интерактивные декларативные графики на React+D3"
 
Designing for Privacy
Designing for PrivacyDesigning for Privacy
Designing for Privacy
 
Илья Прукко: "Как дизайнеру не становиться художником"
Илья Прукко: "Как дизайнеру не становиться художником"Илья Прукко: "Как дизайнеру не становиться художником"
Илья Прукко: "Как дизайнеру не становиться художником"
 
"Spring Boot. Boot up your development" Сергей Моренец
"Spring Boot. Boot up your development" Сергей Моренец"Spring Boot. Boot up your development" Сергей Моренец
"Spring Boot. Boot up your development" Сергей Моренец
 
Александр Воронов | Building CLI with Swift
Александр Воронов | Building CLI with SwiftАлександр Воронов | Building CLI with Swift
Александр Воронов | Building CLI with Swift
 
Сергей Жук "Android Performance Tips & Tricks"
Сергей Жук "Android Performance Tips & Tricks"Сергей Жук "Android Performance Tips & Tricks"
Сергей Жук "Android Performance Tips & Tricks"
 
4 puchnina.pptx
4 puchnina.pptx4 puchnina.pptx
4 puchnina.pptx
 
"Красная книга веб-разработчика" Виктор Полищук
"Красная книга веб-разработчика" Виктор Полищук"Красная книга веб-разработчика" Виктор Полищук
"Красная книга веб-разработчика" Виктор Полищук
 
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
 
Светлана Старикова "Building a self-managing team: why you should not have e...
 Светлана Старикова "Building a self-managing team: why you should not have e... Светлана Старикова "Building a self-managing team: why you should not have e...
Светлана Старикова "Building a self-managing team: why you should not have e...
 
Трансформация команды: от инди разработки к играм с коммерческой успешностью
Трансформация команды: от инди разработки к играм с коммерческой успешностьюТрансформация команды: от инди разработки к играм с коммерческой успешностью
Трансформация команды: от инди разработки к играм с коммерческой успешностью
 
"Query Execution: Expectation - Reality (Level 300)" Денис Резник
"Query Execution: Expectation - Reality (Level 300)" Денис Резник"Query Execution: Expectation - Reality (Level 300)" Денис Резник
"Query Execution: Expectation - Reality (Level 300)" Денис Резник
 
Евгений Обрезков "Behind the terminal"
Евгений Обрезков "Behind the terminal"Евгений Обрезков "Behind the terminal"
Евгений Обрезков "Behind the terminal"
 
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
 
Fighting Fat Models (Богдан Гусев)
Fighting Fat Models (Богдан Гусев)Fighting Fat Models (Богдан Гусев)
Fighting Fat Models (Богдан Гусев)
 

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

"Cocaine — облачная платформа Яндекса". Андрей Сибирёв, Яндекс
"Cocaine — облачная платформа Яндекса". Андрей Сибирёв, Яндекс"Cocaine — облачная платформа Яндекса". Андрей Сибирёв, Яндекс
"Cocaine — облачная платформа Яндекса". Андрей Сибирёв, ЯндексYandex
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийsnowytoxa
 
CodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
CodeFest 2014. Сибирев А. — Управление инфраструктурой под CocaineCodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
CodeFest 2014. Сибирев А. — Управление инфраструктурой под CocaineCodeFest
 
Состояние Состояния / Алексей Охрименко (IPONWEB)
Состояние Состояния / Алексей Охрименко (IPONWEB)Состояние Состояния / Алексей Охрименко (IPONWEB)
Состояние Состояния / Алексей Охрименко (IPONWEB)Ontico
 
Symfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork EnterpriseSymfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork EnterpriseDmitry Semenov
 
SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Fwdays
 
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...Yandex
 
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)Ontico
 
Решения Dell для защиты данных и оптимизации ресурсов хранения
Решения Dell для защиты данных и оптимизации ресурсов храненияРешения Dell для защиты данных и оптимизации ресурсов хранения
Решения Dell для защиты данных и оптимизации ресурсов храненияDell_Russia
 
Алексей Иванкин: Highload + PHP
Алексей Иванкин: Highload + PHPАлексей Иванкин: Highload + PHP
Алексей Иванкин: Highload + PHPOleg Poludnenko
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментовVitalii Morvaniuk
 
Как 100 000 раз в секунду выбирать правильный рекламный материал? Programmati...
Как 100 000 раз в секунду выбирать правильный рекламный материал? Programmati...Как 100 000 раз в секунду выбирать правильный рекламный материал? Programmati...
Как 100 000 раз в секунду выбирать правильный рекламный материал? Programmati...Ontico
 
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...Positive Hack Days
 
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложенийАнтон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложенийPositive Hack Days
 
Чему мы можем научиться у Lisp'а?
Чему мы можем научиться у Lisp'а?Чему мы можем научиться у Lisp'а?
Чему мы можем научиться у Lisp'а?Vsevolod Dyomkin
 
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)Ontico
 
Реальный DevOps в энтерпрайзе
Реальный DevOps в энтерпрайзеРеальный DevOps в энтерпрайзе
Реальный DevOps в энтерпрайзеAlexander Taratorin
 
Дмитрий Семенов "Архитектура Upwork"
Дмитрий Семенов "Архитектура Upwork"Дмитрий Семенов "Архитектура Upwork"
Дмитрий Семенов "Архитектура Upwork"Fwdays
 

Ähnlich wie Денис Яремов "Offline-first приложение на Reflex" (20)

Cocaine!!!
Cocaine!!!Cocaine!!!
Cocaine!!!
 
"Cocaine — облачная платформа Яндекса". Андрей Сибирёв, Яндекс
"Cocaine — облачная платформа Яндекса". Андрей Сибирёв, Яндекс"Cocaine — облачная платформа Яндекса". Андрей Сибирёв, Яндекс
"Cocaine — облачная платформа Яндекса". Андрей Сибирёв, Яндекс
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложений
 
CodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
CodeFest 2014. Сибирев А. — Управление инфраструктурой под CocaineCodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
CodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
 
Состояние Состояния / Алексей Охрименко (IPONWEB)
Состояние Состояния / Алексей Охрименко (IPONWEB)Состояние Состояния / Алексей Охрименко (IPONWEB)
Состояние Состояния / Алексей Охрименко (IPONWEB)
 
Symfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork EnterpriseSymfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork Enterprise
 
SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"
 
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и...
 
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
 
Решения Dell для защиты данных и оптимизации ресурсов хранения
Решения Dell для защиты данных и оптимизации ресурсов храненияРешения Dell для защиты данных и оптимизации ресурсов хранения
Решения Dell для защиты данных и оптимизации ресурсов хранения
 
Алексей Иванкин: Highload + PHP
Алексей Иванкин: Highload + PHPАлексей Иванкин: Highload + PHP
Алексей Иванкин: Highload + PHP
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментов
 
Как 100 000 раз в секунду выбирать правильный рекламный материал? Programmati...
Как 100 000 раз в секунду выбирать правильный рекламный материал? Programmati...Как 100 000 раз в секунду выбирать правильный рекламный материал? Programmati...
Как 100 000 раз в секунду выбирать правильный рекламный материал? Programmati...
 
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
23may 1300 valday антон сапожников 'еще один недостаток современных клиент се...
 
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложенийАнтон Сапожников. Еще один недостаток современных клиент-серверных приложений
Антон Сапожников. Еще один недостаток современных клиент-серверных приложений
 
Чему мы можем научиться у Lisp'а?
Чему мы можем научиться у Lisp'а?Чему мы можем научиться у Lisp'а?
Чему мы можем научиться у Lisp'а?
 
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
 
Реальный DevOps в энтерпрайзе
Реальный DevOps в энтерпрайзеРеальный DevOps в энтерпрайзе
Реальный DevOps в энтерпрайзе
 
Дмитрий Семенов "Архитектура Upwork"
Дмитрий Семенов "Архитектура Upwork"Дмитрий Семенов "Архитектура Upwork"
Дмитрий Семенов "Архитектура Upwork"
 

Mehr von Fwdays

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...Fwdays
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil TopchiiFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro SpodaretsFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym KindritskyiFwdays
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...Fwdays
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...Fwdays
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...Fwdays
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...Fwdays
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...Fwdays
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...Fwdays
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...Fwdays
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...Fwdays
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra MyronovaFwdays
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...Fwdays
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...Fwdays
 

Mehr von Fwdays (20)

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
 

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

Hinweis der Redaktion

  1. Кто ты? Рефлекс єто Offline first Интерактивные приложения Меньше кода, быстрее приложение
  2. 4 года назад проект Надежность Интерактивность Отказоустойчивость ~ offline-capable Пытался найти готовую технологию Meteor Hoodie / PouchDB / CouchDB Offline-first самостоятельно ------------- ТО ЧТО ПОЛУЧИЛОСЬ ЭТО ---------------------
  3. Офлайн – танго на обильно заминированном поле Большое количество нюансов Вопросы последовательности событий Очень тонкий момент (Породили неклассическую физику) Влияют на программирование offline
  4. С этой болью столкнулись многие Подымите руку кто писал offline-first? Я снимаю шляпу Особенности Завязка на базу данных Завязка на бекенд (NodeJS) Завязка на клиентё На тот момент список был короче Заставило заняться собственным решением
  5. Подымите пожалуйста руки Спасибо!
  6. Offline тесно связан с этой теоремой а как следствие с физикой происходящего Сейчас я это объясню
  7. Нельзя выбрать C A P одновременно
  8. Eventual consistency – расслабленная, неполноценная форма Consistency половинка от полноценной consistency Пример, лайки
  9. Чем может являться расслабленная форма Availability?
  10. Eventual availability это расслабленная форма Availability
  11. Получается что OF связан с CAP и образует новую ранее не исследованную систему уступок и выгод Это принцип позволяет по новому взглянуть на программирование? И сейчас мы это сделаем
  12. Не библиотека Не фонотека Не картотека Это методология
  13. Уникальность в Клиент Бекенд База данных Поддерживающая технология (WebSocket / Socket, Angular / Ember / React …)
  14. Рефлекс состоит из нескольких принципов, все они одинаково важны
  15. Мы начнем с первой из них Как данные хранятся и
  16. Клиент всегда работает с локальными данными Partial database replica on the client Client-side storage (IndexedDB, WebSQL, Sqlite, …)
  17. Обратная связь Это дает интерактивность Большой объем данных лишь при первой загрузке приложения Дальше данные загружаются из локальной базы
  18. Современные системы используют подписки на выборки Минус в том что необходимо писать выборки Каждая выборка требует большое количество поддерживающего кода Обычные клиент-серверные приложения по сути состоят из выборок Каждая выборка решает одну задачу получение / сохранение данных Каждая выборка генерирует копипаст Минус в том что нужно вести учет выборок а так-же того сколько данных они возвращают Рефлекс идет по иному пути Jira, Trello Рефлекс предлагает использовать подписки на пермишены Каждое данное создается с ссылкой на пермишен Если пользователю разрешено получать это данное то в его ролях должен быть этот пермишен На основании этого легко рассчитать данные которые относятся к пользователю То есть пермишены это не только безопасность
  19. Данные из базы содержат суррогаты ссылок В таком виде пользоваться такими данными не удобно Reflex создает полносвязный граф замещая строчные ссылки языковими У вас на клиенте есть полносвязная модель данных с которой удобно работать Не нужно создавать проекции Не нужно писать код конвертирующий данные из одного формата в другой
  20. И самое интересное
  21. Данные в современном мире редактируются деструктивно Нет возможности просмотреть каким было данное в прошлом
  22. Что такое конфликт Какую версию вы предпочли бы оставить? Reflex идет по третьему пути, кто уже догадался что это за путь?
  23. Мы сохраняем все версии (Вообще все!!!) Insert only (даже удаление) Это позволяет предотвратить уничтожение данных (Immutable data) Возможность ползунком перетянуть время назад Делегировать резолюшен конфликтов пользователю Удобство для пользователя Когда одна из версий затирает другую это кошмар И так или требуется внимания пользователя Нам не нужны логи Меньше мусора в базе Нет нужды в синхронизации – система работает быстрее Как отобразить такие данные: Пример с формочкой
  24. Как работать с такими данными как их получить? Как получать такие данные Пример с timestamp > user timestamp
  25. Что происходит на схеме Какие данные должен получить пользователь Как понять что данное не нужно отправлять на клиент