2012-02-09 2 views
4

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

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

И у нас есть несколько команд Scrum, работающих в одних и тех же системах. По логике мы заканчиваем приемочное тестирование всего в огромном принятии и (полуавтоматическом) регрессионном тесте.

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

Но как нам удается внедрять изменения (код, сценарии БД), которые распределены по нескольким базам кода и найти стратегию для решения зависимостей между приложениями?

Какова стратегия для масштабируемого непрерывного развертывания? И как вы переходите к этому вопросу?

Как вы думаете?

ответ

2

(То есть довольно много вопросов внутри одной большой вопрос.)

Но я хотел бы сослаться на Continuous книги Delivery http://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912/

Edit: (Как комментировали вы уже читали эту книгу) Некоторые предложения которые вы уже можете сделать, но для других с аналогичной проблемой:

Но у меня нет твердого решения для стратегии автоматического развертывания взаимозависимости, которую вы действительно запрашиваете: |

+0

Я знаю ;-) Возможно, я слишком много спрашиваю. Я прочитал книгу и ее блестящую информацию о том, как работать с одним конвейером развертывания, но я не мог найти слишком многого о том, чтобы постоянно развертывать в нескольких взаимосвязанных взаимосвязанных конвейерах развертывания. Или это может быть невозможно, и мы должны придерживаться итеративного развертывания нашего текущего «единого развертывания». Я знаю его много, чтобы спросить, но я благодарен за то, что кто-то указал мне в правильном направлении. – Emwee

+0

У вас нет твердого решения, потому что, вероятно, нет, но вы указали мне в правильном направлении некоторые конкретные примеры стратегии. Благодаря! – Emwee

0

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

Конкретные инструменты, которые вы используете для непрерывной интеграции и тестирования, могут зависеть от вашего языка (ов) и платформ, но концепция одинаков. См. http://cruisecontrol.sourceforge.net/

Надеюсь, что это поможет.

+0

спасибо за ваш совет. Я вижу, что я не совсем понял наши потребности и извиняюсь за это. мы используем Jenkins для непрерывной интеграции_ аналогичным образом и для одной кодовой базы ее совершенной. но мы хотели бы сделать еще один шаг вперед в направлении непрерывного развертывания нескольких кодовых баз нескольких приложений, которые все в какой-то степени зависят. мы получили сортировку инструментов, но мы ищем стратегию, как превратить наши «все приложения сразу развертывания» в несколько независимых непрерывных развертываний. – Emwee

2

Нет единственной серебряной пули, которая решит вашу проблему, но Kwatee (http://www.kwatee.net) может пройти долгий путь в правильном направлении. Kwatee имеет дело с распределенными/совместными приложениями на нескольких серверах, если это необходимо, и может позаботиться о запуске предварительных сценариев DB ugrade и т. Д. С использованием действий перед развертыванием и после развертывания. Вы также можете настроить параметры для различных сред развертывания (dev, test, prod). У Kwatee есть веб-интерфейс, который упрощает настройку, но вы можете получить лучшее из всех миров, включив его (с помощью команд CLI Python или задачи Ant) в инструмент непрерывной интеграции.

0

Я мог бы неправильно интерпретировать, но я думаю, что вы говорите, что приемочные испытания для всей системы сложны, и вы хотите, чтобы каждая команда Scrum могла поднять свой собственный вес? Я думаю, что даже если каждая команда Scrum может выполнить некоторые тесты, которые вы не сможете освободить, не пройдя этап тестирования системы до выпуска. Другими словами, тестирование системы является обязательным, но частота может быть скорректирована, если каждый компонент может быть протестирован отдельно с замещенными зависимостями. Если изолированное тестирование и мелкомасштабное тестирование могут выполняться отдельной командой Scrum, то системные тесты могут быть выполнены каждые 2-3 спринта, где основное внимание тестировщика - тестирование системы, в то время как тестеры больше сосредотачиваются на исправлениях ошибок.

Смежные вопросы