Как переехать на микросервисную архитектуру: опыт Hotelbook

Как переехать с монолитной инфраструктуры на микросервисы: опыт Hotelbook

Рассказываем, как компания развивает сервис по бронированию отелей на инфраструктуре Selectel.

Изображение записи

Кейс будет полезен для компаний в следующих сферах:

  • TravelTech
  • Разработка ПО
  • Высоконагруженные сервисы

Задачи:

  • Гарантировать стабильную работу сервиса при высоких нагрузках
  • Обеспечить быструю масштабируемость инфраструктуры
  • Обеспечить надежную защиту данных

О компании

Hotelbook — российский туристический оператор в области деловых поездок. Компания развивает несколько B2B-проектов по бронированию и контрактированию отелей. В их базе находится более 3 млн. объектов от 300+ поставщиков со всего мира.

IT-сопровождением проекта занимается компания ООО «Лидер Тех». Именно они и обратились к Selectel, чтобы организовать надежную инфраструктуру. Компания полностью отвечает за техническую поддержку платформы: от настройки серверов и сети до разработки сервисов, поддержки 1С и прочего.

Вызовы и решения

Гарантировать стабильную работу сервиса при высоких нагрузках

Основной проект компании — система бронирования отелей Hotelbook, и ее самая нагруженная часть — поисковый сервис. Только за последний год она выросла в шесть раз. В выдаче может присутствовать до 30 поставщиков с тысячами вариантами размещений. Компания получает огромный трафик на свои сервисы — его нужно быстро обрабатывать, применять разные политики и отдавать конечный результат пользователям.

До переезда в Selectel платформа представляла собой монолитное приложение, развернутое на нескольких выделенных серверах. Все сервисы — поисковая система, эквайринг, контрактирование отелей и другие — были объединены в единую систему и запускались как одно приложение. Это приводило к трудностям: так, например, при изменении одного компонента  необходимо было дорабатывать и другие части платформы. Также предыдущая архитектура Hotelbook не справлялась с задачей оперативного масштабирования инфраструктуры.

Организовали гибридную инфраструктуру для микросервисов

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

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

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

Юрий Чуб Генеральный директор ООО «Лидер Тех»

Чтобы исключить несанкционированный доступ к компонентам инфраструктуры, сервисы объединили в локальную сеть со скоростью 1 Гбит/с. Вся информация остается внутри инфраструктуры. Получить к ней доступ можно через корпоративные веб-серверы.

Обеспечить резервирование данных

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

Чтобы эффективно работать с большим объемом данных, компании были нужны серверы с производительными HDD- и SSD-дисками. Первые позволяют надежно хранить бэкапы и кэш. Вторые — повысить производительность при работе с базами данных и поисковой системой.

Настроили резервное копирование и сетевую безопасность

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

Инфраструктура изолирована на уровне пулов: каждый представляет собой отдельный  кластер с собственными вычислительными и сетевыми ресурсами. Такая архитектура защищена от аппаратных и программных сбоев. 

Обеспечить быструю масштабируемость инфраструктуры

В 2023 году у Hotelbook появились клиенты, которые работают в режиме B2B-B2C. Это означает, что компания обслуживает не только другие бизнесы, но и конечных пользователей. Следовательно, нагрузка на сервисы увеличилась. 

Нагрузка платформы может меняться в течение дня в зависимости от активности пользователей. Например, утром система использует 20% серверных мощностей, а при пиковых нагрузках — все 100%. Также компании было важно, чтобы скорость полного ответа не превышала 7 секунд. 

Арендовали выделенные серверы с некоторым запасом 

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

Компания сама настраивает виртуализацию на физических серверах, чтобы разделять вычислительные ресурсы между сервисами. В обычное время Hotelbook использует выделенные серверы с небольшим запасом ресурсов. А в пиковые нагрузки заказывает дополнительные серверы готовой конфигурации. Чтобы вовремя реагировать на изменения, компания отслеживает параметры с помощью Grafana и Prometheus.

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

Результаты

  • 7 секунд

    максимальное время выдачи всех результатов в поисковике

  • 20 млн

    запросов платформа обрабатывает ежедневно

Новый проект мы начали писать в 2018 году на микросервисной архитектуре с последующей возможностью масштабирования. Здесь нам помог Selectel, у них большой выбор серверов. На выделенных серверах мы развернули Kubernetes. Сейчас самостоятельно настраиваем, управляем и смотрим в сторону готового решения. 

Юрий Чуб Генеральный директор ООО «Лидер Тех»

Планы на будущее

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

Также Hotelbook планирует воспользоваться решением Managed Kubernetes, чтобы упростить процесс развертывания, масштабирования и обслуживания контейнерной инфраструктуры.