SlideShare a Scribd company logo
1 of 44
Data flow layer
Захарченко Артем
Зачем мы делаем SPA?
1)Скорость отклика
1)Заимствование паттернов из десктоп мира
1)Перенос части логики на клиент
1)Рынок, требующий такие приложения
Networking
Rendering performance
Rendering performance
Rendering performance
Rendering performance
CSS Triggers
Вычисления
Вычисления
Вычисления
Вычисления
Garbage collection
Who cares about M?
js-data.io
Side effects
Data changing strategy
1)Push/Pull Observer
1)Data binding (get/set)
1)Dirty checking
1)Immutable data structure
Чем же является приложение?
Принципы
• Single source of truth
• State is read-only
• Change are made with pure functions
Redux
Разделение ответственности
• Отрисовка отображения
• Получение данных из action
• Изменения данных в reducer
Redux
Предполагаем, что ваши данные не будут мутировать
Что это значит?
Состояние иммутабельно
Action
Reducer
Store
Mutable vs Immutable
Mutable
• Сравнения по значениям
• Оптимизация платформ
• Все знают как это
работает
Immutable
• Сравнения по ссылке
• Дополнительные
зависимости
• Падение
производительности на
маленьких объемах
• Надо обучать команду
Как итог
1)Достаточно простой концепт
2)Простые функции и объекты
3)Последовательная работа с данными
4)Это не только о React.js
5)Отличная интеграция с любыми библиотеками
Behavior-Event-State-Tree (BEST)
BEST
BEST
BEST
MVI
Intent
Model
View
@Blackrabbit99

More Related Content

Similar to Data flow layer. Захарченко Артем

Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tipsКостянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tipsLEDC 2016
 
Tools to ensure quality of information system
Tools to ensure quality of information system Tools to ensure quality of information system
Tools to ensure quality of information system soft-point
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance managementSQALab
 
Создание и развитие отечественной платформы с открытым программным кодом для ...
Создание и развитие отечественной платформы с открытым программным кодом для ...Создание и развитие отечественной платформы с открытым программным кодом для ...
Создание и развитие отечественной платформы с открытым программным кодом для ...ARCCN
 
Лучшие практики оптимизации ресурсов виртуального ЦОД
Лучшие практики оптимизации ресурсов виртуального ЦОДЛучшие практики оптимизации ресурсов виртуального ЦОД
Лучшие практики оптимизации ресурсов виртуального ЦОДBAKOTECH
 
Презентация Лучшие практики оптимизации ресурсов виртуального ЦОД
Презентация Лучшие практики оптимизации  ресурсов виртуального ЦОДПрезентация Лучшие практики оптимизации  ресурсов виртуального ЦОД
Презентация Лучшие практики оптимизации ресурсов виртуального ЦОДMarina Gryshko
 
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...CodeFest
 
О чем стоит подумать, приступая к разработке высоконагруженных систем
О чем стоит подумать, приступая к разработке высоконагруженных системО чем стоит подумать, приступая к разработке высоконагруженных систем
О чем стоит подумать, приступая к разработке высоконагруженных системArtem Volftrub
 
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Positive Hack Days
 
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)Ontico
 
Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование Iosif Itkin
 
Управление ИТ-инфраструктурой с технологиями Dell Software
Управление ИТ-инфраструктурой с технологиями Dell SoftwareУправление ИТ-инфраструктурой с технологиями Dell Software
Управление ИТ-инфраструктурой с технологиями Dell SoftwareDell_Russia
 
VMUG UA #1 BMC Capacity Optimization
VMUG UA #1 BMC Capacity OptimizationVMUG UA #1 BMC Capacity Optimization
VMUG UA #1 BMC Capacity Optimization Amazon Web Services
 
Нагрузочное тестирование web проектов
Нагрузочное тестирование web проектовНагрузочное тестирование web проектов
Нагрузочное тестирование web проектовSQALab
 
как обеспечить качественное функционирование ит систем для маркетинга и прода...
как обеспечить качественное функционирование ит систем для маркетинга и прода...как обеспечить качественное функционирование ит систем для маркетинга и прода...
как обеспечить качественное функционирование ит систем для маркетинга и прода...soft-point
 
Qualitative operation of IT systems Pavel Barketov
Qualitative operation of IT systems Pavel BarketovQualitative operation of IT systems Pavel Barketov
Qualitative operation of IT systems Pavel Barketovsoft-point
 
Qualitative operation of IT systems
Qualitative operation of IT systemsQualitative operation of IT systems
Qualitative operation of IT systemssoft-point
 

Similar to Data flow layer. Захарченко Артем (20)

Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tipsКостянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
 
Tools to ensure quality of information system
Tools to ensure quality of information system Tools to ensure quality of information system
Tools to ensure quality of information system
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance management
 
Java Performance
Java PerformanceJava Performance
Java Performance
 
Создание и развитие отечественной платформы с открытым программным кодом для ...
Создание и развитие отечественной платформы с открытым программным кодом для ...Создание и развитие отечественной платформы с открытым программным кодом для ...
Создание и развитие отечественной платформы с открытым программным кодом для ...
 
Лучшие практики оптимизации ресурсов виртуального ЦОД
Лучшие практики оптимизации ресурсов виртуального ЦОДЛучшие практики оптимизации ресурсов виртуального ЦОД
Лучшие практики оптимизации ресурсов виртуального ЦОД
 
Презентация Лучшие практики оптимизации ресурсов виртуального ЦОД
Презентация Лучшие практики оптимизации  ресурсов виртуального ЦОДПрезентация Лучшие практики оптимизации  ресурсов виртуального ЦОД
Презентация Лучшие практики оптимизации ресурсов виртуального ЦОД
 
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
 
О чем стоит подумать, приступая к разработке высоконагруженных систем
О чем стоит подумать, приступая к разработке высоконагруженных системО чем стоит подумать, приступая к разработке высоконагруженных систем
О чем стоит подумать, приступая к разработке высоконагруженных систем
 
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
 
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
 
Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование
 
DATA CLUSTER
DATA CLUSTERDATA CLUSTER
DATA CLUSTER
 
Управление ИТ-инфраструктурой с технологиями Dell Software
Управление ИТ-инфраструктурой с технологиями Dell SoftwareУправление ИТ-инфраструктурой с технологиями Dell Software
Управление ИТ-инфраструктурой с технологиями Dell Software
 
VMUG UA #1 BMC Capacity Optimization
VMUG UA #1 BMC Capacity OptimizationVMUG UA #1 BMC Capacity Optimization
VMUG UA #1 BMC Capacity Optimization
 
Нагрузочное тестирование web проектов
Нагрузочное тестирование web проектовНагрузочное тестирование web проектов
Нагрузочное тестирование web проектов
 
как обеспечить качественное функционирование ит систем для маркетинга и прода...
как обеспечить качественное функционирование ит систем для маркетинга и прода...как обеспечить качественное функционирование ит систем для маркетинга и прода...
как обеспечить качественное функционирование ит систем для маркетинга и прода...
 
Qualitative operation of IT systems Pavel Barketov
Qualitative operation of IT systems Pavel BarketovQualitative operation of IT systems Pavel Barketov
Qualitative operation of IT systems Pavel Barketov
 
Qualitative operation of IT systems
Qualitative operation of IT systemsQualitative operation of IT systems
Qualitative operation of IT systems
 
Принцип достаточности
Принцип достаточностиПринцип достаточности
Принцип достаточности
 

More from EatDog

Классифицируем текст в iOS без CoreML: как и зачем?
Классифицируем текст в iOS без CoreML: как и зачем? Классифицируем текст в iOS без CoreML: как и зачем?
Классифицируем текст в iOS без CoreML: как и зачем? EatDog
 
macOS app development for iOS devs: expand your horizons
macOS app development for iOS devs: expand your horizonsmacOS app development for iOS devs: expand your horizons
macOS app development for iOS devs: expand your horizonsEatDog
 
Dependency Injections in Kotlin
Dependency Injections in KotlinDependency Injections in Kotlin
Dependency Injections in KotlinEatDog
 
Быстрый в имплементации и в работе мониторинг с использованием ELK
Быстрый в имплементации и в работе мониторинг с использованием ELKБыстрый в имплементации и в работе мониторинг с использованием ELK
Быстрый в имплементации и в работе мониторинг с использованием ELKEatDog
 
Continuous integration / continuous delivery
Continuous integration / continuous deliveryContinuous integration / continuous delivery
Continuous integration / continuous deliveryEatDog
 
Как мы экспериментируем в больших микросервисных системах
Как мы экспериментируем в больших микросервисных системахКак мы экспериментируем в больших микросервисных системах
Как мы экспериментируем в больших микросервисных системахEatDog
 
Отказоустойчивый Redis кластер
Отказоустойчивый Redis кластерОтказоустойчивый Redis кластер
Отказоустойчивый Redis кластерEatDog
 
Кодстайл и насилие.
Кодстайл и насилие. Кодстайл и насилие.
Кодстайл и насилие. EatDog
 
Refactor to Reactive With Spring 5 and Project Reactor
Refactor to Reactive With Spring 5 and Project ReactorRefactor to Reactive With Spring 5 and Project Reactor
Refactor to Reactive With Spring 5 and Project ReactorEatDog
 
GraphQL: APIs the New Way.
GraphQL: APIs the New Way.GraphQL: APIs the New Way.
GraphQL: APIs the New Way.EatDog
 
Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.EatDog
 
Microservices in a Wild.
Microservices in a Wild.Microservices in a Wild.
Microservices in a Wild.EatDog
 
Dependency Rejection and TDD without Mocks
Dependency Rejection and TDD without MocksDependency Rejection and TDD without Mocks
Dependency Rejection and TDD without MocksEatDog
 
Стероиды для Дотнетчика
Стероиды для ДотнетчикаСтероиды для Дотнетчика
Стероиды для ДотнетчикаEatDog
 
Domain Driven Design – просто о сложном.
Domain Driven Design – просто о сложном.Domain Driven Design – просто о сложном.
Domain Driven Design – просто о сложном.EatDog
 
OWASP: безопасное программирование на PHP.
OWASP: безопасное программирование на PHP.OWASP: безопасное программирование на PHP.
OWASP: безопасное программирование на PHP.EatDog
 
Принципы Solid на практике
Принципы Solid на практикеПринципы Solid на практике
Принципы Solid на практикеEatDog
 
Mapbox GL: как работают современные векторные карты
Mapbox GL: как работают современные векторные картыMapbox GL: как работают современные векторные карты
Mapbox GL: как работают современные векторные картыEatDog
 
Нельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование APIНельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование APIEatDog
 
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемостьAPI в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемостьEatDog
 

More from EatDog (20)

Классифицируем текст в iOS без CoreML: как и зачем?
Классифицируем текст в iOS без CoreML: как и зачем? Классифицируем текст в iOS без CoreML: как и зачем?
Классифицируем текст в iOS без CoreML: как и зачем?
 
macOS app development for iOS devs: expand your horizons
macOS app development for iOS devs: expand your horizonsmacOS app development for iOS devs: expand your horizons
macOS app development for iOS devs: expand your horizons
 
Dependency Injections in Kotlin
Dependency Injections in KotlinDependency Injections in Kotlin
Dependency Injections in Kotlin
 
Быстрый в имплементации и в работе мониторинг с использованием ELK
Быстрый в имплементации и в работе мониторинг с использованием ELKБыстрый в имплементации и в работе мониторинг с использованием ELK
Быстрый в имплементации и в работе мониторинг с использованием ELK
 
Continuous integration / continuous delivery
Continuous integration / continuous deliveryContinuous integration / continuous delivery
Continuous integration / continuous delivery
 
Как мы экспериментируем в больших микросервисных системах
Как мы экспериментируем в больших микросервисных системахКак мы экспериментируем в больших микросервисных системах
Как мы экспериментируем в больших микросервисных системах
 
Отказоустойчивый Redis кластер
Отказоустойчивый Redis кластерОтказоустойчивый Redis кластер
Отказоустойчивый Redis кластер
 
Кодстайл и насилие.
Кодстайл и насилие. Кодстайл и насилие.
Кодстайл и насилие.
 
Refactor to Reactive With Spring 5 and Project Reactor
Refactor to Reactive With Spring 5 and Project ReactorRefactor to Reactive With Spring 5 and Project Reactor
Refactor to Reactive With Spring 5 and Project Reactor
 
GraphQL: APIs the New Way.
GraphQL: APIs the New Way.GraphQL: APIs the New Way.
GraphQL: APIs the New Way.
 
Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.
 
Microservices in a Wild.
Microservices in a Wild.Microservices in a Wild.
Microservices in a Wild.
 
Dependency Rejection and TDD without Mocks
Dependency Rejection and TDD without MocksDependency Rejection and TDD without Mocks
Dependency Rejection and TDD without Mocks
 
Стероиды для Дотнетчика
Стероиды для ДотнетчикаСтероиды для Дотнетчика
Стероиды для Дотнетчика
 
Domain Driven Design – просто о сложном.
Domain Driven Design – просто о сложном.Domain Driven Design – просто о сложном.
Domain Driven Design – просто о сложном.
 
OWASP: безопасное программирование на PHP.
OWASP: безопасное программирование на PHP.OWASP: безопасное программирование на PHP.
OWASP: безопасное программирование на PHP.
 
Принципы Solid на практике
Принципы Solid на практикеПринципы Solid на практике
Принципы Solid на практике
 
Mapbox GL: как работают современные векторные карты
Mapbox GL: как работают современные векторные картыMapbox GL: как работают современные векторные карты
Mapbox GL: как работают современные векторные карты
 
Нельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование APIНельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование API
 
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемостьAPI в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
 

Data flow layer. Захарченко Артем