Upload
yandex
View
1.029
Download
0
Embed Size (px)
DESCRIPTION
В докладе я расскажу о том, как разрабатывали новый Поиск по блогам Яндекса. О том, как выбирали фреймворк для этого проекта, и почему в конечном итоге остановились на bem-node. Поговорим о сильных сторонах bem-node, которые позволили запустить новый интерфейс в сжатые сроки и с улучшенной производительностью.
Новый Поиск по блогам на bem-nodeСергей ПузанковBEMup врамках YaC 2013, Москва
Задача
Язык
Платформа
Платформа
10
Платформа
11
Framework
bem-yanabem-node
Framework
13
14
github.com/wtfil/bem-node
bit.ly/bem-node
bem-node
15
common.blocksdata.blocksdesktop.blocksdesktop.pagesnode_moduleslibsconfigsdebian
Структура проекта
16
common.blocksheadernewspost...
data.blocks desktop.blocksdesktop.pagesnode_moduleslibsconfigsdebian
Структура проекта
17
common.blocksdata.blocks desktop.blocksdesktop.pagesnode_moduleslibsconfigsdebian
Структура проекта
18
common.blocksdata.blocks desktop.blocksdesktop.pagesnode_moduleslibsconfigsdebian
Структура проекта
19
common.blocksdata.blocks desktop.blocksdesktop.pagesmain-page
node_moduleslibsconfigsdebian
Структура проекта
20
data.blockscommon.blocksdesktop.blocksdesktop.pagesnode_modulesbem-node...
libsconfigsdebian
Структура проекта
21
data.blockscommon.blocksdesktop.blocksdesktop.pagesnode_moduleslibsbem-blbem-controlsislands...
configsdebian
Структура проекта
22
data.blockscommon.blocksdesktop.blocksdesktop.pagesnode_moduleslibsconfigsdevelopmenttestingproductioncurrent -> production
debian
Структура проекта
23
BEM.JSONbit.ly/bem-json
BEMHTMLbit.ly/github-bemhtml
Шаблонизация
BEM.JSON.decl('b-block', { onBlock: function (ctx) { ctx.content({elem: 'item'}); }, onElem: { 'item': function (ctx) { ctx.content('Hello world'); } }});
BEM.JSON
24
Плюшки
.common.js
.priv.js
.js
.bemhtml
26
Шаблоны одни и те же
27
API
block block blockblockblock
block block blockblockblock
Склеивает однотипные запросы
request
response
28
API
block block blockblockblock
block block blockblockblock
склеили
раслеили
Склеивает однотипные запросы
request
response
Все роуты описываются в файле страницы
Можно натсроить когда пергружать страницу
Можно не пергружать страницу, а только блок
Автоматически роутит /ajax/ запросы с клиента
29
i-router
30
Отказоустойчивость
Кеширует ответы от API
Кеширует готовый HTML
31
Кеширование
Было 250-300мс
Стало 120-130мс (полная загрузка)
Стало 40-50мс (ajax)
32
Время ответа
Держит 300rps одной машиной
Было 17 машин в кластере
Решили оставить 4 в разных ДЦ
33
Нагрузка
34
github.com/wtfil/bem-node-test
bit.ly/bem-node-hw
Спасибо!