Перенос инфраструктуры в облако — это технически сложная задача, не прощающая ошибок, особенно при построении комплексных решений и реализации сложных и многофункциональных cloud-технологий и сервисов.
В этой статье мы поделимся опытом компании eCREDIT по построению отказоустойчивой микросервисной инфраструктуры с автоматизированным CI/CD на базе облачной инфраструктуры 1cloud.
eCREDIT — поставщик единой платформы кредитования и страхования для дилерских сетей по продаже автомобилей. Платформа упрощает получение кредитных продуктов и заявок по кредитованию автомобилей в считанные минуты более чем с 20 банками.
Перед технической командой eCREDIT, возглавляемой DevOps-инженером Виталием Федоровым, была поставлена задача о миграции инфраструктуры в облако и переходе на микросервисную инфраструктуру без остановки клиентских сервисов.
Виталий — DevOps-инженер с более чем 7-летним опытом проектирования и построения cloud-native архитектур на управляемых сервисах для хранения и масштабирования, внешний инженер компании eCREDIT.
Был составлен план миграции, состоящий из трех основных шагов:
- Анализ рынка облачных услуг и выбор надежного провайдера облачных услуг.
- Миграция в облако с переходом на микросервисы и новый формат продакшена, и CI/CD без остановки клиентских сервисов.
- Тестирование новой платформы, оперативный багфиксинг, развертывание новых сервисов.
Выбор надежного облачного провайдера — первый и самый важный шаг в реализации плана по миграции проекта в облако, так как от надежности инфраструктуры провайдера зависит стабильность будущего проекта.
Критерии выбора облачного провайдера
eCREDIT — это высоконагруженный проект, использующий стек разных технологий, требовательных к ресурсам. Поэтому облачный провайдер должен был отвечать следующим критериям:
- SLA не ниже 99.9%
- качественная и быстрая поддержка со стороны хостинга
- оптимальная ценовая политика для минимизации расходов
- сокращение затрат на обслуживание инфраструктуры
- возможность подключить несколько проектов в личном кабинете с возможностью раздельного контроля расходов
- прозрачность финансовых взаимоотношений между хостингом и компанией
- возможность подключать дополнительные сервисы, как модули к имеющейся инфраструктуре.
1cloud смог удовлетворить все критерии, а также обеспечить индивидуальный подход и полноценное внедрение на базе собственного оборудования, за счет понятной панели управления и гибких правил тарификации.
Выбор облачного провайдера для миграции — это двухсторонний процесс, тут не только клиент оценивает возможности провайдера, но и провайдер проводит экспертизу проекта, который будет размещаться на его мощностях. В случае с миграцией eCREDIT нужно было учесть специфику сразу двух проектов: существующей версии платформы клиента и будущей версии.
Как проект выглядел до перехода в облако
До миграции в облако все приложение было монолитом на стеке технологий PHP 5.6, Nginx, MySQL-5.5. CI/CD был ручным с bash-скриптингом. Это приводило к ошибкам в продакшене, так как было множество неавтоматизированных процессов деплоя, завязанных на человеческом факторе.
Чтобы клиенты не столкнулись с проблемами использования сервиса, деплой новых фич проводился в нерабочее время. Это было очень неудобно, так как после деплоя было ручное тестирование новых функций платформы, которое занимало много времени и, опять же, в силу человеческого фактора было далеко не совершенно.
Миграция в облако
Миграция на облачную инфраструктуру 1сloud производилась постепенно без остановок клиентских сервисов и прерывания работы платформы. Разработчикам компании eCREDIT и DevOps-инженеру Виталию Федорову необходимо было решить непростую задачу — разделить монолитный проект не только на логические блоки с точки зрения архитектуры приложения, но и произвести миграцию проекта на микросервисную архитектуру.
Команде Виталия нужно было реализовать и внедрить новый и прозрачный CI/CD с автотестированием, максимально снизить влияние человеческого фактора в виде ручного деплоя и тестирования, а также убрать bash-скриптинг и другие надежные решения из проекта.
Была составлена процессная карта миграции, которая учитывала следующие задачи и этапы переноса инфраструктуры проекта в облако:
- Тестирование и анализ внедрения новых сервисов в 1cloud.
- Bugfix Managed Kubernetes, с анализом логов и постановкой задач по оптимизации процессов внедрения новых сервисов.
- Планирование и построение архитектуры выделенных виртуальных серверов и облака в 1cloud с CI/CD.
- Построение взаимодействия интеграции GitLab со всей инфраструктурой в облаке 1cloud.
- Построение self managed Kubernetes кластера на мощностях 1cloud.
- Трансформация монолитной платформы приложения в микросервисную архитектуру с параллельной контейниризацией и автоматическим деплоем.
- Внедрение систем мониторинга состояния инфраструктуры облака и сбора статистики по используемым ресурсам, остатка средств в личном кабинете.
- Внедрение системы своевременного оповещения ответственных лиц о необходимости пополнения счета проекта.
- Создание системы контроля истечения сроков действия сертификатов и их автоматического перевыпуска на всю инфраструктуру eCREDIT.
- Построение отказоустойчивого решения веб-приложений.
- Проектирование взаимодействия приложений.
- Настройка DNS и интеграция с сервисами Kubernetes — Certmanager.
Объединение усилия технических команд eCREDIT и 1cloud позволило провести миграцию в соответствии с планом. Со стороны eCREDIT процесс координировал DevOps-инженер Виталий Федоров, а со стороны 1cloud — Head of customer success manager Дмитрий Матуа.
Мы в 1cloud понимаем, что для долгих и плодотворных партнерских отношений с клиентами, мы должны погружаться в каждый из клиентских проектов и постоянно держать руку на пульсе, чтобы всегда быть рядом в случае необходимости.
Как проект стал выглядеть после миграции в облако
Поначалу после переезда в облако и перехода на микросервисную инфраструктуру приложения было выявлено много проблемных мест, однако благодаря концепции микросервисной инфраструктуры все проблемы удалось устранить в кратчайшие сроки.
После миграции в облако скорость обработки данных обновленной платформой eCREDIT выросла в 4 раза, а запас производительности приложения возрос до 15-20 тыс. запросов в секунду. Сетевая пропускная способность также значительно выросла и появилась возможность быстрого масштабирования по ресурсам (CPU, RAM, SSD). Отказоустойчивость всей платформы приложения теперь обеспечивалась Kubernetes.
Итоговый стек технологий стал выглядеть так:
- API приложения: PHP-7.4, Redis, Rabbitmq, MySQL-8.
- API proxy: PHP-7.4, Redis, Varnish, Mercure, MySQL-8.
- Frontend: ReactJS.
- Подсистема отчетности: PHP-7.4, Rabbitmq, Logstash, Elasticsearch.
- Подсистема хранения данных: GridFS (symfony/MongoDB) с дальнейшим переходом на Swift/S3/CDN.
- Подсистема отправки и контроля писем и сообщений: Symfony, MySQL-8.
- Подсистема воркеров: Golang.
В итоге на базе облачной инфраструктуры 1cloud была построена отказоустойчивая микросервисная платформа с балансировкой трафика и возможностью горизонтального и вертикального масштабирования.
Для компании eCREDIT переход к микросервисной архитектуре и использованию сервисов 1cloud стал основой стабильного развития ИТ-инфраструктуры проекта. Поддержка со стороны команды сопровождения клиентов и слаженная работа наших ИТ-команд позволила совершить этот переход максимально качественно. Выявленные в рамках трансформации проекта слабые места были устранены. Сейчас мы с уверенностью можем сказать, что предоставляем своим клиентам максимально надежное и профессиональное решение.
История успешной миграции инфраструктуры компании eCREDIT в облако 1cloud — это результат огромной и технически сложной работы двух команд. Такая схема работы давно уже себя зарекомендовала с лучшей стороны, подтверждение тому кейсы других наших клиентов:
Кейс международной компании DBI
Делимся опытом компании DBI по переноса инфраструктуры в облако с минимальными затратами и без остановки клиентских сервисов.
Кейс компании Adlook.me
Рассказываем, как компания Adlook.me смогла сократить показатель time to market с облачными сервисами 1cloud.
Опыт компании «Комплекс-ойл»
Компания перевела инфраструктуру в облако 1cloud и получила стабильный сервис, сократила затраты и «рабочие руки».