В прошлом году в Украине легализовали работу гемблинг-платформ, но у разработчиков осталось немало предубеждений против этой сферы. На деле в гемблинге много вакансий с интересными задачами: работа с высокими нагрузками, новыми языками программирования и продуктом, которым каждый день пользуются тысячи человек.
Мы поговорили об этом с PHP Development Manager Михаилом Горишным и Head of Business Analysis Захаром Хрыстычем. Они работают в Betinvest – IT-компании, которая делает платформы для ставок, в основном для FAVBET.
В партнерском материале с FAVBET они рассказали Highload, почему не стесняются говорить о своей работе, и поделились тремя любопытными задачами, с которыми столкнулись на практике.
Ускорили обработку данных в 40 раз
«К гемблингу консервативные люди относятся как к секс-шопам: вещи-то нормальные, но реагируют на них иногда негативно», – шутит Михаил Горишный, руководитель PHP-разработчиков в Betinvest. Он пришел в компанию в 2020 году: до этого работал в сервисе email-рассылок, но о новой работе рассказывать не стесняется.
«Недавно мы с командой пришли к операционным менеджерамотвечают за все, что происходит на сайте в реальном времени, – делится Михаил. – Ребята пожаловались, что из-за медленной работы базы данных им становится все сложнее анализировать статистику».
Михаил Горишный, руководитель PHP-разработчиков в Betinvest.
Данных в базе было так много, что менеджерам приходилось либо уменьшать выборку, либо долго ждать. На качестве бизнес-анализа игр это сказывалось негативно.
«В другой компании разработчики посоветовали бы и дальше использовать меньше данных для отчетов и не стали бы тратить время на комплексные изменения, но не у нас», – отмечает Михаил.
Сервисы FAVBET собирают данные о тысячах клиентов: в какие игры они заходят, сколько тратят денег. «Для записи и анализа мы использовали базу PostgreSQL, но постепенно она перестала справляться с нагрузками, – объясняет Михаил. – Мы много раз ее оптимизировали, и это перестало помогать. Тогда я предложил подключить базу ClickHouse».
ClickHouse сортирует данные в отдельные блоки, и поиск нужной информации становится проще. PostgreSQL теперь используют как операционную базу, а ClickHouse – для аналитики big data в реальном времени.
На разработку решения ушло три месяца. Михаил спроектировал архитектуру взаимодействия сервисов с новой базой, затем ее подключили и наполнили данными, чтобы протестировать устойчивость. «ClickHouse показала отличный результат: она не падала при пиковых нагрузках и анализировала нужные данные в 40 раз быстрее, – говорит Михаил. – Все это время PostgreSQL продолжала работать, и интеграция нового решения не сказалась на клиентах».
Теперь операционная команда может анализировать больше данных за более длительный период. Если раньше доступна была информация за пару месяцев, то теперь – за годы. «Еще мы можем дать больше инструментов для работы другим отделам, – рассказывает Михаил. – Маркетологи, например, смогут рекомендовать игры на основе того, во что клиенты чаще играют».
Справились с нагрузками в пандемию
В марте 2020 года мир ушел на затяжной карантин. Соревнования по футболу, теннису и другим видам спорта отменяли. Люди не могли сделать прогнозы и поболеть за любимую команду. Тогда начал расти спрос на онлайн-казино, и база данных FAVBET оказалась на грани коллапса.
Нагрузка росла два месяца, тяжелее всего пришлось системе обработки транзакций.
«Мы с PHP-командой пытались оптимизировать базу данных, но исправить ситуацию не удавалось, – говорит Михаил. – С обработкой big data PostgreSQL не справлялась: время отклика базы данных постоянно увеличивалось».
Тогда Михаил решил действовать радикально: провести партиционирование, удалить ненужные запросы и изменить правила работы с кодом.
Сначала команда изучила, сколько раз в день посылали каждый запрос, среднее и максимальное время ответа, число запрашиваемых данных. Затем провели оптимизацию всех отдельных запросов. «Например, оказалось, что ежедневный запрос на подсчет всех транзакций по клиенту грузит базу и не дает ничего полезного, – рассказывает Михаил. – Его удалили, и база стала работать быстрее».
Еще на время ответа влиял размер базы: в ней было множество отдельных таблиц. «Мы попробовали репликацию метод, который позволяет распределить нагрузку базы данных с одного на несколько серверов, например, Master и Slave, но она нам не подошла. Иногда данные в Master – основном сервере и Slave, который копирует с него все изменения, не были синхронизированы, – объясняет Горишный. – Мы работаем с данными в режиме реального времени и не можем такого допустить».
Тогда провели партиционирование: администраторы разбили базу PostgreSQL на партиции по дням. Время отклика базы данных существенно уменьшилось.
Еще Михаил ввел два обязательных правила для написания кода:
- Обязательные код-ревью. Команда теперь перепроверяет код друг у друга на ошибки, неточности и общий стиль программирования.
- Код больше не пишут с привязкой к фреймворку Laravel. Теперь с помощью шаблонов проектирования пишут код на чистом PHP – такой код быстрее выполняется и тратит меньше ресурсов серверов.
«Эта история случилась, когда я только пришел в компанию, – рассказывает Михаил. – Теперь мы научились думать наперед. FAVBET выстоит, даже если введут новый локдаун».
Научились находить ошибки за пару секунд
Захар Хрыстыч до Betinvest уже шесть лет работал в сфере гемблинга. В сентябре 2020 года он пришел в команду на должность Head of Business Analysis и застал такой случай.
В одну из ночей команда службы поддержки следила за работой платформы. Все было спокойно, но тут пришло уведомление: система мониторинга обнаружила в игре подозрительную активность – клиенты постоянно выигрывали деньги. Дежурные отключили проблемную игру и разбудили начальника отдела. Первой мыслью было, что FAVBET взломали.
«Все оказалось проще, – вспоминает Захар Хрыстыч. – На стороне компании-провайдера, которая предоставила игру FAVBET, произошла ошибка, и сбился показатель RTP для выигрыша в казино».
Захар Хрыстыч, Head of Business Analysis
RTP – return to player – показывает, сколько денег в среднем вернется пользователю с одного прогноза. Для каждой игры RTP свой: нормой считается показатель в пределах 94–99%. Но из-за ошибки провайдера он поднялся до 150%, и за час клиенты выиграли 1 млн грн.
Через пару дней разработчик починил игру, и ее вернули на сайт. А команде предстояло придумать, как сделать так, чтобы чужие ошибки не влияли на работу платформы. «Наши сервисы собирают big data со всех игр. Раньше они направляли данные в базу PostgreSQL, – рассказывает Захар. – Она анализировала их и присылала уведомления об ошибках раз в 60 минут. Мы поняли, что этой частоты мало, и решили ускорить анализ».
Сначала разработчики проанализировали работу системы уведомлений и выяснили, что она собирает данные со всех сервисов FAVBET. Чтобы ускорить работу с ними, выбрали базу ClickHouse.
«Теперь база анализирует больше данных и делает это в реальном времени, – объясняет Захар. – Мы можем определить повышение RTP или другую ошибку в играх за пару секунд».
«Если система мониторинга видит, что число ошибок увеличилось или клиенты много выигрывают у какого-то провайдера, она посылает в нашу группу в Microsoft Teams уведомление, – подводит итог Захар. – А мы можем вручную проверить, что происходит, быстро среагировать и исправить ситуацию, если нужно».
Почему нам нравится работать с FAVBET
«Наш бизнес очень похож на геймдев, только с системой вывода денег», – отмечает Захар. Из-за гемблинговой специфики рабочие задачи специалистов кардинально не отличаются от задач в других IT-компаниях. А соцпакет и бонусы в FAVBET не уступают лидерам украинского IT-рынка:
- добровольное медицинское страхование;
- спортзал;
- компенсация внешнего обучения;
- обучение корпоративному английскому и разговорный клуб с носителем языка;
- билеты на спортивные мероприятия клубов-партнеров;
- спонсирование внутренних спортивных команд;
- скидки от компаний-партнеров.
В офисе есть игровые приставки – вечером после работы можно устроить с коллегами турнир. А для тех, кто любит приезжать на работу на велосипеде, есть душевая комната. Кстати, в FAVBET есть свои команды по футболу и баскетболу, они регулярно тренируются и участвуют в любительских соревнованиях.
«Мы за баланс работы и жизни, у меня в отделе нет переработок, – говорит Михаил. Сейчас мы работаем “наперед” над возможными проблемами, а не тушим пожары».
Еще один плюс работы с FAVBET – глубокое погружение в продукт. «Наши ребята понимают, как работает весь бизнес, – отмечает Захар Хрыстыч. – Вы будете знать столько же, сколько семь специалистов в других компаниях. Вне FAVBET я не могу себе это представить».
Фотограф: Владимир Герасимов
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: