Подтвердить что ты не робот

Какова рентабельность непрерывной интеграции?

В настоящее время наша организация не практикует непрерывную интеграцию.

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

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

4b9b3361

Ответ 1

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

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

Таким образом, по моему мнению, избегая одной из этих ситуаций, ROI такого усилия окупится ОЧЕНЬ быстро.

Ответ 2

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

Вот как я научился это объяснять: "Непрерывная интеграция исключает целые классы риска из вашего проекта".

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

Вот некоторые из рисков, которые я совершил в таких разговорах. Обратите внимание, что с разумными менеджерами программ я уже выиграл аргумент после первого момента:

  • Интеграционный риск: в системе непрерывной интеграции на основе интеграции проблемы интеграции, такие как "он забыл проверить файл до того, как отправился домой на долгий уик-энд", гораздо реже приведут к тому, что вся команда разработчиков потеряет целую пятницу ценность работы. Экономия до проекта, избежав одного такого инцидента = количество людей в команде (минус один из-за злодея, который забыл зарегистрироваться) * 8 часов за рабочий день * почасовая ставка для каждого инженера. Вокруг здесь это составляет тысячи долларов, которые не будут взиматься с проекта. ROI Win!
  • Риск регрессии: с помощью unit test/автоматического набора тестов, который запускается после каждой сборки, вы уменьшаете риск того, что изменение кода нарушит то, что используется для работы. Это гораздо более смутно и менее уверенно. Тем не менее, вы по крайней мере обеспечиваете структуру, в которой некоторые из самых скучных и трудоемких (то есть дорогостоящих) человеческих испытаний заменяются автоматизацией.
  • Технологический риск: непрерывная интеграция также дает вам возможность попробовать новые технологические компоненты. Например, мы недавно обнаружили, что обновление Java 1.6 18 сбой в алгоритме сбора мусора во время развертывания на удаленном сайте. Из-за непрерывной интеграции у нас была высокая уверенность, что возврат к обновлению 17 имеет высокую вероятность работы там, где обновление 18 не было. Такого рода вещи гораздо сложнее выразить с точки зрения денежного значения, но вы все равно можете использовать аргумент риска: определенный сбой проекта = плохой. Изящное понижение = намного лучше.

Ответ 3

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

Там ваш номер.

Ответ 4

Каждая успешная сборка является кандидатом на выпуск, поэтому вы можете быстрее и быстрее выполнять обновления и исправления ошибок.

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

Ответ 5

От Wikipedia:

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

Мы используем CI (две сборки в день), и это экономит нам много времени на то, чтобы рабочий код был доступен для тестирования и выпуска.

С точки зрения разработчика CI может быть пугающим, когда Automatic Build Result, отправленный по электронной почте всему миру (разработчики, руководители проектов и т.д.), говорит:   "Ошибка при загрузке DLL-сборки" XYZ.dll "не удалась". и вы мистер XYZ, и они знают, кто вы:)!

Ответ 6

Вот мой пример из моего собственного опыта...

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

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

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

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

Ответ 7

Наш самый большой выигрыш - это всегда ночная сборка для QA. В нашей старой системе каждый продукт, по крайней мере один раз в неделю, узнает в 2AM, что кто-то проверил плохой код. Это не вызвало необходимости ночной сборки QA для тестирования, и было принято решение отправить электронную почту по электронной почте. Они будут диагностировать проблему и обратиться к разработчику. Иногда потребовалось до полудня, прежде чем у QA было что-то, с чем можно было бы работать. Теперь, помимо того, что у вас есть хороший установщик каждую ночь, мы фактически устанавливаем его на виртуальную машину всех различных поддерживаемых конфигураций каждую ночь. Итак, теперь, когда QA приходит, они могут начать тестирование в течение нескольких минут. Теперь, когда вы думаете о старом пути, QA пришел, схватил установщика, запустил все vms, установил его, а затем начал тестировать. Мы сохраняем QA, вероятно, за 15 минут на каждую конфигурацию для тестирования, на человека с QA.

Ответ 8

Доступны свободные серверы CI и инструменты бесплатной сборки, такие как NAnt. Вы можете реализовать его в своем блоке dev, чтобы узнать о преимуществах.

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

Ответ 9

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

  • Будет ли это экономить? может не быть,
  • будет ли проект сбой во время UAT? определенно НЕТ,
  • будет ли проект закрыт между ними? - высокая вероятность того, что клиенты ожидаемый результат.
  • Вы получите реальные и реальные данные о проекте - YES

Таким образом, это помогает в сбое быстрее, что помогает снизить риски ранее.