Внедрение подхода IaC в сервис бронирования жилья

Компания RedLab приняла участие в реализации проекта по автоматизации развертывания ИТ-инфраструктуры. В этой статье делимся кейсом.

Внедрение подхода IaC в сервис бронирования жилья

О клиенте

Ведущая компания в сфере туризма, которая развивает собственный ИТ-продукт для бронирования жилья, занимается покупкой и оформлением авиабилетов, а также предоставляет консультации по въезду в зарубежные страны. Среди клиентов: физические и юридические лица, для вторых бизнес предлагает сниженные B2B-тарифы. Услугами организации воспользовались уже более 90 млн пользователей.

О проекте

Сервис онлайн-бронирования отелей, хостелов, апартаментов и гостевых домов. В базе — более 4 млн объектов размещения в России и странах ближнего зарубежья. Благодаря «умному» поиску пользователи могут сравнивать жилье и выбирать наиболее подходящий вариант. Т.к. ИТ-инфраструктура продукта росла, компания нуждалась в автоматизации процесса доставки кода и обеспечении непрерывной работы сервиса.

Описание задачи

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

Клиент сформулировал следующие задачи:

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

Реализация

Для создания новой ИТ-системы команда RedLab приняла решение использовать подход «инфраструктура как код» (Infrastructure as Code, IaC). Технология позволяет последовательно развертывать одну и ту же структуру в различных средах, управлять как одной, так и 1000 машинами, и сокращать жизненный цикл разработки.

DevOps-инженеры RedLab реализовали ряд задач:

  • Написали кастомные дашборды для разработчиков и бизнеса, которые предоставляют возможность отслеживать ключевые метрики проекта в реальном времени и принимать решения на основе данных.
  • Организовали непрерывную доставку в GitLab CI. В итоге сборка и тестирование кода происходят в автоматическом режиме, без необходимости вручную настраивать каждый этап.
  • Создали конфигурационный файл Dockerfile для каждого микросервиса. Технология определяет окружение и зависимости для контейнеров, что обеспечивает гибкость разработки.
  • Подготовили Helm чарты, пакетные менеджеры, которые помогают быстро и удобно управлять жизненным циклом программы.
  • Реализовали observability на GAP-стеке (Grafana, Prometheus, Alertmanager) и Istio/Jaeger. Это позволило более точно понимать текущее состояние системы и быстрее реагировать на инциденты.
  • Написали инфраструктурный код с помощью систем Ansible и Terraform. Удалось сократить время, затрачиваемое на добавление новых машин в кластеры, и улучшить воспроизводимость всех элементов.
  • Организовали переезд с монолитной архитектуры на микросервисную в Kubernetes (K8s). Теперь разработка, тестирование и развертывание отдельных компонентов происходит независимо друг от друга, что облегчает обновление и поддержку программы.

Результат

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

22
Начать дискуссию