Как работает CI в облаке

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

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

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

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

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

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

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

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

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

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

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

Инфраструктура как код для упрощения рабочих процессов

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

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

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

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

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

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

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

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

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

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

Постоянная готовность к релизу

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

Кроме того, с помощью облачного пайплайна проще реализовать стратегию blue/green-развертываний, поскольку облачные ресурсы легко масштабируются. При этом подходе можно быстро перенаправить трафик на предыдущую версию, если в продакшене возникла проблема. Это позволяет поддерживать работу сервиса, пока вы устраняете ошибку.

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

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

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

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

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

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

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

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

Стоимость

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

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

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

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

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

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

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

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

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

Чем поможет TeamCity

С TeamCity вы можете выбирать, какую часть CI/CD-процесса запускать в облаке.

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

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

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