K2 STUDIO

Продукты под ключ

← Все кейсы

Festivus Games

Спортивное соревнование, которое проходит не на одной площадке, а одновременно в сотнях клубов по всей стране. Тысячи атлетов сдают результаты в один и тот же день и тут же видят себя в общем рейтинге.

Заказчик
Festivus Games, США
Годы
2007 — 2014
Объём работ
Бэкенд, производительность, эксплуатация
Стек
PHP, WordPress

Задача

У обычного сайта нагрузка — это кривая: утром растёт, ночью падает, под рост можно подстроиться заранее. Здесь нагрузка — это отвесная стена. Триста шестьдесят четыре дня система почти пуста, а в день соревнования вся страна выходит на помост одновременно.

Сотни клубов, тысячи атлетов, несколько часовых поясов — и все разом отправляют результаты и обновляют таблицу. Рейтинг при этом должен пересчитываться на глазах: атлет, только что закончивший подход, хочет видеть своё место сейчас, а не завтра.

Всё это на PHP и WordPress, во времена, когда добавить мощности одним движением было ещё нельзя: к пиковому дню нужно было готовиться, а не реагировать на него.

Что сделали

Держали бэкенд соревнования семь сезонов подряд: приём результатов от клубов, пересчёт таблиц и выдачу рейтингов в тот единственный день, когда это всё решается.

Результат

Тысячи атлетов в один день

Сотни клубов соревнуются одновременно, и все результаты сходятся в один живой рейтинг.

Соревнование пережило нас: оно проводится до сих пор, теперь под именем TRU Challenge. Это наш самый ранний проект и первый случай, когда пиковая нагрузка была не риском, а расписанием.

Нагрузка по расписанию

Такие системы редко ломаются постепенно: они либо выдерживают день икс, либо нет, и второго шанса в этом сезоне не будет. Отсюда и наш подход к эксплуатации: считать пик заранее и проверять систему до того, как он наступит, а не разбираться по факту.

Тот же принцип потом лёг в Хакер и Toorly, где WordPress держал нагрузку, которую по умолчанию не держит.

Обсудить нагрузку