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

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

  • Upload
    yandex

  • View
    1.029

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

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

Задача

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

Язык

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

Платформа

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

Платформа

10

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

Платформа

11

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

Framework

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

bem-yanabem-node

Framework

13

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

15

common.blocksdata.blocksdesktop.blocksdesktop.pagesnode_moduleslibsconfigsdebian

Структура проекта

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

16

common.blocksheadernewspost...

data.blocks desktop.blocksdesktop.pagesnode_moduleslibsconfigsdebian

Структура проекта

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

17

common.blocksdata.blocks desktop.blocksdesktop.pagesnode_moduleslibsconfigsdebian

Структура проекта

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

18

common.blocksdata.blocks desktop.blocksdesktop.pagesnode_moduleslibsconfigsdebian

Структура проекта

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

19

common.blocksdata.blocks desktop.blocksdesktop.pagesmain-page

node_moduleslibsconfigsdebian

Структура проекта

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

20

data.blockscommon.blocksdesktop.blocksdesktop.pagesnode_modulesbem-node...

libsconfigsdebian

Структура проекта

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

21

data.blockscommon.blocksdesktop.blocksdesktop.pagesnode_moduleslibsbem-blbem-controlsislands...

configsdebian

Структура проекта

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

22

data.blockscommon.blocksdesktop.blocksdesktop.pagesnode_moduleslibsconfigsdevelopmenttestingproductioncurrent -> production

debian

Структура проекта

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

23

BEM.JSONbit.ly/bem-json

BEMHTMLbit.ly/github-bemhtml

Шаблонизация

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

BEM.JSON.decl('b-block', { onBlock: function (ctx) { ctx.content({elem: 'item'}); }, onElem: { 'item': function (ctx) { ctx.content('Hello world'); } }});

BEM.JSON

24

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

Плюшки

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

.common.js

.priv.js

.js

.bemhtml

26

Шаблоны одни и те же

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

27

API

block block blockblockblock

block block blockblockblock

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

request

response

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

28

API

block block blockblockblock

block block blockblockblock

склеили

раслеили

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

request

response

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

Все роуты описываются в файле страницы

Можно натсроить когда пергружать страницу

Можно не пергружать страницу, а только блок

Автоматически роутит /ajax/ запросы с клиента

29

i-router

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

30

Отказоустойчивость

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

Кеширует ответы от API

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

31

Кеширование

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

Было 250-300мс

Стало 120-130мс (полная загрузка)

Стало 40-50мс (ajax)

32

Время ответа

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

Держит 300rps одной машиной

Было 17 машин в кластере

Решили оставить 4 в разных ДЦ

33

Нагрузка

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

35

bit.ly/new-ppb

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

Спасибо!

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

37

Сергей ПузанковРуководитель группы разработки интерфейсов Поиска

[email protected]@puzankovcom