
Авторизация

Сброс пароля
Разработка backend-архитектуры масштабируемого сервиса бронирования отелей для MTC Travel
Вхождение в кейс дня
Заказчик: ПАО "МТС"
Страница кейса/результат: https://travel.bronevik.com/

Cоздание устойчивой, производительной и гибкой backend-инфраструктуры для онлайн-сервиса бронирования отелей.
1. Вводная задача от заказчика, проблематика, цели
Цель нашего проекта — создание устойчивой, производительной и гибкой backend-инфраструктуры для онлайн-сервиса бронирования отелей. Перед нами стояла задача не просто улучшить текущие процессы, а переосмыслить архитектуру так, чтобы обеспечить масштабируемость, конкурентоспособность и высокий уровень пользовательского опыта.
Заказчиком выступил онлайн-сервис бронирования, который столкнулся с рядом ограничений:
- Устаревшая, монолитная структура, затрудняющая масштабирование и подключение новых партнёров.
- Отсутствие умных механизмов поиска и ранжирования отелей.
- Недостаточная прозрачность ценовой политики в сравнении с конкурентами.
2. Описание реализации кейса и творческого пути по поиску оптимального решения
Этапы реализации
1. Исследование и анализ
На первом этапе мы провели глубинный анализ существующей системы и бизнес-потребностей:
- Проанализировали поведение пользователей и выявили, что большинство затрудняется при вводе названий отелей и городов.
- Изучили конкурентные платформы, чтобы понять, какие фичи повышают доверие и увеличивают конверсию.
- Сформировали ключевые бизнес-метрики: конверсия в бронирование, точность подсказок, количество показов конкурентных цен.
Вывод: необходимо реализовать три ключевых компонента:
- сервис автодополнения,
- сервис конкурентных цен,
- гибкий поисковый механизм с улучшенным алгоритмом сортировки.
2. Проектирование архитектуры
На основе анализа мы выбрали микросервисную архитектуру с изолированной ответственностью каждого компонента. Основные принципы:
- Распределённая отказоустойчивая система.
- Простота масштабирования и расширения.
- Инфраструктура, готовая к высоким нагрузкам.
Ключевые технологии:
- Go — за счёт производительности и скорости старта сервисов.
- Elasticsearch — идеален для полнотекстового поиска и автодополнения.
- MongoDB — удобен для хранения конкурентных цен с гибкой схемой.
- Kafka — для асинхронной передачи бигдат-потоков.
- Redis — для ускорения выдачи подсказок и снижения нагрузки.
- Kubernetes + Helm — управляемое развёртывание в кластере.
3. Реализация компонентов
Suggester — сервис автодополнения
Цель: предоставить пользователю точные и релевантные подсказки при вводе локаций и названий отелей.
Что сделано:
- Построен отдельный сервис на Go, работающий с Elasticsearch.
- Спроектированы индексы с учётом веса частоты запросов, приоритета отелей и пользовательских паттернов.
- Настроена интеграция с Redis для кэширования популярных запросов.
- Добавлены бизнес-метрики: CTR по подсказкам, процент успешных завершений поиска после использования Suggester.
Результат: сокращение времени на поиск, увеличение завершённых бронирований на 7%.
Competitors Pricing — сервис конкурентных цен
Цель: показать пользователю выгоду от бронирования на платформе через шильдик "У нас дешевле".
Что сделано:
- Разработан Kafka-консьюмер, получающий поток данных от партнёров и агрегаторов.
- Реализована очистка и нормализация ценовых данных.
- Информация сохраняется в MongoDB для быстрого доступа.
- Из основного поискового сервиса добавлен запрос к этому микросервису, чтобы обогащать выдачу данными о цене конкурентов.
Метрики:
- Кол-во цен по провайдерам.
- Частота показа шильдика.
- Влияние на пользовательскую конверсию.
Результат: повышено доверие пользователей, рост кликов на карточки с пометкой "дешевле", усиление конкурентного преимущества платформы.
Поисковый движок и интеграции с провайдерами
Цель: улучшить релевантность выдачи и упростить подключение новых поставщиков.
Что сделано:
- Реализована новая сортировка на основе рекомендательной логики: учитываются тарифы, рейтинг, скидки.
- Для расчётов выгружались тарифные данные с S3 и использовались в вычислении кастомного рейтинга.
- Удалена жёсткая привязка к конкретным провайдерам — теперь каждый провайдер подключается как отдельный модуль через конфигурацию.
Результат: система стала гибкой и расширяемой, что позволило подключить новых поставщиков без доработки ядра.
4. Тестирование и развёртывание
- Написаны unit-тесты и интеграционные тесты для всех компонентов.
- Проведено нагрузочное тестирование, симулирующее реальную нагрузку в пиковые часы.
- Использована инфраструктура на Kubernetes, сборка и деплой через Helm Charts.
- Настроено логирование и мониторинг через ELK, Prometheus и Grafana.
5. Поддержка и развитие
- Постоянно дорабатываются метрики.
- Проходят A/B тесты для улучшения алгоритмов подсказок и сортировки.
- Подключаются новые провайдеры и каналы данных.
- Идёт оптимизация индексов в Elasticsearch по данным использования.
Команда проекта
- 3 backend-разработчика (Go)
- 1 frontend-разработчик
- 1 QA-инженер
- 1 тимлид

3. Результаты сотрудничества
Результаты проекта
- Время отклика поиска снижено на 40%.
- Конверсия в бронирование выросла на 11% после внедрения рекомендательной логики и конкурентных цен.
- Сокращено время подключения нового провайдера с 2 недель до 2 дней.
- Пользовательский опыт улучшен благодаря автодополнению и прозрачной ценовой политике.
- Архитектура готова к масштабированию и дальнейшему развитию.
4. Заключение
Проект доказал, что продуманная архитектура backend и ориентированность на бизнес-метрики позволяют не только масштабировать продукт, но и добиться реального роста пользовательской активности.
Наш кейс демонстрирует, как технологии Go, Kafka, Elasticsearch и микросервисный подход решают сложные задачи реального бизнеса и делают платформу конкурентоспособной на рынке.