Общие сведения о CI-пайплайне в облаке

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

CI-пайплайн в облаке позволяет использовать выгоды облачной инфраструктуры в процессе сборки, тестирования и развертывания ПО.

Неважно, есть ли у вас локальный CI/CD-пайплайн или пока нет никакого — здесь вы узнаете о том, чем вам может быть полезен облачный CI/CD-пайплайн.

Как устроен CI-пайплайн в облаке

Задача непрерывной интеграции, доставки и развертывания — ускорить процесс выпуска ПО и сделать его более стабильным. При каждом внесении изменений в кодовую базу запускается CI/CD-пайплайн и выполняется ряд автоматических шагов, чтобы удостовериться, что ПО работает как ожидалось. Это сокращает время между разработкой и релизом, уменьшает число ошибок в производственной среде и дает ряд других преимуществ.

Переход от ручных процессов к автоматизированному CI/CD-пайплайну экономит время и силы, но требования к инфраструктуре при этом заметно возрастают. Если раньше развертывание новых версий продукта в тестовых средах происходило раз в несколько недель или даже месяцев, то после внедрения CI/CD тестирование нового кода может выполняться несколько раз в день.

Чем больше людей работают с одной кодовой базой и вносят изменения, тем чаще будет запускаться процесс автоматической сборки, тестирования и развертывания. Если CI/CD-пайплайн использует ваши собственные серверы, сдерживающим фактором может стать количество доступных машин. В периоды пиковой нагрузки — например, когда команды борются с критической ошибкой или наводят последний лоск перед релизом, — может оказаться, что локальная CI/CD-инфраструктура стала узким местом.

В таких случаях выходом может стать перенос CI/CD в облако. При использовании облачного CI-пайплайна у вас есть выбор: либо настроить свой пайплайн в облачной инфраструктуре, либо воспользоваться управляемым облачным CI/CD-сервисом.

В обоих случаях вы получаете все преимущества масштабируемых облачных вычислений, так что вам больше не придется искать компромисс между необходимым объемом ресурсов в пиковые периоды и стоимостью простоя серверов: билд-ферму можно будет просто масштабировать по мере необходимости.

Преимущества облачного CI-пайплайна

Когда CI/CD-пайплайн размещен в облаке, все необходимые вам ресурсы доступны вам по требованию. В результате повышается надежность процессов, сокращаются расходы, упрощается облачная разработка.

Упрощение рабочих процессов благодаря технологии «инфраструктура как код» (IaC)

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

Для инфраструктуры, как и для разрабатываемого приложения, можно иметь CI/CD-пайплайн, который будет подтверждать, что инфраструктура работает ожидаемым образом, и даст возможность при необходимости легко отменить изменения.

Эффективное использование контейнеризации

Если вы разрабатываете облачное приложение, то, скорее всего, используете контейнеры. Это значит, что вы упаковываете само приложение, зависимости среды и детали конфигурации в один артефакт, который можно развернуть на любом устройстве, предоставляющем среду запуска контейнеров.

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

Используя контейнеры в CI/CD-пайплайне, вы упрощаете развертывание новой сборки на разных этапах процесса. Артефактом сборки выступает образ контейнера. Готовясь к релизу в продакшн, вы можете развернуть его на каждом тестовом окружении, соблюдая полную консистентность.

При размещении CI/CD-пайплайна в облаке контейнеры позволяют эффективно использовать вычислительные ресурсы и применять инструменты автоматизации. Когда спрос растет, вы можете увеличивать мощность, а когда понижается — выключать контейнеры, освобождать всю задействованную инфраструктуру и таким образом сокращать затраты.

Никаких хлопот с обслуживанием серверов

Когда вы переносите CI/CD-пайплайн в облако, билд-ферма размещается на виртуальных машинах. Если вам нужно больше мощностей, достаточно их просто настроить — не нужно заботиться ни о поставке, ни об установке и администрировании, ни об оборудовании.

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

Поддержка постоянной готовности к релизу

CI/CD-пайплайн — важнейший актив для любых команд разработчиков, который помогает доставлять пользователям обновления ПО. Разместив его в облаке, вы с меньшей вероятностью окажетесь в ситуации, когда механизм релиза оказался недоступен из-за незапланированного отключения. Возможно, такие ситуации встречаются не слишком часто, но когда вы обнаруживаете критическую ошибку, и вам нужно развернуть срочное обновление, подобный уровень надежности не кажется чрезмерным.

Кроме того, с помощью CI/CD-пайплайна проще реализовать стратегию развертывания «синий-зеленый», поскольку облачные ресурсы легко масштабируются. Эта стратегия позволяет легко перекинуть трафик на предыдущую версию ПО, если в производственной среде обнаружена ошибка. Таким образом, вы по-прежнему предоставляете пользователям требуемые услуги, пока работаете над устранением проблемы.

Что стоит учесть

Размещение CI/CD-пайплайна в облаке дает ряд важных преимуществ, касающихся стоимости инфраструктуры, масштабируемости и надежности. Однако стоит отметить и несколько возможных сложностей.

Системная архитектура

Если в архитектуре вашего продукта используются контейнеры, облачный CI/CD-пайплайн позволяет использовать это для более простого развертывания в тестовых средах. Но если вы работаете с монолитной архитектурой, упаковать приложение в контейнер может быть довольно сложно.

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

Знания и навыки

Если у вас нет опыта работы с инфраструктурой как кодом (IaC), вашей команде понадобится время для освоения навыков, либо вам нужно рассмотреть способ внедрения этих знаний.

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

Стоимость

Коль скоро речь об облаке, время — деньги. Никому не хочется платить за простой вычислительных ресурсов. Чтобы размещение в облаке было выгодным, важно эффективно его использовать. А именно, пользоваться инструментами, которые отслеживают нагрузку и выключают неиспользуемые серверы (по прошествии тайм-аута), либо же самостоятельно реализовывать эту логику. Последнее требует навыков, которых в вашей организации может не быть, поэтому стоит исследовать и взвесить все возможности.

Безопасность

Размещение данных и сервисов в облаке всегда сопряжено с вопросами безопасности. Для некоторых компаний сама концепция размещения критического ПО на чужом оборудовании является неприемлемой. Тем не менее многие организации сегодня предпочитают использовать публичное облако для размещения как своих сервисов, так и пайплайнов развертывания — начиная с репозитория системы контроля версий, заканчивая CI-сервером и тестовыми окружениями.

Чтобы снижать риски, важно понимать возможные векторы атак, внедрять меры по защите CI/CD-пайплайна и использовать контроль доступа.

Гибридные подходы

IaC, контейнеры и их оркестровка изначально основаны на облачных технологиях, однако их можно применить не только в облачной инфраструктуре, но и в CI/CD-пайплайнах, использующих частное облако или сочетание локальной и облачной инфраструктуры.

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

У такого гибридного подхода есть ряд преимуществ:

  • Если ваша организация планирует в будущем перейти на облачную инфраструктуру, облачные инструменты лучше внедрить заранее — так вы наберете больше опыта и легче осуществите переход.
  • С помощью IaC, можно гораздо быстрей обновить среду между запусками тестов — достаточно запустить скрипт.
  • Создание окружения при помощи скрипта также обеспечивает консистентность. Вы сможете быть уверенными, что ваше препродакшн-окружение совпадает с настройками в продакшне, и его можно спокойно использовать для тестирования безопасности, производительности и интерфейса или же в качестве песочницы для использования командой продаж.
  • Если вы будете хранить конфигурационные файлы инфраструктуры в системе контроля версий, у команды появится контрольный журнал, позволяющий отслеживать, какие изменения были внесены и когда, — это может помочь вам при отладке ошибок окружения.

Чем поможет TeamCity

TeamCity позволяет точно выбрать этапы CI/CD, которые вы хотите запускать в облаке.

TeamCity On-Premises дает возможность разместить CI-сервер и билд-агенты как локально, так и в облаке. TeamCity предлагает нативную интеграцию с ведущими поставщиками облачных сервисов, так что вы получите всю необходимую функциональность: хоть для переноса в облако всех задач по сборке, тестированию и развертыванию, хоть для автоматического расширения билд-фермы в период пиковой нагрузки.

TeamCity Cloud — это управляемый CI-сервер. Вы можете заняться упрощением процесса сборки, тестирования и развертывания, не заботясь об обслуживании инфраструктуры. При этом вы можете использовать одновременно билд-агенты, размещенные в облаке JetBrains, и свои собственные билд машины, находящиеся в облаке или в вашей локальной инфраструктуре, чтобы собрать билд-ферму, отвечающую именно вашим требованиям.

TeamCity Pipelines повышает эффективность CI/CD благодаря гибкому подходу с использованием облака. Используя удобный вам способ — визуальный редактор с возможностью перетаскивания элементов или YAML, — легко создавать пайплайны, управлять ими и оптимизировать их. Благодаря поддержке облачных и локальных агентов TeamCity Pipelines позволяет вам масштабировать ресурсы по мере необходимости, максимально автоматизировав процессы сборки, тестирования и развертывания.