22
Я.Субботник, Алматы, 15 октября 2011 года Руководитель группы разработки справочных сервисов Иван Бибилов От Ванкувера до Азиады: как мы делаем спортивные проекты

Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

  • Upload
    yandex

  • View
    362

  • Download
    1

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

Я.Субботник, Алматы, 15 октября 2011 года

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

Иван Бибилов

От Ванкувера до Азиады: как мы делаем спортивные проекты

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

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

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

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

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

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

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

Page 9: Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

9

XScript

XScript — это XML-язык для создания динамических веб-страниц и среда исполнения сервисов, разработанных с использованием этого языка

Среда исполнения XScript имеет средства доступа к серверам по протоколам CORBA и HTTP

Кроме того, в XScript входит набор расширений XSL, используемых в верстке

Page 10: Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

10

XScript

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

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

Page 11: Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

11

Работа XSLT. Картинка с сайта w3.org

Page 12: Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

12

XScript

Page 13: Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

13

Данные

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

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

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

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

Page 14: Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

14

Бэкенд

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

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

Page 15: Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

15

Бэкенд Практически не нагружает базу данных

Page 16: Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

16

Бэкенд

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

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

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

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

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

Page 17: Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

17

Бэкенд

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

Page 18: Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

18

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

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

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

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

Page 19: Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

19

Характерные пики нагрузок

Page 20: Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

20

Кэш – не хак

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

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

• Можно сделать обновление данных «раз в N минут», но это может привести к «биениям»

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

Page 21: Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

21

О, спорт, ты — мир!

Page 22: Иван Бибилов "От Ванкувера до Азиады: как мы делаем спортивные проекты"

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

[email protected]

Иван Бибилов