История двух видов эффективности

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

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

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

Обслуживание

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

Инженер: «Послушайте, если мы этого не сделаем, он сломается, и наша служба выйдет из строя»

Владелец продукта: "Так что сделайте так, чтобы он не рухнул!"

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

Если в вашей организации есть зрелые операционные функции…

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

Но если вы этого не сделаете ...

Без необходимых навыков поддерживать работу может быть сложно. Очень трудно. Google называет эти вещи «тяжелым трудом» - задачами, которые можно автоматизировать, но все же требуют вмешательства человека. А без хорошего знания того, как поддерживать работу, автоматизация будет сложной задачей. Чем больше функций вы напишете, чем больше кода вы отправите, тем сложнее станет ваш мир. CI / CD не должен быть обузой, он должен быть инструментом, и вы можете подумать об использовании решения SaaS, чтобы начать работу.

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

Веселые сети

Небольшие компании все чаще используют облачную инфраструктуру. Нет необходимости строить центры обработки данных или нанимать специализированных администраторов Linux. Просто позвольте Amazon, Google или Microsoft сделать это за вас. Они занимаются этим годами и у них неплохо получается.

Но это еще не все розы ...

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

Как это связано с CI / CD?

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

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

Стоимость - время, деньги и усилия

Стоимость развертывания и запуска вашего собственного CI-сервера может быть немного коварной. Если вы выберете такой инструмент, как Jenkins, вы попадете в мир открытого исходного кода. Дженкинс свободен, правда? Ну вроде как.

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

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

Так чем же SaaS отличается?

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

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

Уязвимости безопасности

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

Я использовал снимок экрана Jenkins, потому что считаю, что это наиболее продуманное решение для выявления и удаления уязвимостей, которое я видел в современном решении CI / CD. Когда вы нажмете кнопку «Управление Jenkins», вы столкнетесь с ошибочными плагинами. Трудно пропустить.

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

Суммируя…

Все сводится к организационной зрелости и проблемам, которые вы хотите решить. Даже очень зрелые организации могут не беспокоиться о собственном внутреннем подходе к CI / CD. Такие инструменты, как Buddy и CodePipeline могут сделать эту работу за вас, а бизнес сможет справиться с трудностями. Это, безусловно, направление движения во многих других областях, при этом Serverless и SaaS становятся де-факто подходом для больших и малых организаций.