Festivus Games
Спортивное соревнование, которое проходит не на одной площадке, а одновременно в сотнях клубов по всей стране. Тысячи атлетов сдают результаты в один и тот же день и тут же видят себя в общем рейтинге.
- Заказчик
- Festivus Games, США
- Годы
- 2007 — 2014
- Объём работ
- Бэкенд, производительность, эксплуатация
- Стек
- PHP, WordPress
Задача
У обычного сайта нагрузка — это кривая: утром растёт, ночью падает, под рост можно подстроиться заранее. Здесь нагрузка — это отвесная стена. Триста шестьдесят четыре дня система почти пуста, а в день соревнования вся страна выходит на помост одновременно.
Сотни клубов, тысячи атлетов, несколько часовых поясов — и все разом отправляют результаты и обновляют таблицу. Рейтинг при этом должен пересчитываться на глазах: атлет, только что закончивший подход, хочет видеть своё место сейчас, а не завтра.
Всё это на PHP и WordPress, во времена, когда добавить мощности одним движением было ещё нельзя: к пиковому дню нужно было готовиться, а не реагировать на него.
Что сделали
Держали бэкенд соревнования семь сезонов подряд: приём результатов от клубов, пересчёт таблиц и выдачу рейтингов в тот единственный день, когда это всё решается.
Результат
Тысячи атлетов в один день
Сотни клубов соревнуются одновременно, и все результаты сходятся в один живой рейтинг.
Соревнование пережило нас: оно проводится до сих пор, теперь под именем TRU Challenge. Это наш самый ранний проект и первый случай, когда пиковая нагрузка была не риском, а расписанием.
Нагрузка по расписанию
Такие системы редко ломаются постепенно: они либо выдерживают день икс, либо нет, и второго шанса в этом сезоне не будет. Отсюда и наш подход к эксплуатации: считать пик заранее и проверять систему до того, как он наступит, а не разбираться по факту.
Тот же принцип потом лёг в Хакер и Toorly, где WordPress держал нагрузку, которую по умолчанию не держит.