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

Post on 15-Jun-2015

1.879 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

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

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

2

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

3

Бэкенд

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

5

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

6

Цели Node.JS

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

8

All You Need Is… File

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

9

Event Loop

10

Схема работы

11

Почему Node.js?

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

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

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

биндингов

12

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

Архитектура

13

GETNginx

ProxyPassNode.js

Worker

Worker

Worker

Worker

Node-Cluster

HTMLHTML

Роутинг

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

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

14

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

15

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

Фронтенд

18

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

1

2

1Node.js

JSON3 4 2

3

4

Различия

19

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

File system Ajax

ECMAScript 5 i-ecma

controller.js —

Различия

20

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

File system Ajax

ECMAScript 5 i-ecma

controller.js —

Различия

21

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

File system Ajax

ECMAScript 5 i-ecma

controller.js —

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

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

23

Браузер Node.js

controller #1 controller #2

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

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

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

24

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

dench@yandex-team.ru@denchistyakov

Спасибо!

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

top related