{"id":14287,"url":"\/distributions\/14287\/click?bit=1&hash=1d1b6427c21936742162fc18778388fc58ebf8e17517414e1bfb1d3edd9b94c0","title":"\u0412\u044b\u0440\u0430\u0441\u0442\u0438 \u0438\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0434\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0437\u0430 \u0433\u043e\u0434","buttonText":"","imageUuid":""}

10 миллионов пользователей за 4 дня и рекордные продажи билетов: как мы сделали платформу для британского гольф-турнира

Рассказываем на примере, как проходит разработка высоконагруженного продукта, и как к высоким нагрузкам готовиться, чтобы в момент Х ничего не сломалось.

The Open, Открытый чемпионат, или Открытый чемпионат Великобритании по гольфу — старейшее соревнование по гольфу, входящее в число четырех крупнейших профессиональных турниров («мейджоров») и единственное соревнование, проходящее не на территории США.

Сам турнир проводится раз в год и длится 4 дня. Помимо этих «самых важных» дней есть также различные квалификационные турниры, в результате которых отбираются игроки на главный турнир.

К нам The Open пришли с запросом на создание диджитал-платформы. До нашей встречи у них уже был сайт, но нужных результатов он не приносил. Нужно было увеличить продажи билетов и сделать так, чтобы фанаты и болельщики могли использовать платформу The Open как универсальную «точку соприкосновения» с чемпионатом: покупать билеты и мерч, следить за играми, отсматривать новости.

Слона ели по кусочкам

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

Функциональные блоки платформы

Проще говоря, мы «вытаскивали» блоки функциональности из старой платформы The Open, наделяли их новым флоу, ставили на максимально новую архитектуру, а затем «вставляли» обратно. Делали это бесшовно, чтобы пользователи не сталкивались с трудностями, пользуясь как бы «старым» сайтом, но с «новыми» функциональными блоками.

Продажа билетов

Первым делом реализовали переделку системы продажи билетов. Проработали новое визуальное отображение разных вариантов билетов и тарифов, сделали фронт-офис максимально оптимизированным, чтобы весь фронтенд работал быстро. «Под капотом» сервиса продажи билетов была билетная система, с которой мы проводили интеграцию.

Этот первоначальный апгрейд помог заказчику продать все билеты за рекордный срок – первые 40 дней после запуска.

Аутентификация с Amazon Cognito

Amazon Cognito – это платформа управления идентификацией для веб- и мобильных приложений. В ней собраны каталог пользователей, сервер аутентификации и служба авторизации. Мы интегрировались с платформой для реализации сервиса регистрации и аутентификации The Open.

Раньше у пользователей было несколько логинов для покупки билетов, мерча. Мы реализовали единый логин – single sign on (SSO).

Поэтому, например, покупать билеты и мерч, вставать в лист ожидания за билетами и смотреть эксклюзивные видео турнира стало проще.

4 дня в году и 0 прав на ошибку

Главным вызовом этого проекта было требование выдерживать огромные наплывы пользователей в период проведения турнира. В течение четырех дней портал The Open посещает огромное количество пользователей, и большинство из них проводят длительные сессии, а не просто заглядывают прочитать пару новостей.

Мы понимали, что если в течение этих заветных четырех дней что-то сломается – пиши пропало.

Поэтому вместе с заказчиком мы организовали встречу, главным вопросом которой была критическая функциональность платформы. Выяснили, что при любых обстоятельствах во что бы то ни стало должны работать четыре блока: регистрация, таблица лидеров, tee-times и видеоплатформа The Open TV, на которой происходит стриминг турнира.

Дальше, чтобы обеспечить отказоустойчивость, мы смоделировали все возможные варианты отказов работы инфраструктуры:

  • падение серверов,
  • падение БД,
  • замедление работы и отказы отдельных внешних API,
  • деплой некорректных изменений в коде.

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

  • запасные сервера с «холодными» и «горячими» копиями данных,
  • автоматическое переключение между ними,
  • упрощенные варианты отдельных функций, которые смогли бы работать в случае внештатных ситуаций
  • план по отключению функций под нагрузкой.

Дополнительно мы заранее обговорили и зафиксировали план реагирования и коммуникации на любую из возможных ситуаций.

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

Критическая функциональность платформы и шаги для обеспечения ее отказоустойчивости

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

Нужно было интегрироваться с совершенно новым API в условиях постоянных изменений.

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

А еще наша команда серьезно изучила правила гольфа, чтобы понять, как данные о турнире должны будут отображаться на платформе.

Забавная терминология

Правила гольфа наша команда обсуждала с командой заказчика. Мы погружались в правила игры, сопоставляя их со сценариями работы платформы.

Тут в какой-то момент обсуждения один из коллег из The Open спрашивает: «А что если происходит sudden death (внезапная смерть)?». Обсуждение продолжается, кто-то из наших ребят спрашивает, частое ли это явление – внезапная смерть? Ему отвечают, мол, бывает – нормальная практика. В голове – ужас – неужели гольф в списке настолько опасных видов спорта?

Оказалось, что sudden death – это форма плей-офф в соревнованиях по игре на счет ударов, когда один или несколько игроков имеют одинаковое количество очков. “Внезапно умирают” те, кто закатывает шар в одну лунку за большее количество ударов.

Как портал выдерживает большие нагрузки

За 4 дня турнира платформу посещают миллионы пользователей. Кроме того, их наплывы также появляются в дни старта продаж билетов. Чтобы выдержать нагрузки, мы создавали API на базе бессерверных вычислений для отдельных операций – регистрации, например.

Serverless позволяет порталу выдерживать гибкую нагрузку без необходимости держать большое количество ресурсов. Подробнее об этой технологии и ее применении мы рассказываем в одной из наших статей.

Другой инструмент – Application Performance Monitoring. Это система, которую мы использовали, чтобы в реальном времени выявить страницы или запросы, части кода, которые работают недостаточно быстро, чтобы устранить проблемы.

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

Увеличивать скорость загрузки страниц также помогало обширное кэширование данных на нескольких уровнях: базы данных, приложения и CDN. О нем мы также рассказываем в нашей статье про масштабирование IT-продуктов. Для The Open кэширование делали очень гибким, с большим количеством правил, например, для часто обновляющихся разделов, новостей и видео.

После настройки интеграций и инструментов, упрощающих столкновение с высокими нагрузками, провели несколько симуляций работы платформы и сессии нагрузочного тестирования.

Для этого поехали в Румынию, чтобы поработать вместе с командой, которая отвечала за API и поддержку платформы.

В ходе симуляций оперативно фиксили недочеты и отправляли фичи в тестирование. Получилось хорошо сработаться со сторонней командой и заодно немного попутешествовать – все на пользу продукту.

Итоги

Полноценная переработка платформы The Open была проведена примерно за год. Все это время мы постепенно вводили в эксплуатацию новые функциональные блоки так, что со временем портал полностью обновился. В момент Х (первый турнир после обновления) удалось обеспечить должную производительность и скорость работы портала при десяти миллионах активных пользователей.

С точки зрения архитектуры платформа The Open построена на нескольких интеграциях и элементах:

- сайт на CMS;

- сервис аутентификации Amazon Cognito;

- API с данными о ходе турнира;

- билетная платформа Secutix;

- видеоплатформа Stream AMG;

- ecommerce платформа;

- мобильное приложение;

- CDN.


Платформа The Open работает уже не первый год. Турниры до сих пор освещаются с ее помощью.

Успешное завершение проекта мы с командой разработки поехали отмечать в Pine Creek – гольф-курорт, где все изученные в ходе проекта правила гольфа удалось применить на практике и прочувствовать, что такое настоящая игра.

0
30 комментариев
Написать комментарий...
Sophia Pronina

Очень полезная статья. Спасибо!

Ответить
Развернуть ветку
Фёдор Павлов

Интересная статья ,спасибо автору

Ответить
Развернуть ветку
fuse8 IT-продукты для бизнеса
Автор

Спасибо, мы старались :)

Ответить
Развернуть ветку
Александр Орлов

С какой скоростью удавалось продавать билеты? Какова была пиковая нагрузка на билетную систему, которую она нормально держала?
Вот отчет о нагрузочных тестах нашей платформы - https://bil24.pro/stress_test.html

В 2021-22 годах я протестировал около сотни билетных платформ. Довольно поверхностно, конечно. Но выявилась интересная закономерность. Если у платформы есть общедоступная тестовая зона (с учеткой для попробовать в доке), документация на API, туториалы в открытом доступе, tips and tricks всякие – то платформа хороша. А чем больше на сайте платформы общих описаний и рекламных текстов типа «мы самые продвинутые и лучшие, с нами будет хорошо» - тем хуже то, что за фасадом.На secutix.com полно таких текстов:

«… seamlessly integrated, open cloud platform, which gives you full control of your ticketing, and a suite of tools to better understand and engage with your audiences, monetise your products and services, secure your operations and take your audiences' experience to the next level»

И около нуля ценной технической инфы. Муть, если короче…

Ответить
Развернуть ветку
Валентин Потапов

апи открыто и описано. Но м.б. это для вас 0.

Ответить
Развернуть ветку
Александр Орлов

Ссылочку дадите, с интересом изучу.

Ответить
Развернуть ветку
Валентин Потапов
Ответить
Развернуть ветку
Александр Орлов

Спасибо. Изучу, может быть реализуем и добавим в "коллекцию". https://bil24.pro/images/slide8_v2_31.png

Ответить
Развернуть ветку
Вениамин Мустафин

Интересный у вас продукт!
Правда, мне как пользователю интерфейс выглядит устаревшим. Не думали заняться улучшением?

Ответить
Развернуть ветку
Александр Орлов

Пользователи работают в приложениях, например, в Редакторе - https://bil24.pro/editor.html
Улучшать интерфейс приложений смысла не вижу, он стандартный и удобный. Пользователи довольны, потому что десктопные приложения удобнее и быстрее web интерфейса. Нет свойственных вебу ограничений.

Другая часть - это сайты клиентов, где они продают билеты. Например, https://vdnh.ru/ или https://tickets.championat.com/. Ну тут всех все устраивает также. Хотя мы постоянно работаем над улчшением UX|UI в части продаж.

Сайт с документацией и техническими данными о продуктах - BIL24.pro - со временем переделаем. Например, сделаем как у Cisco Systems - https://www.cisco.com/ Сейчас важнее всю документацию написать или актуализировать.

Делать пустой сайт типа radario.ru или ticketscloud.com с массой бессмысленных рекламных текстов - не наш подход. Мы за конкретику. Вот, например, список всех площадок в платформе в открытом доступе - https://bil24.pro/venues_fin.html . Дизайна нет, зато как интересно организаторам.

Ответить
Развернуть ветку
Вениамин Мустафин

Понял, вопросов нет :)
Интересно, что пользователям десктоп-приложения удобнее. По нашим наблюдениям все стараются переходить именно на веб, особенно сейчас, когда много удаленки и нужен быстрый доступ к продукту с разных девайсов. Видимо, у нас немного другие ЦА с вами )

Продукт классный, желаю удачи в развитии :)

Ответить
Развернуть ветку
Александр Орлов

Мы предоставили API, чтобы сделать Редактор событий на веб интерфейсе. Пока ни у кого из желающих не получается сделать что-то работоспособное. Когда приложение легко раскрашивает ценами 80-ти тысячный стадион Лужники, на лету меняет настройки, цены. тарифы, то веб версия занимается поеданием памяти на самой низкой скорости. При этом на пару кликов в приложении придется сделать десяток кликов в вебе. Когда у вас много взаимосвязанных данных, сотни тысяч объектов - то десктопное приложение лучше веба. Плюс в приложении нельзя попасть "в середину", как не вебе, где можно открывать страницы совершенно непоследовательно. И в приложении все данные "под рукой" и легкодоступны, а веб в этом смысле соткан из ограничений.
Зато простой веб дешевле разработать (за сложные кейсы лучше и не браться), соотвественно, веб - демократичный, в смысле дешевый. Если нет денег платить за десктоп - самое то.

Дока на редактор, со множеством окон, таблиц, svg схем, и прочего тут - https://bil24.pro/editor.html . Наверное, как то можно все это реализовать на вебе, но знать бы как )))

Ответить
Развернуть ветку
Александр Орлов

Или подскажите как с главной сайта попасть на доку апи

Ответить
Развернуть ветку
fuse8 IT-продукты для бизнеса
Автор

Мы перед запуском тоже проводили лоад-тест этой платформы, чтобы выдержать нагрузку - в целом, она выстояла нормально под наши требования. У них хорошая команда саппорта и техлиды, они очень помогли с проектированием интеграции и тестированием.

Ответить
Развернуть ветку
Александр Орлов

А в цифрах можете написать какие были ваши требования?

Ответить
Развернуть ветку
fuse8 IT-продукты для бизнеса
Автор

требования заказчика к платформе, как и скорость продажи билетов в готовом решении находятся под NDA, поэтому мы эти данные в открытый доступ предоставлять не можем :)

Ответить
Развернуть ветку
Александр Орлов

Жаль. Бывает, если там есть чем гордиться, то платформа выставляет в открытый доступ конкретные цифры. Хочется сравнивать платформы, как автомобили, у которых есть мощность, крутящий момент, длина кузова и прочие радости, но если у автодилера эта инфа на табличке возле машины, то у большинства платформ это тайна, под NDA. Часто СУБД, технологический стэк, другие обычные вещи - все тайна. Риторический вопрос, ну почему так?

Ответить
Развернуть ветку
Валентин Потапов

У машины спецификация can шины тоже продается только дилерам за заметные суммы. Приходится снифить.

Ответить
Развернуть ветку
Александр Орлов

В рамках этой аналогии, can шина не влияет на скорость, мощность, грузоподъемность. А вот какой-нибудь MySQL под капотом у очередной билетки, или backend на php - это повлияет на скорость при высоких нагрузках. И еще как.

Ответить
Развернуть ветку
Вениамин Мустафин

Отмечать проект поездкой в гольф-клуб это мощно!
А за проект в девелопменте поедем на экскурсию на стройку ;)

Ответить
Развернуть ветку
Andrey Stepanov

а можно мне проект про яхты, пожалуйста?

Ответить
Развернуть ветку
Вениамин Мустафин

Меня укачивает :(

Ответить
Развернуть ветку
Andrey Stepanov

Secutix (в статье опечатка) - да, продает билеты на футбол и прочий спорт

Ответить
Развернуть ветку
fuse8 IT-продукты для бизнеса
Автор

ошибочку исправили :)

Ответить
Развернуть ветку
Илья Рыбаков

хорошо и качественно сделанный проект

Ответить
Развернуть ветку
fuse8 IT-продукты для бизнеса
Автор

Илья, спасибо за отзыв!

Ответить
Развернуть ветку
Валентин Потапов

билетная платформа Securix продает билеты на футбол ?

Ответить
Развернуть ветку
Andrey Stepanov
Ответить
Развернуть ветку
Андрей Бойков

Хороший материал, интересно было прочитать!

Ответить
Развернуть ветку
Maxim Zaykov

Класс! Спасибо!

Ответить
Развернуть ветку
27 комментариев
Раскрывать всегда