Внедрение подхода 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 позволило автоматизировать и ускорить процессы развертывания инфраструктуры и программного обеспечения, а также улучшить масштабируемость, надежность и гибкость сервиса.
Источник: https://redlab.dev/success/vnedrenie-podhoda-iac-v-servis-bronirovanija-zhilja/