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

Вступление

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

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

Chur, выбор правильной системы 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. Кроме того, с помощью плагинов, предоставляемых сообществом, может быть сложно получить поддержку, помимо подачи отчета о системе отслеживания проблем или получения неофициальной одноранговой помощи через форумы сообщества или каналы IRC. В случае критических интеграций вашей команде, возможно, придется взять на себя ответственность за внутреннюю поддержку и обслуживание компонентов.

расходы

Наконец, одно из самых больших различий между управляемыми провайдерами 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, так и автономные решения могут помочь улучшить ваши методы разработки и выпуска, чтобы предоставлять более надежные продукты с большей уверенностью. Мы рассмотрели наиболее важные различия между этими двумя основными вариантами, некоторые из факторов, которые могут повлиять на ваше решение, и потенциальные проблемы, которые вам придется преодолеть при каждом выборе. Мы также кратко рассказали о предложениях, которые пытаются преодолеть грань между самостоятельным размещением и управляемыми решениями. В конце концов, уникальные требования, бюджет и пропускная способность вашей организации помогут вам решить, какой вариант предлагает правильный компромисс.

Related