Смотря как" :)
Мы используем нашу систему CI для:
- сборка и модульный тест
- развернуть в одном устройстве, запустить тесты интеграции и анализ кода
- развернуть в лабораторной среде
- провести приемочные испытания в системе prod-like
- Отбросьте сборки, которые переходят к отбрасыванию кода для развертывания продукта
Это новый проект, включающий около десятка служб и баз данных, развернутых на более чем 20 серверах, которые также зависят от полдюжины других «внешних» служб.
Использование инструмента непрерывной интеграции для развертывания продукта в производственной среде в качестве реальной цели? снова ... "это зависит от обстоятельств"
Зачем тебе это нужно?
- если у вас есть процесс, вы можете откатывать изменения (и откатываться) быстрее и чаще
- меньше шансов на человеческую ошибку
- вы можете протестировать ту же стратегию развертывания в тестовой среде, прежде чем переходить к производству, и выявить проблемы раньше
Прежде чем ответить на этот вопрос, необходимо решить некоторые технические вопросы:
- каковы требования к времени безотказной работы вашей системы? Допускается ли у вас простой или он должен работать круглосуточно и без выходных?
- есть ли у вас процессы контроля изменений, требующие вмешательства / одобрения человека?
- Достаточно ли надежно ваше развертывание, чтобы любой компонент мог вернуться в заведомо исправное состояние в случае сбоя развертывания?
- разработана ли ваша система для работы с разными версиями служб или клиентов в случае сбоя развертывания одного или нескольких компонентов (и у вас есть вышеупомянутый откат до последнего заведомо исправного)?
- Имеет ли процесс разум для обработки частичного развертывания, когда компонент не может обрабатывать смешанные версии своих зависимостей / клиентов?
- как вы проводите развертывание / обновление базы данных?
- есть ли у вас мониторинг, чтобы знать, когда что-то пойдет не так?
Вот несколько недавних ссылок по теме автоматизация и создание необходимых вам инструментов.
Когда дело доходит до того, что чем сложнее ваша система, тем сложнее все автоматизировать, но это не значит, что это не достойная цель, просто требуется гораздо больше усилий и силы воли, чтобы ее выполнить - все от знания трудности, с которыми вы столкнетесь, проблемы, которые вы должны учитывать (отказ будет случиться), политические проблемы построения инфраструктуры (по сравнению с большим количеством функций продукта).
Вот большой секрет ... технические проблемы сложны, но не невозможны ... политические проблемы могут оказаться непреодолимыми. Все, что связано с этим, стоит денег, будь то время разработки или покупка сторонних решений. Итак, действительно ли вы можете создать решение за 1 000, 10 000, 100 000 или 1 миллион долларов?
Какое бы решение вы ни выбрали, сначала убедитесь, что автоматизация является надежной, а затем завершенной ... т.е. убедитесь, что у вас есть максимально надежное решение для развертывания в тестовой среде, а не хрупкое решение, развертываемое в производственной среде.
person
craigb
schedule
19.09.2008