whirlwind
TDD infected, paranoid
Есть масса утилит, которые обеспечивают сборку, развертывание, контроль целостности кода, структуры БД и прочее связанное с build-package-deploy по отдельности, но нет продукта, который выполнял бы все это с упором на долгоиграющие проекты, несколько копий проекта, несколько источников данных, которые могут быть в рассинхронизированном состоянии, команду разработчиков. В связи с чем возникают вопрос: такому продукту нет аналогов или нет необходимости в таком продукте?
Постольку-поскольку в нашей ситуации потребность в таком продукте довольно велика, хочу провести блиц опрос - насколько вы нуждаетесь в продукте, который позволит держать "код в узде". В кавычках, потому что вопрос непростой. Далее несколько уточнений которые, я надеюсь, будут поняты и дополнены заинтересованными разработчиками.
Основные (первичные) нефункциональные требования (в порядке приоритета-сложности реализации, накат считать upgrade/downgrade/install/uninstall фичи):
1. Обеспечить целостность данных (накат на существующие данные)
2. Обеспечить целостность структуры данных (накат на структуру данных)
3. Обеспечить целостность исходного кода (фигня - есть в любом пм)
Прочие (вторичные) нефункциональные требования (юзер-френдли кому д.б. этот продукт):
- командная разработка
- повторное использование кода
- объектно-ориентированый подход
- продолжительный цикл разработки и сопровождения
- пакетная архитектура
- активное использование автоматизированных тестов
- автоматическое обслуживание проекта (build-deploy-upgrade)
Фичи:
- Обработка событий при обновлении пакета, от которого зависит данный (например
ребилд данных)
- Патчи (проблема в боевых данных) в рамках отдельного пакета
- Выполнение модульных тестов для всей сборки (integration test)
- Автоматическое разрешение зависимостей
- Апгрейд/откат/инстал/деинсталл пакетов (попутно с зависимостями)
- Билды на основе манифестов по набору пакетов (например собираем шоп и биллинг из одного проекта)
- Возможность поднятия версии без наката промежуточных версий
- Подгружаемые контриб-данные (например мегапатч был, а в последующих версиях сплыл)
- Отслеживание пакетных зависимостей (smart-patch)
- Отсоединение данных подсистемы от зависимых данных (грубо сброс/установка ключей на таблицы)
- Для простых ситуаций возможность работы на конфиг-файлах (типо ant, phing)
- Транзакционность (или все или ничего)
- Рабочие копии пакетов с возможностью разработки TDD
- Контроль/работа тока в рамках конкретной major-версии (мажоры - обратно совместимытолько по манифестам)
Есть определенное колво идей и вариантов решений по этому поводу, хотелось бы рассширить список, либо убедиться что это не актуально.
Постольку-поскольку в нашей ситуации потребность в таком продукте довольно велика, хочу провести блиц опрос - насколько вы нуждаетесь в продукте, который позволит держать "код в узде". В кавычках, потому что вопрос непростой. Далее несколько уточнений которые, я надеюсь, будут поняты и дополнены заинтересованными разработчиками.
Основные (первичные) нефункциональные требования (в порядке приоритета-сложности реализации, накат считать upgrade/downgrade/install/uninstall фичи):
1. Обеспечить целостность данных (накат на существующие данные)
2. Обеспечить целостность структуры данных (накат на структуру данных)
3. Обеспечить целостность исходного кода (фигня - есть в любом пм)
Прочие (вторичные) нефункциональные требования (юзер-френдли кому д.б. этот продукт):
- командная разработка
- повторное использование кода
- объектно-ориентированый подход
- продолжительный цикл разработки и сопровождения
- пакетная архитектура
- активное использование автоматизированных тестов
- автоматическое обслуживание проекта (build-deploy-upgrade)
Фичи:
- Обработка событий при обновлении пакета, от которого зависит данный (например
ребилд данных)
- Патчи (проблема в боевых данных) в рамках отдельного пакета
- Выполнение модульных тестов для всей сборки (integration test)
- Автоматическое разрешение зависимостей
- Апгрейд/откат/инстал/деинсталл пакетов (попутно с зависимостями)
- Билды на основе манифестов по набору пакетов (например собираем шоп и биллинг из одного проекта)
- Возможность поднятия версии без наката промежуточных версий
- Подгружаемые контриб-данные (например мегапатч был, а в последующих версиях сплыл)
- Отслеживание пакетных зависимостей (smart-patch)
- Отсоединение данных подсистемы от зависимых данных (грубо сброс/установка ключей на таблицы)
- Для простых ситуаций возможность работы на конфиг-файлах (типо ant, phing)
- Транзакционность (или все или ничего)
- Рабочие копии пакетов с возможностью разработки TDD
- Контроль/работа тока в рамках конкретной major-версии (мажоры - обратно совместимытолько по манифестам)
Есть определенное колво идей и вариантов решений по этому поводу, хотелось бы рассширить список, либо убедиться что это не актуально.