SlideShare a Scribd company logo
NAS, Predictions,
Preloading,
Presudo-
Isomorphism
Алексей Охрименко
Коротко обо мне
Меня зовут Алексей Охрименко
Я работаю в компании Acronis
Lead Software Developer ( JavaScript )
Twitter: @Ai_boy
Чего вы не услышите
• Изоморфность - Денис Измайлов ( сегодня 18:15 ) зал 5
• React, Flux - Аверин Сергей ( завтра 14:15 ) зал 1
• Load time - Ziling Zhao ( сегодня 16:45 ) зал 5
• Load time - Павла Минеев ( сегодня в 11:45 ) зал 1
О чем доклад
Perceived Performance*
* в русской википедии об этом даже нет статьи
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
Раз за разом люди упускают возможность
улучшить perceived performance и надеются
что пользователям это понравится
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
это единственная метрика, которой
пользуется пользователь
Perceived Performance
Можно улучшить за счет:
1) Реального увеличения производительности
2) Уменьшения производительности
3) Грамотного перераспределения ресурсов
Perceived Performance
• NAS - неблокирующее состояние приложения
• Predictions - предсказания
• Preloading - предзагрузки
• Pseudo-Isomorphism - псевдоизоморфизм
• COD.js / MALEVICH / React
http://www.acronis.com/en-us/cloud/backup-service/
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
0 1000 2000 3000 4000 5000 6000 7000 8000
Original
Load Login New Backup Plan Apply Plan Remove Plan
http://www.acronis.com/en-us/cloud/backup-service/
NAS
Давайте разберемся
DOM медленный
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
Мы можем воспользоваться той же самой
техникой для обычных UI взаимодействий
Это и есть блокирование состояния приложения.
Узнаете?
А так?
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
0 1000 2000 3000 4000 5000 6000 7000 8000
Original
Load Login New Backup Plan Apply Plan Remove Plan
http://www.acronis.com/en-us/cloud/backup-service/
0 1000 2000 3000 4000 5000 6000 7000 8000
Original
NAS
Load Login New Backup Plan Apply Plan Remove Plan
http://www.acronis.com/en-us/cloud/backup-service/
Predictions
aka latency compensation
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
Predictions in Acronis
New Backup Plan
0 1000 2000 3000 4000 5000 6000 7000 8000
Original
NAS
Load Login New Backup Plan Apply Plan Remove Plan
http://www.acronis.com/en-us/cloud/backup-service/
0 1000 2000 3000 4000 5000 6000 7000 8000
Original
NAS
Predictions
Load Login New Backup Plan Apply Plan Remove Plan
http://www.acronis.com/en-us/cloud/backup-service/
Preloading
Preloading
• Предзагрузка - это стандартная техника, когда мы
предварительно загружаем ресурс, к которому в будущем мы
будет обращаться
• Можно применять в весьма неожиданных местах
• Чтобы ее применять обязательно используйте Smart Queue
Preloading - standart
Preloading - advanced
0 1000 2000 3000 4000 5000 6000 7000 8000
Original
NAS
Predictions
Load Login New Backup Plan Apply Plan Remove Plan
http://www.acronis.com/en-us/cloud/backup-service/
0 1000 2000 3000 4000 5000 6000 7000 8000
Original
NAS
Predictions
Preloading
Load Login New Backup Plan Apply Plan Remove Plan
http://www.acronis.com/en-us/cloud/backup-service/
Pseudo-Isomorphism
Pseudo-Isomorphism
• Это когда вы на сервере с помощью обычного шаблонизатора
Jinja2, PHP, etc. отрисовываете HTML и отправляете его на
clientside.
• Получить HTML для шаблона можно с помощью:
document.documentElement.outerHTML
• Впоследствии SPA, загрузившись и проинициализировавшись,
просто подхватывает инициативу
• Есть много разных способов имплементации данного подхода
0 1000 2000 3000 4000 5000 6000 7000 8000
Original
NAS
Predictions
Preloading
Load Login New Backup Plan Apply Plan Remove Plan
http://www.acronis.com/en-us/cloud/backup-service/
0 1000 2000 3000 4000 5000 6000 7000 8000
Original
NAS
Predictions
Preloading
P-I
Load Login New Backup Plan Apply Plan Remove Plan
http://www.acronis.com/en-us/cloud/backup-service/
Backend при этом не изменялся
Когда использовать
• Всегда - NAS это больше методология
• Это как Event Driven IO
Когда избегать
• Когда скорость появления конечного результата многократно
важнее
NAS
Когда использовать
• Когда состояние объекта предсказуемо
• Когда вред от «отката» незначителен
• Prediction на базе Prediction - приведет к сложному коду
Когда избегать
• При часто меняющемся backend API ( когда отсутствует
версионирование )
Predictions
Когда использовать
• Когда есть свободный HTTP канал (6 per domain, но можно
обойти с помощью трюка с sub-n.domain.com)
Когда избегать
• Когда уже HTTP канал часто бывает занят.
Preloading
Когда использовать
• Когда кол-во точек входа в приложение или часть приложения
ограничены
Когда избегать
• Когда кол-во точек входа в приложение или часть приложения
не более 2-3
Pseudo-Isomorphism
COD.js / MALEVICH / REACT
https://github.com/aiboy/acronis-codjs-react
Q&A
Twitter: @Ai_boy
Все ссылки будут продублированы в
Twitter

More Related Content

PDF
Near-realtime аналитика событий в высоконагруженном проекте
PDF
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
PPTX
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
PPTX
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
PDF
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
PDF
Javascript-фреймворки:
 должен остаться только один
PDF
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
PDF
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
Near-realtime аналитика событий в высоконагруженном проекте
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
Javascript-фреймворки:
 должен остаться только один
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)

What's hot (20)

PDF
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
PDF
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
PPTX
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
PDF
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
PDF
Ровная балансировка нагрузки на фронтенд-кластере
PDF
Балансировка нагрузки и отказоустойчивость в Одноклассниках
PPTX
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
PPTX
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
PDF
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
PPTX
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
PDF
Как не положить тысячи серверов с помощью системы централизованного управлени...
PDF
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
PPTX
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
PPTX
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
PPTX
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
PDF
Юрий Насретдинов, Badoo
PDF
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
PDF
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
PDF
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
PPTX
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Ровная балансировка нагрузки на фронтенд-кластере
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Как не положить тысячи серверов с помощью системы централизованного управлени...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Юрий Насретдинов, Badoo
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Ad

Viewers also liked (6)

PPTX
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
PPTX
Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
PPTX
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
PPTX
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
PPTX
Vulnerability intelligence with vulners.com / Кирилл Ермаков, Игорь Булатенко...
PDF
Sphinx 3.0 и RT-индексы на основном поиске Avito / Андрей Смирнов, Вячеслав К...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Vulnerability intelligence with vulners.com / Кирилл Ермаков, Игорь Булатенко...
Sphinx 3.0 и RT-индексы на основном поиске Avito / Андрей Смирнов, Вячеслав К...
Ad

Similar to NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis) (20)

PDF
Распространенные ошибки применения баз данных (Сергей Аверин)
PDF
Распространенные ошибки применения баз данных
PPT
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
PPT
Git in Sky presentation @ HighLoad++ 2013
PDF
Распространенные ошибки применения баз данных (Сергей Аверин)
PPTX
Оптимизация производительности нагруженных веб-систем на Java
PDF
Java/Scala Lab: Владимир Илюшенко - Jelastic PaaS v2.5 Capabilities and Benef...
PDF
[jeeconf-2011] Java Platform Performance BoF
PPT
евгений потапов Root Conf потапов
PPT
Evgeniy Potapov Root Conf потапов
PDF
Не все базы данных одинаково полезны
PDF
Не все базы данных одинаково полезны
PDF
Выступление Сергея Аверина, Badoo, на High Performance Conference
PDF
Практические примеры использования API в инфраструктурных продуктах Cisco для...
PDF
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
PDF
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
PPTX
Построение аналитического хранилища на 100 петабайт
PDF
DevOps в проекте Upsource. Андрей Сизов, System Administrator
PPTX
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
Git in Sky presentation @ HighLoad++ 2013
Распространенные ошибки применения баз данных (Сергей Аверин)
Оптимизация производительности нагруженных веб-систем на Java
Java/Scala Lab: Владимир Илюшенко - Jelastic PaaS v2.5 Capabilities and Benef...
[jeeconf-2011] Java Platform Performance BoF
евгений потапов Root Conf потапов
Evgeniy Potapov Root Conf потапов
Не все базы данных одинаково полезны
Не все базы данных одинаково полезны
Выступление Сергея Аверина, Badoo, на High Performance Conference
Практические примеры использования API в инфраструктурных продуктах Cisco для...
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Highload...
Построение аналитического хранилища на 100 петабайт
DevOps в проекте Upsource. Андрей Сизов, System Administrator
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...

NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)

  • 2. Коротко обо мне Меня зовут Алексей Охрименко Я работаю в компании Acronis Lead Software Developer ( JavaScript ) Twitter: @Ai_boy
  • 3. Чего вы не услышите • Изоморфность - Денис Измайлов ( сегодня 18:15 ) зал 5 • React, Flux - Аверин Сергей ( завтра 14:15 ) зал 1 • Load time - Ziling Zhao ( сегодня 16:45 ) зал 5 • Load time - Павла Минеев ( сегодня в 11:45 ) зал 1
  • 4. О чем доклад Perceived Performance* * в русской википедии об этом даже нет статьи
  • 6. Раз за разом люди упускают возможность улучшить perceived performance и надеются что пользователям это понравится
  • 9. это единственная метрика, которой пользуется пользователь Perceived Performance
  • 10. Можно улучшить за счет: 1) Реального увеличения производительности 2) Уменьшения производительности 3) Грамотного перераспределения ресурсов Perceived Performance
  • 11. • NAS - неблокирующее состояние приложения • Predictions - предсказания • Preloading - предзагрузки • Pseudo-Isomorphism - псевдоизоморфизм • COD.js / MALEVICH / React
  • 14. 0 1000 2000 3000 4000 5000 6000 7000 8000 Original Load Login New Backup Plan Apply Plan Remove Plan http://www.acronis.com/en-us/cloud/backup-service/
  • 15. NAS
  • 20. Мы можем воспользоваться той же самой техникой для обычных UI взаимодействий
  • 21. Это и есть блокирование состояния приложения. Узнаете?
  • 25. 0 1000 2000 3000 4000 5000 6000 7000 8000 Original Load Login New Backup Plan Apply Plan Remove Plan http://www.acronis.com/en-us/cloud/backup-service/
  • 26. 0 1000 2000 3000 4000 5000 6000 7000 8000 Original NAS Load Login New Backup Plan Apply Plan Remove Plan http://www.acronis.com/en-us/cloud/backup-service/
  • 32. 0 1000 2000 3000 4000 5000 6000 7000 8000 Original NAS Load Login New Backup Plan Apply Plan Remove Plan http://www.acronis.com/en-us/cloud/backup-service/
  • 33. 0 1000 2000 3000 4000 5000 6000 7000 8000 Original NAS Predictions Load Login New Backup Plan Apply Plan Remove Plan http://www.acronis.com/en-us/cloud/backup-service/
  • 35. Preloading • Предзагрузка - это стандартная техника, когда мы предварительно загружаем ресурс, к которому в будущем мы будет обращаться • Можно применять в весьма неожиданных местах • Чтобы ее применять обязательно используйте Smart Queue
  • 38. 0 1000 2000 3000 4000 5000 6000 7000 8000 Original NAS Predictions Load Login New Backup Plan Apply Plan Remove Plan http://www.acronis.com/en-us/cloud/backup-service/
  • 39. 0 1000 2000 3000 4000 5000 6000 7000 8000 Original NAS Predictions Preloading Load Login New Backup Plan Apply Plan Remove Plan http://www.acronis.com/en-us/cloud/backup-service/
  • 41. Pseudo-Isomorphism • Это когда вы на сервере с помощью обычного шаблонизатора Jinja2, PHP, etc. отрисовываете HTML и отправляете его на clientside. • Получить HTML для шаблона можно с помощью: document.documentElement.outerHTML • Впоследствии SPA, загрузившись и проинициализировавшись, просто подхватывает инициативу • Есть много разных способов имплементации данного подхода
  • 42. 0 1000 2000 3000 4000 5000 6000 7000 8000 Original NAS Predictions Preloading Load Login New Backup Plan Apply Plan Remove Plan http://www.acronis.com/en-us/cloud/backup-service/
  • 43. 0 1000 2000 3000 4000 5000 6000 7000 8000 Original NAS Predictions Preloading P-I Load Login New Backup Plan Apply Plan Remove Plan http://www.acronis.com/en-us/cloud/backup-service/
  • 44. Backend при этом не изменялся
  • 45. Когда использовать • Всегда - NAS это больше методология • Это как Event Driven IO Когда избегать • Когда скорость появления конечного результата многократно важнее NAS
  • 46. Когда использовать • Когда состояние объекта предсказуемо • Когда вред от «отката» незначителен • Prediction на базе Prediction - приведет к сложному коду Когда избегать • При часто меняющемся backend API ( когда отсутствует версионирование ) Predictions
  • 47. Когда использовать • Когда есть свободный HTTP канал (6 per domain, но можно обойти с помощью трюка с sub-n.domain.com) Когда избегать • Когда уже HTTP канал часто бывает занят. Preloading
  • 48. Когда использовать • Когда кол-во точек входа в приложение или часть приложения ограничены Когда избегать • Когда кол-во точек входа в приложение или часть приложения не более 2-3 Pseudo-Isomorphism
  • 49. COD.js / MALEVICH / REACT
  • 51. Q&A Twitter: @Ai_boy Все ссылки будут продублированы в Twitter