SlideShare una empresa de Scribd logo
1 de 111
Descargar para leer sin conexión
Изоморфные React-
приложения:

производительность
и масштабирование
Денис Измайлов
Почему от классического
Single Page Application
необходимо отказаться?
Как изоморфные приложения
отразятся на Вашей зарплате?
Что вы будете делать

на этих выходных?
Идеально
1. React 14
2. webpack
3. ES6
4. Node.js
5. Express / koa
6. Isomorphic (Universal) apps
Часть 1
Web стал очень
большим
Искусство

Разработка под Web



Наука
Раньше было просто
• Создал страницу
• Добавил пару скриптов
• Отправил в Production
Раньше было просто
Сервер
Браузер
Раньше было просто
Сервер
Браузер
Делал всё
Раньше было просто
Сервер
Браузер
- HTML
- [CSS, JavaScript]
Делал всё
Это работало
Single Page

Applications

(SPA)
Single Page Application
Сервер
Браузер
Single Page Application
Сервер
Браузер
Страница существует?

Авторизация нужна?

Доступ есть?
Single Page Application
Сервер
Браузер
Страница существует?

Авторизация нужна?

Доступ есть?
- Tiny HTML, [CSS]
- JavaScript bundle
Single Page Application
Плюсы
• Легко начать
• webpack
• <div id=“root” />
• React, Redux
• build
Single Page Application
Плюсы
• Легко начать
• Богатый функционал
webpack, <div id=“root” />, React, Redux
Single Page Application
Плюсы
• Легко начать
• Богатый функционал
• Быстро дорабатывать
webpack, <div id=“root” />, React, Redux
Single Page Application
Плюсы
• Легко начать
• Богатый функционал
• Быстро дорабатывать
• Отзывчивый UI
webpack, <div id=“root” />, React, Redux
Single Page Application
Плюсы
• Легко начать
• Богатый функционал
• Быстро дорабатывать
• Отзывчивый UI
• Удобно кэшировать
webpack, <div id=“root” />, React, Redux
- Wow. И не одного
минуса?
Single Page Application
Минусы
• Долгая загрузка
• JavaScript bundle up to 3-5 Mb
• первое обращение
• исполнение
• память
Single Page Application
Минусы
• Долгая загрузка
• Сложность поддержки
• side-эффекты
• memory leak
1st request, CPU, mem
Single Page Application
Минусы
• Долгая загрузка
• Сложность поддержки
• Пустая страница, один URL
1st request, CPU, mem
side-эффекты, memory leaks
Single Page Application
Минусы
• Долгая загрузка
• Сложность поддержки
• Пустая страница, один URL
• Legacy Browsers
1st request, CPU, mem
side-эффекты, memory leaks
- Разве это минусы?
Single Page Application
Минусы
• Долгая загрузка
для бизнеса
снижение UX
Single Page Application
Минусы
• Долгая загрузка
• Сложность поддержки
для бизнеса
снижение UX
риски
Single Page Application
Минусы
• Долгая загрузка
• Сложность поддержки
• Пустая страница
для бизнеса
снижение UX
риски
проблемы SEO
Single Page Application
Минусы
• Долгая загрузка
• Сложность поддержки
• Пустая страница
• Один URL
для бизнеса
снижение UX
риски
проблемы SEO
проблемы SMM
Single Page Application
Минусы
• Долгая загрузка
• Сложность поддержки
• Пустая страница
• Один URL
• Legacy Browsers
для бизнеса
снижение UX
риски
проблемы SEO
проблемы SMM
потеря ЦА
Single Page Application
Минусы
• Долгая загрузка
• Сложность поддержки
• Пустая страница
• Один URL
• Legacy Browsers
для бизнеса
снижение UX
риски
проблемы SEO
проблемы SMM
потеря ЦА
Расходы
Single Page Application
Минусы
для бизнеса
снижение UX
риски
проблемы SEO
проблемы SMM
потеря ЦА
Расходы
- WAT? Что делать?
Взять лучшее из обоих
миров
Изоморфные
приложения
Изоморфные приложения
By isomorphic we mean that any
given line of code (with notable
exceptions) can execute both on
the client and the server.


Charlie Robbins,

18 Oct 2011
Шаблоны
Стили
Локализация
Конфигурация
Routes
Права доступа
Модели
Схемы
Валидация
Сервисы
Изоморфные приложения
server.jsNode.js
worker.js
client.jsBrowser
admin.js
Бизнес-логика
Компоненты
API-интерфейсы
Actions, Reducers
Static Files
Браузер
Изоморфные приложения
Front-end
сервер
Back-end
сервер



Database
Java

etc
Браузер
Изоморфные приложения
Front-end
сервер
Back-end
сервер



Database
Java

etc
Браузер
Изоморфные приложения
Front-end
сервер
Back-end
сервер



Database
Java

etc
- HTML
- [critical CSS]
- …
Front-end
клиент
Изоморфные приложения
Front-end
сервер
Back-end
сервер



Database
Java

etc
- HTML
- [critical CSS]
- JS Bundle
Front-end
клиент
Изоморфные приложения
Front-end
сервер
Back-end
сервер



Database
Java

etc
- HTML
- [critical CSS]
- JS Bundle
Front-end
клиент
Изоморфные приложения
Front-end
сервер
• Единая среда
исполнения

• Общая кодовая база

• Полный контроль

• Экосистема
- Но как?
Server-Side Rendering

(SSR)
Server-Side Rendering
• Сборка React-приложения в HTML-код
на Front-end сервере
• Моментальное отображение в
браузере, ещё до загрузки JS
• Когда JS загрузится, React только
добавит обработчики событий
• А это очень быстро
Server-Side Rendering
Код на сервере выглядит очень просто:
import ReactDOMServer from 'react-dom/server';

import Application from './components/application';



const body = ReactDOMServer.renderToString(

<Application />

);
Server-Side Rendering
1. Пользователь видит страницу
мгновенно
2. Отсутствие дополнительных запросов
на получение данных
3. Страница может работать даже без JS
4. Полноценная URL-навигация и мета-
тэги
5. Сохранение всех возможностей
современного JavaScript
Часть 2
Производительность
и масштабирование
Масштабирование
Масштабирование

функциональное
Server-Side Rendering
Всё супер, когда данные есть:
import ReactDOMServer from 'react-dom/server';

import Application from './components/application';



const initialState = { siteName: 'HighLoad++ 2015' };

const body = ReactDOMServer.renderToString(

<Application state={initialState} />

);
Server-Side Rendering
Всё супер, когда данные есть:
import ReactDOMServer from 'react-dom/server';

import Application from './components/application';



const initialState = { siteName: 'HighLoad++ 2015' };

const body = ReactDOMServer.renderToString(

<Application state={initialState} />

);
Но если их надо
получать извне?
Server-Side Rendering
Как получить асинхронный State:

1. Вручную для каждой страницы
2. Facebook Relay
3. redux-catch-promise
Асинхронный State
Вручную для каждой страницы:
• Получить State, необходимый для
страницы

• ReactDOMServer.renderToString()
Асинхронный State
Facebook Relay:
1. The framework for building data-driven
React applications
2. Declarative. Colocation. Mutations.
3. https://github.com/facebook/relay/
issues/136
4. 1Q2016
Асинхронный State
redux-catch-promise:
• Redux - state container для React
• Redux: the best for isomorphic apps,
MoscowJS 25

https://youtu.be/Uyk_8WWna6s
• redux-catch-promise - это middleware
для Redux
Асинхронный State
redux-catch-promise:
1. Вешаем callback для захвата Promise-
экшнов
2. Делаем рендер приложения
3. Делаем запрос к БД, диспатчим Promise
4. После рендера - имеем все эти промисы,
ожидаем их завершения
5. Повторный рендер, с данными
Асинхронный State
redux-catch-promise:
1. Примеры и исходный код:

https://github.com/DenisIzmaylov/
redux-catch-promise
2. Установка:
npm install redux-catch-promise
Производительность
Производительность
Тестовый стенд:
MacBook Pro 15” Retina (Early 2013)
2.4 GHz Intel Core i7
Производительность
Размер страницы: 56 238 байт
Производительность
Размер страницы: 56 238 байт
Производительность
Размер страницы: 56 238 байт
Производительность
Размер страницы: 56 238 байт
Производительность
Размер страницы: 56 238 байт
Производительность
Размер страницы: 56 238 байт
Производительность
Для теста используем:
ab -n 100 http://localhost:3000/profile

Производительность
Для теста используем:
ab -n 100 http://localhost:3000/profile
Запускаем…
Производительность
Для теста используем:
ab -n 100 http://localhost:3000/profile
Запускаем…
Time per request: 61.850 ms
Производительность
61.850 ms



Это много или мало?
Производительность
61.850 ms



Тот же шаблон в Handlebars:



8.385 ms



86% less
Производительность
1. Идём в Google - ничего полезного.
2. Пробуем спросить Twitter - тишина:
Производительность
Ок, а что если?
NODE_ENV=production
Запускаем…
Производительность
Ок, а что если?
NODE_ENV=production
Запускаем…
Time per request: 37.943 ms

(vs 61.850 ms)

39% less
Производительность
Вроде лучше.
Производительность
Вроде лучше.



Но всё ещё не торт.
Ищем дальше
GitHub issues
Производительность
• “Server rendering is slower with npm
react”



https://github.com/facebook/react/
issues/812



Производительность
• “Server rendering is slower with npm
react”



https://github.com/facebook/react/
issues/812



Решение:

явно подключать react/dist/react.min.js
Производительность
Создаём node_modules/react.js:



if (process.env.NODE_ENV === 'production') {
module.exports = require('react/dist/react.min.js');
} else {
module.exports = require('react/dist/react.js');
}

Производительность
Создаём node_modules/react.js:



if (process.env.NODE_ENV === 'production') {
module.exports = require('react/dist/react.min.js');
} else {
module.exports = require('react/dist/react.js');
}

Как это изменило
результат?
Производительность
Server rendering is slower with npm react
react/dist/react.min.js
Запускаем…
Производительность
Server rendering is slower with npm react
react/dist/react.min.js
Запускаем…
Time per request: 38.253 ms

(vs 37.943 ms)

0.08% more
Производительность
Server rendering is slower with npm react
react/dist/react.min.js
Запускаем…
Time per request: 38.253 ms

(vs 37.943 ms)

0.08% more
FAILED
0
17,5
35
52,5
70
38,25337,943
8,385
61,85
React SSR Handlebars production
react.js.min
Результаты
0
17,5
35
52,5
70
38,25337,943
8,385
61,85
React SSR Handlebars production
react.js.min
Результаты
39% less
Часть 3
Продвинутые
решения
Продвинутые решения
1. Precompilation + Cache
2. Rendering Separation
3. React DOM Stream
4. Facebook BigPipe
5. HAProxy
Precompilation + Cache
• UI = f(state)
• f = React Component
• state = path + ...

Простое решение: redis
First render: redis + kue + workers
Rendering Separation
React DOM Stream
• Flushing the Document Early
• “Streams make this library as much as 47%
faster in sending down a full page than
ReactDOM.renderToString, and user
perceived performance gains can be even
greater.”
• Target - 108KB page on Heroku
• Time To First Byte (TTFB) - 65% less
• Time To Last Byte (TTLB) - 37% less
• https://github.com/aickin/react-dom-stream
Facebook BigPipe
• Сборка страницы в процессе загрузки
• Загружается параллельно
• Устойчивость к ошибкам
Facebook BigPipe
• Сборка страницы на в процессе загрузки
• Всё, что необходимо - загружается параллельно
• Устойчивость к ошибкам
Facebook BigPipe
HAProxy
• Обратитесь к DevOps
• Несколько экземпляров
Заключение
Полезные материалы
1. Supercharging page load (100 Days of Google Dev)
https://youtu.be/d5_6yHixpsQ
2. Making Netflix.com Faster http://techblog.netflix.com/
2015/08/making-netflixcom-faster.html
3. New technologies for the new LinkedIn home page
https://engineering.linkedin.com/frontend/new-
technologies-new-linkedin-home-page
4. Improving performance on Twitter.com https://
blog.twitter.com/2012/improving-performance-on-
twittercom
5. Scaling Isomorphic Javascript Code http://
blog.nodejitsu.com/scaling-isomorphic-javascript-code/
Полезные материалы
6. From AngularJS to React: The Isomorphic Way
https://blog.risingstack.com/from-angularjs-to-
react-the-isomorphic-way/
7. Isomorphic JavaScript: The Future of Web Apps
http://nerds.airbnb.com/isomorphic-javascript-
future-web-apps/
8. React server side rendering performance http://
www.slideshare.net/nickdreckshage/react-meetup
9. The Lost Art of Progressive HTML Rendering
http://blog.codinghorror.com/the-lost-art-of-
progressive-html-rendering/
Рекомендации
• Присоединяйтесь

к сообществу MoscowJS

http://moscowjs.ru/
• Улучшайте английский, не читайте
советских газет
• Читайте оригиналы и технические
блоги
• Активно внедряйте в свою жизнь
Twitter и GitHub
Послесловие
«Большинство проблем
алгоритмов можно решить
сменой структуры данных»,
Андрей Ситник
“Changes is our work”,

Jake Archibald, Google
Почему от классического
Single Page Application
необходимо отказаться?
Спасибо за
внимание
Денис Измайлов
@DenisIzmaylov
https://github.com/DenisIzmaylov
https://fb.com/denis.izmaylov
Приложение 1

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

#5 "React.js" Антон Артамонов
#5 "React.js" Антон Артамонов#5 "React.js" Антон Артамонов
#5 "React.js" Антон Артамонов
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
 
2015-11-07 01 Виталий Кравцов. Webpack: человеческий подход к разработке веб ...
2015-11-07 01 Виталий Кравцов. Webpack: человеческий подход к разработке веб ...2015-11-07 01 Виталий Кравцов. Webpack: человеческий подход к разработке веб ...
2015-11-07 01 Виталий Кравцов. Webpack: человеческий подход к разработке веб ...
 
React.js – intro
React.js – introReact.js – intro
React.js – intro
 
Delivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java ApplicationsDelivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java Applications
 
"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov
 
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
 
Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?
 
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
 
"React application structure at project start", Maksym Shestopal
"React application structure at project start", Maksym Shestopal"React application structure at project start", Maksym Shestopal
"React application structure at project start", Maksym Shestopal
 
Angular vs Angular 2 vs React. Сергей Александров
Angular vs Angular 2 vs React. Сергей АлександровAngular vs Angular 2 vs React. Сергей Александров
Angular vs Angular 2 vs React. Сергей Александров
 
Александр Кириллов. Веб разработка: Что такое Ruby On Rails. РИФ-Воронеж 2016
Александр Кириллов. Веб разработка: Что такое Ruby On Rails. РИФ-Воронеж 2016Александр Кириллов. Веб разработка: Что такое Ruby On Rails. РИФ-Воронеж 2016
Александр Кириллов. Веб разработка: Что такое Ruby On Rails. РИФ-Воронеж 2016
 
WebAssembly
WebAssemblyWebAssembly
WebAssembly
 
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
 
QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...
QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...
QA Fes 2016. Александр Неделяев. Система мониторинга производительности своим...
 
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИСКак мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
 
Тестирование и мониторинг производительности фронтенда с помощью sitespeed.io...
Тестирование и мониторинг производительности фронтенда с помощью sitespeed.io...Тестирование и мониторинг производительности фронтенда с помощью sitespeed.io...
Тестирование и мониторинг производительности фронтенда с помощью sitespeed.io...
 
React + Redux. Опыт использования
React + Redux. Опыт использованияReact + Redux. Опыт использования
React + Redux. Опыт использования
 

Destacado

JavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальностьJavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальность
Denis Izmaylov
 

Destacado (20)

redux: the best for isomorphic apps
redux: the best for isomorphic appsredux: the best for isomorphic apps
redux: the best for isomorphic apps
 
JavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальностьJavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальность
 
Performance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React ApplicationsPerformance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React Applications
 
Isomorphic React Applications: Performance And Scalability
Isomorphic React Applications: Performance And ScalabilityIsomorphic React Applications: Performance And Scalability
Isomorphic React Applications: Performance And Scalability
 
PreJSS: the final point in the CSS war
PreJSS: the final point in the CSS warPreJSS: the final point in the CSS war
PreJSS: the final point in the CSS war
 
Tina Turner Die Königin Rock and Roll
Tina Turner Die Königin Rock and RollTina Turner Die Königin Rock and Roll
Tina Turner Die Königin Rock and Roll
 
FOTOVIDEO EN DIAPOSITIVA DE LA MATERIA DE ECONOMIA
FOTOVIDEO EN DIAPOSITIVA DE LA MATERIA DE ECONOMIAFOTOVIDEO EN DIAPOSITIVA DE LA MATERIA DE ECONOMIA
FOTOVIDEO EN DIAPOSITIVA DE LA MATERIA DE ECONOMIA
 
The world of numbers: Introducing Numbers
The world of numbers: Introducing NumbersThe world of numbers: Introducing Numbers
The world of numbers: Introducing Numbers
 
Tina Turner La Regina del Rock and Roll
Tina Turner La Regina del Rock and RollTina Turner La Regina del Rock and Roll
Tina Turner La Regina del Rock and Roll
 
รูปถ่ายประกวด
รูปถ่ายประกวดรูปถ่ายประกวด
รูปถ่ายประกวด
 
Tina Turner A Rainha do Rock and Roll
Tina Turner A Rainha do Rock and RollTina Turner A Rainha do Rock and Roll
Tina Turner A Rainha do Rock and Roll
 
A Rainha do Rock and Roll
A Rainha do Rock and RollA Rainha do Rock and Roll
A Rainha do Rock and Roll
 
Prasad n. resume
Prasad n. resumePrasad n. resume
Prasad n. resume
 
The Queen of Rock and Roll
The Queen of Rock and RollThe Queen of Rock and Roll
The Queen of Rock and Roll
 
La Regina del Rock and Roll
La Regina del Rock and RollLa Regina del Rock and Roll
La Regina del Rock and Roll
 
La Regina del Rock and Roll
La Regina del Rock and RollLa Regina del Rock and Roll
La Regina del Rock and Roll
 
Slideshare
SlideshareSlideshare
Slideshare
 
Tina Turner La Reina del Rock and Roll
Tina Turner La Reina del Rock and RollTina Turner La Reina del Rock and Roll
Tina Turner La Reina del Rock and Roll
 
Die Königin Rock and Roll
Die Königin Rock and RollDie Königin Rock and Roll
Die Königin Rock and Roll
 
Die Königin Rock and Roll
Die Königin Rock and RollDie Königin Rock and Roll
Die Königin Rock and Roll
 

Similar a Изоморфные React-приложения: производительность и масштабирование

Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)
Andrey Smirnov
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
guest40e031
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
rit2010
 
евгений потапов Root Conf потапов
евгений потапов Root Conf   потаповевгений потапов Root Conf   потапов
евгений потапов Root Conf потапов
rit2010
 
Evgeniy Potapov Root Conf потапов
Evgeniy Potapov Root Conf   потаповEvgeniy Potapov Root Conf   потапов
Evgeniy Potapov Root Conf потапов
rit2010
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster
Pavel Dovbush
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
Atlassian user group
Atlassian user groupAtlassian user group
Atlassian user group
Gonchik Tsymzhitov
 

Similar a Изоморфные React-приложения: производительность и масштабирование (20)

Protrarctor and Angular
Protrarctor and AngularProtrarctor and Angular
Protrarctor and Angular
 
Клиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновКлиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей Смирнов
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
 
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
евгений потапов Root Conf потапов
евгений потапов Root Conf   потаповевгений потапов Root Conf   потапов
евгений потапов Root Conf потапов
 
Evgeniy Potapov Root Conf потапов
Evgeniy Potapov Root Conf   потаповEvgeniy Potapov Root Conf   потапов
Evgeniy Potapov Root Conf потапов
 
Решения сообщества для SharePoint
Решения сообщества для SharePointРешения сообщества для SharePoint
Решения сообщества для SharePoint
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
 
Full Stack разработка на JavaScript
Full Stack разработка на JavaScriptFull Stack разработка на JavaScript
Full Stack разработка на JavaScript
 
Microsoft Azure
Microsoft AzureMicrosoft Azure
Microsoft Azure
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Доклады с прошедшей JiraMania: про обновления, зависимости и дедлоки
Доклады с прошедшей JiraMania: про обновления, зависимости и дедлокиДоклады с прошедшей JiraMania: про обновления, зависимости и дедлоки
Доклады с прошедшей JiraMania: про обновления, зависимости и дедлоки
 
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
 
Atlassian user group
Atlassian user groupAtlassian user group
Atlassian user group
 
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
 

Изоморфные React-приложения: производительность и масштабирование