CI/CD: администрируемые провайдеры против самостоятельного хостинга

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

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

Читайте также: Сравнение инструментов непрерывной интеграции: Jenkins, GitLab CI, Buildbot, Drone, и Concourse

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

Управление инфраструктурой

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

Администрируемые сервисы CI/CD

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

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

Самостоятельный хостинг сервисов CI/CD

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

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

Безопасность и доверие

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

Администрируемые сервисы

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

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

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

Самостоятельный хостинг сервисов CI/CD

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

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

Интеграция

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

Администрируемые сервисы

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

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

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

 Самостоятельный хостинг сервисов CI/CD

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

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

Стоимость

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

Администрируемые сервисы

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

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

 Самостоятельный хостинг сервисов CI/CD

Самостоятельный хостинг – обычно более дешевый вариант на первый взгляд. Однако тут могут оказаться некоторые скрытые затраты, которые необходимо учесть. Для самостоятельного хостинга требуются вычислительные ресурсы для запуска, поэтому изначально наибольшая стоимость – это приобретение инфраструктуры, которая будет запускать ваши непрерывные системы. Это стало экономически выгодным вариантом, так как популярность облачных вычислительных платформ повысилась с точки зрения инфраструктуры как услуги. Самостоятельный хостинг CI/CD имеет тенденцию масштабироваться в затратах более постепенно, чем администрируемые сервисы (поскольку дополнительная инфраструктура может быть настроена с учетом стоимости по мере изменения требований).

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

Как найти золотую середину?

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

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

Заключение

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

Tags: