Новый Поиск по
блогам на bem-node
Сергей Пузанков
BEMup врамках YaC 2013, Москва
Задача
Язык
Платформа
Платформа

10
Платформа

11
Framework
Framework

bem-yana
bem-node

13
bem-node

github.com/wtfil/bem-node

bit.ly/bem-node

14
Структура проекта
common.blocks
data.blocks
desktop.blocks
desktop.pages
node_modules
libs
configs
debian

15
Структура проекта
common.blocks
header
news
post
...
data.blocks
desktop.blocks
desktop.pages
node_modules
libs
configs
de...
Структура проекта
common.blocks
data.blocks
desktop.blocks
desktop.pages
node_modules
libs
configs
debian

17
Структура проекта
common.blocks
data.blocks
desktop.blocks
desktop.pages
node_modules
libs
configs
debian

18
Структура проекта
common.blocks
data.blocks
desktop.blocks
desktop.pages
main-page
node_modules
libs
configs
debian
19
Структура проекта
data.blocks
common.blocks
desktop.blocks
desktop.pages
node_modules
bem-node
...
libs
configs
debian

20
Структура проекта
data.blocks
common.blocks
desktop.blocks
desktop.pages
node_modules
libs
bem-bl
bem-controls
islands
......
Структура проекта
data.blocks
common.blocks
desktop.blocks
desktop.pages
node_modules
libs
configs
development
testing
pro...
Шаблонизация
BEM.JSON
bit.ly/bem-json
BEMHTML
bit.ly/github-bemhtml

23
BEM.JSON
BEM.JSON.decl('b-block', {
onBlock: function (ctx) {
ctx.content({elem: 'item'});
},
onElem: {
'item': function (...
Плюшки
Шаблоны одни и те же

.common.js
.priv.js
.js
.bemhtml

26
Склеивает однотипные запросы
block block

block block block
request
API
response

block block

block block block
27
Склеивает однотипные запросы
block block

block block block
склеили

request

API
раслеили
block block

response

block bl...
i-router

Все роуты описываются в файле страницы
Можно натсроить когда пергружать страницу
Можно не пергружать страницу, а...
Отказоустойчивость

30
Кеширование

Кеширует ответы от API
Кеширует готовый HTML

31
Время ответа

Было 250-300мс
Стало 120-130мс (полная загрузка)
Стало 40-50мс (ajax)

32
Нагрузка

Держит 300rps одной машиной
Было 17 машин в кластере
Решили оставить 4 в разных ДЦ

33
github.com/wtfil/bem-node-test

bit.ly/bem-node-hw

34
bit.ly/new-ppb

35
Спасибо!
Сергей Пузанков
Руководитель группы разработки
интерфейсов Поиска
@puzankovcom
puzankov@yandex-team.ru

37
Сергей Пузанков — Новый Поиск по блогам на bem-node
Сергей Пузанков — Новый Поиск по блогам на bem-node
Сергей Пузанков — Новый Поиск по блогам на bem-node
Сергей Пузанков — Новый Поиск по блогам на bem-node
Сергей Пузанков — Новый Поиск по блогам на bem-node
Upcoming SlideShare
Loading in …5
×

Сергей Пузанков — Новый Поиск по блогам на bem-node

917 views

Published on

В докладе я расскажу о том, как разрабатывали новый Поиск по блогам Яндекса. О том, как выбирали фреймворк для этого проекта, и почему в конечном итоге остановились на bem-node. Поговорим о сильных сторонах bem-node, которые позволили запустить новый интерфейс в сжатые сроки и с улучшенной производительностью.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
917
On SlideShare
0
From Embeds
0
Number of Embeds
293
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Сергей Пузанков — Новый Поиск по блогам на bem-node

  1. 1. Новый Поиск по блогам на bem-node Сергей Пузанков BEMup врамках YaC 2013, Москва
  2. 2. Задача
  3. 3. Язык
  4. 4. Платформа
  5. 5. Платформа 10
  6. 6. Платформа 11
  7. 7. Framework
  8. 8. Framework bem-yana bem-node 13
  9. 9. bem-node github.com/wtfil/bem-node bit.ly/bem-node 14
  10. 10. Структура проекта common.blocks data.blocks desktop.blocks desktop.pages node_modules libs configs debian 15
  11. 11. Структура проекта common.blocks header news post ... data.blocks desktop.blocks desktop.pages node_modules libs configs debian 16
  12. 12. Структура проекта common.blocks data.blocks desktop.blocks desktop.pages node_modules libs configs debian 17
  13. 13. Структура проекта common.blocks data.blocks desktop.blocks desktop.pages node_modules libs configs debian 18
  14. 14. Структура проекта common.blocks data.blocks desktop.blocks desktop.pages main-page node_modules libs configs debian 19
  15. 15. Структура проекта data.blocks common.blocks desktop.blocks desktop.pages node_modules bem-node ... libs configs debian 20
  16. 16. Структура проекта data.blocks common.blocks desktop.blocks desktop.pages node_modules libs bem-bl bem-controls islands ... configs debian 21
  17. 17. Структура проекта data.blocks common.blocks desktop.blocks desktop.pages node_modules libs configs development testing production current -> production debian 22
  18. 18. Шаблонизация BEM.JSON bit.ly/bem-json BEMHTML bit.ly/github-bemhtml 23
  19. 19. BEM.JSON BEM.JSON.decl('b-block', { onBlock: function (ctx) { ctx.content({elem: 'item'}); }, onElem: { 'item': function (ctx) { ctx.content('Hello world'); } } }); 24
  20. 20. Плюшки
  21. 21. Шаблоны одни и те же .common.js .priv.js .js .bemhtml 26
  22. 22. Склеивает однотипные запросы block block block block block request API response block block block block block 27
  23. 23. Склеивает однотипные запросы block block block block block склеили request API раслеили block block response block block block 28
  24. 24. i-router Все роуты описываются в файле страницы Можно натсроить когда пергружать страницу Можно не пергружать страницу, а только блок Автоматически роутит /ajax/ запросы с клиента 29
  25. 25. Отказоустойчивость 30
  26. 26. Кеширование Кеширует ответы от API Кеширует готовый HTML 31
  27. 27. Время ответа Было 250-300мс Стало 120-130мс (полная загрузка) Стало 40-50мс (ajax) 32
  28. 28. Нагрузка Держит 300rps одной машиной Было 17 машин в кластере Решили оставить 4 в разных ДЦ 33
  29. 29. github.com/wtfil/bem-node-test bit.ly/bem-node-hw 34
  30. 30. bit.ly/new-ppb 35
  31. 31. Спасибо!
  32. 32. Сергей Пузанков Руководитель группы разработки интерфейсов Поиска @puzankovcom puzankov@yandex-team.ru 37

×