Блог Amazon Web Services
Выбираем подход к CI/CD: открытое программное обеспечение на AWS, история Iponweb
Iponweb является мировым лидером по созданию технологий и инфраструктуры для онлайн-рекламы в реальном времени, которыми пользуются многие крупнейшие мировые покупатели и продавцы цифровых медиа. Компания разрабатывает как приложения, используемые клиентами, так и внутренние инструменты, которые не должны зависеть от платформы, чтобы поддерживать работу с различными облачными сервисами.
В этой статье мы расскажем о том, какие ключевые соображения компания Iponweb использовала для непрерывной интеграции и непрерывного развёртывания (CI/CD), какой подход к CI/CD выбрала, а также рассмотрим некоторые моменты, которые вы можете принять во внимание для своих бизнес-требований. В следующей статье мы поговорим о них более подробно.
Как в Iponweb выбрали то, что им необходимо?
Первый и самый важный вопрос при использовании подхода Well-Architected для проектирования различных систем – это «Как вы определяете ваши приоритеты?» Концепция AWS Well-Architected предлагает две лучших практики для этого вопроса: «оценить потребности внешних заказчиков» (клиентов Iponweb) и «оценить потребности внутренних заказчиков» (команды Iponweb).
Именно от них отталкивались в Iponweb при выборе инструментов для работы. После оценки требований заказчиков следующий шаг был – посмотреть на потребности команды Iponweb. Среди основных приоритетов были продукты и их функциональность, затраты, а также возможность построения решений между несколькими облачными провайдерами.
Для Iponweb важна безопасность в работе, а также надёжность и производительность, чтобы поддерживать своих клиентов. Решения должны были удовлетворять фундаментальным требованиям в этих областях, чтобы быть принятыми во внимание при оценке.
Функциональность
В Iponweb оценили доступные варианты инструментов CI и пришли к выводу, что для их потребностей GitLab является явным победителем. Он предоставляет наибольшее количество необходимых функций по оптимальной цене и не зависит от платформы.
AWS предлагал полный набор необходимых инструментов, сервисов и лучших практик, чтобы помочь Iponweb с выполнением задачи по созданию самостоятельно установленной CI-среды с открытым исходным кодом на основе GitLab. После завершения процесса тщательной оценки AWS был выбран Iponweb для создания CI-среды.
Затраты
Компания Iponweb понимала, какие инвестиции им придётся сделать в свою команду, чтобы использовать и поддерживать все необходимые функции GitLab. Они оценили опыт своих внутренних команд и учли простоту интеграции со вспомогательными службами.
В Iponweb также начали использовать несколько сервисов AWS, которые выполняли за них рутинные задачи, что позволило избавиться от дополнительных операционных расходов и трудозатрат на поддержку своей собственной реализации различных возможностей и функциональности.
Кроме того, наличие спот-инстансов в Amazon Elastic Compute Cloud позволило ещё более тщательно управлять затратами в соответствии с требованиями Iponweb к ресурсам для CI и их паттернами использования.
Безопасность
Компания Iponweb использовала существующие средства контроля безопасности и интеграцию с AWS для поддержки внедрения новых сервисов. При этом AWS отвечал за безопасность самого облака, включая используемые «под капотом» сервисы AWS. В Iponweb смогли сфокусироваться на безопасных и эффективных настройках этих сервисов, а также конфигурации GitLab. Это помогло обеспечить безопасность их CI-среды с открытым исходным кодом.
При определении приоритетов в проектировании с использованием подхода Well-Architected необходимо «управлять выгодами и рисками», что подчёркивает необходимость принятия обоснованных решений при использовании открытого исходного кода или любых других инструментов. В Iponweb добились оптимального решения за счёт применения методов Well-Architected в оптимизации бизнес-процессов, оптимизации затрат и безопасности с помощью продуктов и сервисов AWS.
Обзор решения
Непрерывная интеграция состоит из трёх ключевых этапов, каждый из которых реализован на инфраструктуре AWS:
- Этап работы с кодом: в Iponweb создали централизованный Git-репозиторий на платформе GitLab, установленной на инстансах EC Она предоставляет пользовательский интерфейс и API для размещения и управления исходных кодом.
- Этапы сборки и тестирования: они использовали GitLab для управления задачами по сборке и тестированию с помощью раннеров GitLab (GitLab Runners: то есть, вычислительных мощностей, на которых запускаются задачи CI). Этот слой добавляется в GitLab с помощью контейнеров и разворачивается и управляется сервисом Amazon Elastic Kubernetes Service (Amazon EKS).
- Этап публикации: в Amazon Elastic Container Registry (Amazon ECR) хранятся образы контейнеров как самой инфраструктуры, так и конечного продукта.
Данная архитектура показана на следующей диаграмме:
В основе архитектуры CI-платформы Iponweb лежит GitLab Community Edition с открытым исходным кодом.
Внедрение решения
Задачи CI запускаются либо периодически, либо на основе событий, например merge request. Задачи описываются в коде на языке YAML и хранятся в системе контроля версий вместе с исходным кодом самого продукта. Версии раннеров сохраняются в Amazon ECR и запускаются в виде Docker-контейнеров на Amazon EKS.
Раннеры доступны в виде чартов Helm, что позволяет Iponweb упаковывать их и управлять развёртыванием в Kubernetes. Amazon EKS поддерживает Helm и многие другие расширения для Kubernetes.
Разработчики Iponweb быстро внедряют инновации и настраивают предлагаемые решения для потребностей клиентов в рамках коротких итераций. Чтобы покрыть неопределённые требования к репозиторию контейнеров, было решено использовать Amazon ECR. Как управляемый сервис, он избавляет от задач по масштабированию мощностей и самостоятельному управлению. Интеграция GitLab c Amazon EKS и Amazon ECR работает из пользовательского интерфейса и использует созданные скрипты: нет необходимости разрабатывать или устанавливать какие-либо дополнительные расширения.
Таким образом, в Iponweb смогли реализовать принцип проектирования Well-Architected «перестаньте постоянно оценивать свои потребности в вычислительных мощностях». Это позволило им сосредоточиться на более стратегических задачах разработки. Они тщательно проанализировали каждый компонент, оценивая его совокупную стоимость владения (Total Cost of Ownership, TCO), включая операционное управление. Благодаря этому, они внедрили лучшую практику из раздела оптимизации затрат: «Как вы оцениваете затраты на выбранные вами сервисы?»
Одним из ключевых вопросов в разделе оптимизации затрат является «Как вы используете различные модели цен для уменьшения затрат?» В Iponweb развернули раннеры на Amazon EKS для того, чтобы иметь возможность точного масштабирования по требованию вычислительных ресурсов для каждой задачи CI. Так как такие задачи требуют вычислительные мощности на короткий промежуток времени, компания Iponweb получила дополнительные преимущества за счёт использования спотовых инстансов в Amazon EKS для значительного снижения цены. Ценовая модель спотовых инстансов в их случае наилучшим образом подходила к требованиям CI и соответствующим паттернам использования.
Для защиты данных при хранении в Iponweb следовали лучшей практике из раздела безопасности: «Внедрите безопасное управление ключами». Они использовали AWS Key Management Service (AWS KMS) для управления ключами доступа для раннеров.
Для защиты исходного кода и собранных артефактов, а также для того, чтобы убедиться, что они не покинут среду CI ненадлежащим образом, в Iponweb следовали лучшим практикам вопроса из области защиты инфраструктуры в разделе безопасности: «Как вы защищаете ваши сети?» Они тщательным образом задали требования к защите сетевых ресурсов, ограничив доступ к ним с помощью контроля трафика на всех уровнях, а также использования групп безопасности для контроля доступа в и из их VPC.
Михаил Бенюхис, CTO в Iponweb, отметил:
«Компания Iponweb смогла получить преимущества открытого программного обеспечения и публичных облачных сервисов, создав платформу для непрерывной интеграции на Amazon Web Services. Инструменты с открытым исходным кодом позволили Iponweb не зависеть от платформы, для того чтобы обслуживать нашу разнообразную клиентскую базу, а управляемый сервис Amazon EKS на спотовых инстансах EC2 избавил от операционных трудностей по управлению своей инфраструктурой Kubernetes, обладая большей ценовой эффективностью.»
Заключение
Компания Iponweb смогла закрыть свои текущие потребности и в ближайшее время не планирует дальнейших улучшений. Они продолжат использовать бесплатную версию GitLab и довольны тем, чего достигли на данный момент. У них используются свои механизмы автоматизации для синхронизации с GitLab и интеграции с другими существующими инструментами. Конечно, им нравится функциональность, которая предоставляется в платной версии GitLab, но в настоящий момент нет бизнес-сценария, который бы обосновал переход на неё.
Они достигли своей цели, используя Amazon EKS и спотовые инстансы в GitLab CI/CD, который интегрируется с их существующими системами и удовлетворяет их требованиям.