Агрегатор билетов в США, который прошёл Techstars: как мы его делали и что сделали не так

Привет, на связи Эд Хорьков из КОД9. Несколько лет назад мы разработали для зарубежного заказчика билетный агрегатор Hellotickets. Позже стали партнёрами проекта и прошли с ним акселератор Techstars. В статье хочу рассказать, какие технологии мы использовали, и дать несколько советов тем, кто собирается создавать похожие веб-сервисы.

А сейчас ещё нужны сервисы по продаже билетов на мероприятия?

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

А ещё агрегатор билетов — это классический веб-сервис, поэтому наш опыт с ним хорошо переносится и на другие аналогичные проекты.

Hellotickets — это агрегатор билетов на события в США для туристов

В США приезжает много туристов из Европы и Латинской Америки, и часть из них хотят сходить на бродвейский мюзикл или бейсбольный матч. Но билеты на такие события неудобно, а иногда и невозможно купить из-за границы.

Для таких случаев и создан Hellotickets. Сервис получает билеты от провайдеров из Америки, а затем продаёт их на зарубежную аудиторию. У проекта есть несколько версий для разных стран, где платить можно локальными картами, а вся информация о мероприятиях — на родном для туристов языке.

Основатель Hellotickets обратился к нам в 2016 году, и мы занимались проектом вплоть до 2018-го. Создали весь веб-сервис целиком — занимались фронтендом, бэкендом, интеграциями и взаимодействиями с билетными провайдерами.

На пике средняя цена за билеты была в районе $100, средний чек составлял $200, в день совершалось от 20 до 80 покупок, а месячная выручка составляла $100–150 тысяч.

Так выглядел Hellotickets, когда мы вели проект

К лету 2023-го сервис несколько раз поменял модель, но всё ещё работает — сейчас там в основном продают туры:

Мы разработали всё на Go, но сейчас взяли бы другую технологию

В основе веб-сервиса должна лежать технология, которая подходит для решения поставленных бизнес-задач. Но ещё важно, чтобы технология была распространённой. Надо сразу учитывать, что со временем продукт будет развиваться, команда разработчиков — расти. А найти людей, которые хорошо разбираются в непопулярных технологиях, гораздо сложнее.

Как мы сделали в Hellotickets. Мы занимались разработкой сервиса с 2016-го по 2018-й и выбрали Go в качестве основной технологии. Тогда он только появился и был на слуху — новый, быстрый и перспективный.

Golang действительно оказался быстрым и надёжным, но по мере работы с ним открылись и отрицательные стороны:

  • молодой возраст самого языка и его экосистемы,
  • отсутствие больших веб-фреймворков «всё в одном»,
  • мало Golang-разработчиков на рынке в тот момент.

Все эти причины в итоге негативно повлияли на скорость разработки. Например, мы написали на Go весь бэкенд, но в итоге всё равно пришлось писать прослойку Backend-for-Frontend на Python.

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

Как бы сделали теперь. Думаю, мы бы взяли более универсальную и популярную технологию, вокруг которой уже есть большое комьюнити. Это значит, будет проще выбрать фреймворк и искать разработчиков. Для веб-сервиса я советую Python и Django, Node.js.

Выбирайте популярную технологию, которая подходит для ваших бизнес-задач

Сделали микросервисы, но сейчас бы выбрали монолит — как минимум на первое время

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

Ещё одно преимущество микросервисов — каждый блок можно заменить или переделать отдельно от других, и качество работы проекта не пострадает.

Но микросервисы — это палка о двух концах. С одной стороны, бизнес-логика разносится по разным блокам. С другой — растёт количество инфраструктурного кода, который нужен для связи между сервисами. Поэтому расходы ресурсов на поддержку проекта вырастут.

Как мы сделали в Hellotickets. Мы понимали, что у агрегатора будет много интеграций — например, с разными билетными провайдерами из США. Поэтому решили, что каждую интеграцию будет обслуживать отдельный микросервис.

Это было решение с оглядкой на будущее, но сейчас я уверен, что это было ошибкой. Микросервисная архитектура оправдана в большом продукте, но на начальном этапе разработки только создаёт дополнительные трудности. Например, у нас на старте было 2–3 инженера и до 30% их времени уходило на поддержку микросервисной инфраструктуры, а не на реализацию бизнес-логики.

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

Добавили анти-фрод системы — сейчас бы тоже задумались о них

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

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

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

Как мы сделали в Hellotickets. Заказчик уже работал на билетном рынке и знал часть рисков и схем, поэтому мы сразу продумали антифрод-системы.

Ключевая задача конкретно для Hellotickets — научиться идентифицировать ворованные карточки. Вот несколько прокси-метрик, на которые мы обращали внимание, чтобы выделять такие карты:

Со временем мы добавили 3D-Secure аутентификацию при оплате и перестали принимать карточки из стран, где её не поддерживают

Как бы сделали теперь. Подход оставили бы тот же: нужно заранее изучить бизнес-логику вместе с инсайдером рынка и определить все потенциально уязвимые места. Затем важно продумать системы, которые позволят автоматически отсекать как можно больше недобросовестных пользователей и мониторить транзакции на предмет аномальных. Главное — заранее определить критерии.

Делали данные от разных провайдеров однородными и выводили на карты площадок — сейчас сделали бы так же

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

Например, на большой площадке вроде стадиона обычно сложная структура мест, есть несколько секторов и уровней. Стадион продаёт билеты разным провайдерам, которые затем перепродают их через Hellotickets. Перед тем как показать билеты людям, мы должны снова собрать данные вместе и смэтчить их между собой. А один провайдер называет секцию «амфитеатр» полным словом amphitheatre, другой — amph, а третий — lawn.

Как мы сделали в Hellotickets. Чтобы мэтчить между собой билеты разных провайдеров, мы придумали систему унификации данных. Поэтому и билеты с пометкой amphitheatre, и билеты с пометкой amph в нашей системе снова назывались одинаково.

Затем мы накладывали информацию с билетов на карты площадок. Часть из них предоставили поставщики билетов, а для некоторых площадок мы создали новые цифровые модели силами подрядчика:

👉 Seats — сервис, который создавал для нас карты площадок

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

Интерфейс Hellotickets: схема Мэдисон-сквер-гарден, арены в Нью-Йорке

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

На запуск билетного агрегатора уйдёт примерно полгода

В зависимости от сложности задачи на разработку уйдёт от 6 до 9 месяцев — возможно и дольше. Команда, которая создаст веб-сервис, стоит примерно 2,3 млн ₽ в месяц:

  • Фронтенд разработчик раз — 400 000 ₽
  • Фронтенд разработчик два — 400 000 ₽
  • Бэкенд разработчик раз — 400 000 ₽
  • Бэкенд разработчик два — 400 000 ₽
  • UI/UX-дизайнер — 300 000 ₽
  • QA/QC — 250 000 ₽
  • Проджект на полставки — 150 000 ₽

Соответственно, если проект займёт полгода, он обойдётся в 13,8 млн ₽:

6 месяцев × 2,3 млн ₽ = 13,8 млн ₽

Кратко: что важно знать о разработке билетных агрегаторов — или любого веб-сервиса

👉 Выбирайте технологию, которая позволит решать бизнес-задачи, а ещё будет достаточно популярной, чтобы можно было легко найти разработчиков. Для веб-сервисов советую Python и Django, Node.js.

👉 Создавайте монолит — в начале разработки это всегда практичнее. Нет смысла переходить на микросервисы до тех пор, пока ваша система не станет слишком сложной, чтобы поддерживать её на монолите.

👉 Продумайте анти-фрод системы. Стоит изучить бизнес-логику вместе с инсайдером рынка, чтобы определить все места, где могут появиться уязвимости. Главная проблема в Hellotickets — на билетах обналичивали деньги с ворованных карт.

👉 Предусмотрите решения для гармонизации данных: автоматическую систему, интерфейс для админки модераторов или микс из обоих вариантов. В билетном агрегаторе — как и в любом веб-сервисе — информация от разных провайдеров будет неоднородной.

👉 На запуск веб-сервиса в духе Hellotickets в 2023-м уйдёт от 6 месяцев. Команда, которая справится с запуском, обойдётся в 2,3 млн ₽ в месяц.

Делимся другими кейсами:

0
15 комментариев
Написать комментарий...
Violent Jarvis Monkey
А сейчас ещё нужны сервисы по продаже билетов на мероприятия?

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

Ответить
Развернуть ветку
Ирина Зотова

Возможно это не так популярно и нужен долгий срок, чтоб это стало популярно

Ответить
Развернуть ветку
Вячеслав Уфимцев

Из каких стран фродят с билетами?

Ответить
Развернуть ветку
Эд Хорьков

Ливан, и еще парочка каких-то. В основном из MENA-региона

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

Мы делаем bil24.pro / tixgear.com с 2015 по сей день. Интересно, делались нагрузочные / стресс тесты Hellotickets на залах или стадионах около 20К мест и больше? Есть результаты?
Наши тут - https://bil24.pro/stress_test.html

Ответить
Развернуть ветку
Эд Хорьков

Мы продавали билеты в том числе на Yankee Stadium, в котором 46 тысяч мест. Все прекрасно работало.

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

Сколько мест продали? за какой период времени?

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

"Мы продавали билеты..." и нагрузочные испытания, это сильно о разном. Величина стадиона ни о чем не говорит, если вы на него продали пару сотен билетов за месяц. Проблема многих систем - не способность вынести нагрузку.

https://www.gazeta.ru/culture/news/2022/11/19/19072639.shtml

Рекордный спрос на тур Swift 2023 года, ее первый тур за последние пять лет, обрушил веб-сайт компании, заставил клиентов часами ждать в очереди за «предпродажными» билетами.

Вот недавний наш кейс - https://vc.ru/services/651314-hokkey-final-zapad-cska-ska-kak-interesno-ustroen-biletnyy-rynok
Мы спокойно продавали билеты, пока клуб заставлял фанатов сутками стоять в очереди

Ответить
Развернуть ветку
Aleksey Parshukov

aviasales начинался как блог на WP. Городить такой огород ради 20 покупок в день? Жесть.

Ответить
Развернуть ветку
Эд Хорьков

Полностью с вами согласен) мы теперь делаем по другому, об этом написали в статье

Ответить
Развернуть ветку
Евгений

«2–3 инженера и до 30% их времени уходило на поддержку микросервисной инфраструктуры» — не понятно, чем они занимались? Что в микросервисах можно «поддерживать»? Да ещё и такой толпой! У нас около 50 внешних подключений (авиабилеты) поддерживает примерно 0.01 человек. Этот же человек 0.99 оставшегося рабочего времени вместе с остальной командой пилят что-то новое/важное/нужное, отвлекаясь только на обед, кофе и булки размять.

«В начале проекта в любом случае стоит делать монолит, потому что его проще поддерживать» — однозначно ошибочное суждение. Монолит — это смертельный приговор проекту прямо на старте. Это будет очень опасный (для проекта) «больной» урок жизни, если использовать монолит. Мы его прошли 8 лет назад. Хотите быстро? Совместите. Часть залейте в монолит (потом сможете выпилить), часть сразу в микросервисы (то, что туда изначально «просится»).
И потом, микросервисы — это всегда простое горизонтальное масштабирование команды.

«Выбирайте технологию, которая позволит решать бизнес-задачи, а ещё будет достаточно популярной» — согласен на 100%.

Ответить
Развернуть ветку
Эд Хорьков

Почитайте Фаулера

Ответить
Развернуть ветку
Эд Хорьков

Он очень хорошо пишет про микросервисы и все их преимущества и недостатки. Мы все эти недостатки прочувствовали на себе.

Ответить
Развернуть ветку
Евгений

Серьезно? Почитайте ещё раз комментарий.

Не знаю кто такой «Фаулер». Сейчас загуглил и что? Он авторитет?
Его статья вышла только в 2015 году. Мы на некое подобие микросервисной архитектуры перешли, если я правильно помню, 2011-2012г. Ещё на Gearman, но вы вряд ли об этой штуке даже слышали, а у нас кое-где он до сих пор выдерживает весьма неплохой rps. Да, дни Gearman сочтены, но на текущую секунду — работает.

В любой концепции есть «Do it right» и «Do it wrong». Возможно, микросервис вам не подошел т.к. ваш подход оказался «Do it wrong».
Тогда надо отложить клавиатуру и взяться за карандаш.

Я рассказал о нашем опыте. Мы начинали как монолит. За 17 лет многое повидали и на много граблей наступили. В т.ч. монолит — это было нашей ошибкой. Мы это пережили. Мы это переписали. Как результат — вполне успешно развиваемся по миру.

Ответить
Развернуть ветку
Эд Хорьков

Я понял что у вас другой опыт, и это прекрасно что у вас все получилось. Будет интересно почитать что именно вы делали с микросервисами

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