Иван Бибилов "Спортивные проекты Яндекса. Взгляд...

19
Я.Субботник, Челябинск, 25 февраля 2012 года Руководитель группы разработки справочных сервисов Иван Бибилов Спортивные проекты Яндекса. Взгляд изнутри

description

Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри" Я.Субботник в Челябинске в рамках конференции UWDC О докладе: Спортивные проекты имеют четкие сроки запуска, повышенные требования к нагрузкам и отказоустойчивости. Из-за этого выбор архитектуры является очень важным вопросом. В докладе будет подробно рассказано о внутреннем устройстве спортивных проектов, кешировании и высоких нагрузках.

Transcript of Иван Бибилов "Спортивные проекты Яндекса. Взгляд...

Page 1: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

Я.Субботник,  Челябинск,  25  февраля  2012  года  

Руководитель  группы  разработки  справочных  сервисов    

Иван  Бибилов  

Спортивные  проекты  Яндекса.  Взгляд  изнутри  

Page 2: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

2  

•  Олимпиада  2010  в  Ванкувере  

•  Чемпионат  мира  по  футболу  2010  

•  Чемпионат  мира  по  хоккею  2010,  2011  

•  Азиада  2011  

•  Евро  2012  

•  ...  

 

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

Page 3: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

3  

Page 4: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

4  

•  Четкие  сроки  запуска  и  консервирования  проекта  

•  Короткий  срок  жизни  –  1-­‐2  недели  

•  Высокая  посещаемость  за  все  время  проведения  проекта  (несколько  миллионов  уникальных  посетителей  за  время  проведения  проекта)  

•  Несколько  пиков  посещений  для  финалов,  матчей  сборной  Росcии,  Казахстана,  Украины,  Белоруссии    и  т.д.  

•  Взаимодействие  с  большим  количеством  поставщиков  данных  и  сервисов  внутри  Яндекса  

 

Особенности  

Page 5: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

5  

•  Турнирные  сетки,  результаты  матчей  и  соревнований.  

•  Текстовые,  аудио-­‐,  видеотрансляции,  видеонарезки.  

•  Программа  ТВ.  

•  Новости,  Фото.  

•  Подписка  на  SMS,  сообщения  в  Твиттер.  

•  Инфографика.  

•  Ссылки  по  теме.  

 

Традиционные  информационные  блоки  

Page 6: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

6  

Page 7: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

7  

Eurosport.ru,  Sportbox.ru,  Sports.ru,  Газета.ру,  Первый  канал,  Советский  спорт,  Спорт-­‐Экспресс,  Чемпионат.ру,  РИА  Новости,  Livesport.ru  

 

Наши  партнеры  (на  примере  ЧМ  по  Хоккею  в  2011)  

Page 8: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

8  

 

 

Немного  конкретики  

 

 

•  Проект  разделен  на  фронтенд  (XScript)  и  бэкенд  (Django).  

•  Каждый  блок  генерируется  отдельно  по  своему  урлу  и  независим  от  других  

•  Страница  сервиса  просто  собирает  некоторые  блоки  вместе  

•  Вид  страницы  можно  настраивать  –  менять  блоки  местами,  включать  и  выключать  блоки  

•  Все  блоки  генерируются  из  xml  (одной  или  нескольких)  

•  Генерированием  блоков  занимается  XScript-­‐кластер  

 

Page 9: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

9  

 

 

XScript  

 

 

Можно  считать,  что  Xscript  –  это  шаблонизатор,  позволяющий  управлять  данными  из  xml  и  вставлять  их  в  верстку  

 

Картинка с сайта http://joystore.ru/product/magnitiki/

Page 10: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

10  

 

 

XScript  

 

 

Page 11: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

11  

 

 

Данные  

 

 

•  XML-­‐данные  поступают  в  Xscript-­‐кластер  от  бэкенда  

•  Бэкенд  написан  на  Python+Django  

•  Бэкенд  с  какой-­‐то  периодичность  выкладывает  (обновляет)  в  статику  xml-­‐файлы  для  построения  блоков  

•  Динамическая  часть  бэкенда  обслуживает  пользовательские  реакции  

Page 12: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

12  

 

 

Бэкенд  

 

 

Картинка с сайта http://shauryaonsoftware.wordpress.com/2010/05/18/to-learn-a-new-programming-language-part-1/

Почти не ограничивает нас в выборе языка программирования

Page 13: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

13  

Бэкенд  Адаптирует xml от поставщиков под нужны фронтенда

•  Дополняет  данными  

•  Преобразует  xml  в  более  удобный  для  использования  вид  

•  Раскладывает  по  каталогам  в  зависимости  от  типа  данных,  языка,  других  параметров  

•  Копирует  media  (картинки)  на  сервера  Яндекса,  заменяя  ссылки  в  исходных  файлах  

 

Page 14: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

14  

Бэкенд  Позволяет контент-менеджерам управлять данными

Page 15: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

15  

 

 

Нагрузки  на  Олимпиаде  2011  

 

  •  Рекорд  –  1  700  000  посетителей  в  сутки  

•  Примерно  40-­‐50  хитов  на  формирование  блоков  от  посетителя  

•  Пиковая  нагрузка  4200  rps  на  Xscript-­‐кластер  

 

Page 16: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

16  

 

 

Кэш  –  не  хак  

 

 

•  Результаты  генерации  блоков  кешируются  в  памяти  

•  Кэш  на  фронтенде  обновляется  событийно,  когда  данные  обновляет  бэкенд  

•  Бэкенд  по  расписанию  (раз  в  минуту,  5  минут,  10  минут  для  разных  блоков)  опрашивает  поставщиков.  Если  есть  обновления,  он  их  загружает  

•  Параметров  кэша  не  так  и  много,  почти  весь  проект  можно  держать  в  оперативной  памяти  

 

Page 17: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

17  

Схема  имеет  и  недостатки  

Для  «быстрых»  видов  спорта,  например,  для  баскетбола  и  

настольного  тенниса,  можно  перейти  к  событийной  схеме  

работы  бэкенда,  когда  поставщик  данных  уведомляет  о  том,  

что  информация  изменилась  и  ее  надо  обновить.  

Page 18: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

18  

 

 

 

 

Спорт  делает  тебя  быстрее,  выше,  сильнее  и  чуть-­‐чуть  смешнее.  

Фото  с  сайта  Sovsport.  Фотограф  –  Игорь  Уткин  

Page 19: Иван Бибилов "Спортивные проекты Яндекса. Взгляд изнутри"

Руководитель  группы  разработки  справочных  сервисов  

bibilov@yandex-­‐team.ru  

 

Иван  Бибилов