Денис Чистяков — JavaScript на фронте и в тылу

25
Фронтенд разработчик JavaScript на фронте и в тылу Чистяков Денис Я.Субботник, Екатеринбург , 6 июля 2013

description

Перед разработчиками Яндекс.Спорта стояла задача – разработать сервис, который быстро работает, держит высокие нагрузки и имеет сильную контентную составляющую. В докладе рассказывается, почему для решения задачи мы выбрали Node.js, приводится пример архитектуры высоконагруженного приложения на Node.js и о том, как мы добились прозрачного использования одних и тех же функций на фронтенде и бэкенде.

Transcript of Денис Чистяков — JavaScript на фронте и в тылу

Page 1: Денис Чистяков — JavaScript на фронте и в тылу

Фронтенд разработчик

JavaScriptна фронтеи в тылуЧистяков Денис

Я.Субботник, Екатеринбург, 6 июля2013

Page 2: Денис Чистяков — JavaScript на фронте и в тылу

Кто занимается веб-разработкой?

2

Page 3: Денис Чистяков — JavaScript на фронте и в тылу

На каких языках?PHP, Python, JavaScript, Node.js?

3

Page 4: Денис Чистяков — JavaScript на фронте и в тылу

Бэкенд

Page 5: Денис Чистяков — JavaScript на фронте и в тылу

Киоск с шавермой против ресторана

5

Page 6: Денис Чистяков — JavaScript на фронте и в тылу

Киоск с шавермой против ресторана

6

Page 7: Денис Чистяков — JavaScript на фронте и в тылу
Page 8: Денис Чистяков — JavaScript на фронте и в тылу

Цели Node.JS

Разработать быстрый и легкий фреймворк:• ориентированный на работу с сетью• событийный• способный исполнять JavaScript внутри себя

8

Page 9: Денис Чистяков — JavaScript на фронте и в тылу

All You Need Is… File

• libUV• epoll• kqueue• /dev/poll• select• …• ???????• PROFIT!

9

Page 10: Денис Чистяков — JavaScript на фронте и в тылу

Event Loop

10

Page 11: Денис Чистяков — JavaScript на фронте и в тылу

Схема работы

11

Page 12: Денис Чистяков — JavaScript на фронте и в тылу

Почему Node.js?

• Быстрый• JavaScript — самый популярный язык

программирования *• Клиентский JS-программист может быстро

пересесть на серверный JS• Удобный интерфейс для написания C/C++ –

биндингов

12

* 21% — по данным статистики github.com/languages

Page 13: Денис Чистяков — JavaScript на фронте и в тылу

Архитектура

13

GETNginx

ProxyPassNode.js

Worker

Worker

Worker

Worker

Node-Cluster

HTMLHTML

Роутинг

Page 14: Денис Чистяков — JavaScript на фронте и в тылу

Intel Xeon E5-26602×8 ядер8×8 Gb16 рабочих процессов Node.js150 rps на процесс

Сервера и нагрузка

14

Page 15: Денис Чистяков — JavaScript на фронте и в тылу

Для сравнения, посещаемость Е1  — 10 000 000 * просмотров, т.е. ≈ 115 rps

15

* по данным статистики LiveInternet

Page 16: Денис Чистяков — JavaScript на фронте и в тылу

Фронтенд

Page 17: Денис Чистяков — JavaScript на фронте и в тылу
Page 18: Денис Чистяков — JavaScript на фронте и в тылу

18

Браузер Сервер

1

2

1Node.js

JSON3 4 2

3

4

Page 19: Денис Чистяков — JavaScript на фронте и в тылу

Различия

19

Бэкенд Фронтенд

File system Ajax

ECMAScript 5 i-ecma

controller.js —

Page 20: Денис Чистяков — JavaScript на фронте и в тылу

Различия

20

Бэкенд Фронтенд

File system Ajax

ECMAScript 5 i-ecma

controller.js —

Page 21: Денис Чистяков — JavaScript на фронте и в тылу

Различия

21

Бэкенд Фронтенд

File system Ajax

ECMAScript 5 i-ecma

controller.js —

Page 22: Денис Чистяков — JavaScript на фронте и в тылу

НЕЛЬЗЯ ПРОСТО ВЗЯТЬ

И ПОЛОЖИТЬКОНТРОЛЛЕР НА КЛИЕНТ

Page 23: Денис Чистяков — JavaScript на фронте и в тылу

23

Браузер Node.js

controller #1 controller #2

Page 24: Денис Чистяков — JavaScript на фронте и в тылу

Что получили в итоге?

• Быстроотвечающий, отказоустойчивый сервис• Максимальное реиспользование кода на клиенте и

сервере• Гибкую настройку

24

Page 25: Денис Чистяков — JavaScript на фронте и в тылу

Фронтенд разработчик

[email protected]@denchistyakov

Спасибо!

Чистяков Денис