Как избежать ситуации с филиалами при работе с крупными организациями?
Мы работаем с рядом крупных финансовых организаций, чей подход заключается не в том, чтобы обновлять программное обеспечение, а в том, чтобы использовать только исправления высокой / критической безопасности и специальные функции. Эти организации будут принимать только исправления и пользовательские выпуски между основными обновлениями. Основные обновления могут быть разнесены на несколько лет и повлечь за собой большие затраты. Этот подход заставляет нас (отдел программного обеспечения) иметь ветвь нашего кода для каждого крупного клиента, что несет все затраты и неэффективность долгосрочного ветвления.
Мои вопросы к сообществу:
- Испытывали ли вы аналогичные подходы к принятию обновлений от ваших клиентов?
- Какие предложения у вас есть, чтобы помочь работать с этим подходом?
- Какие предложения у вас есть, чтобы помочь изменить подходы организаций к использованию обновлений программного обеспечения?
Ответы:
Как упоминал Майкл, предложите стандартное решение, основанное на версиях / номерах выпусков, с разумно долгим сроком службы для вашей отрасли (возможно, с чередованием с одной или несколькими промежуточными версиями с более коротким сроком службы, если это имеет смысл для ваших типичных клиентов).
Дайте своим клиентам возможность начать этот стандартный выпуск, возможно, с приличным сроком миграции.
Если они настаивают на полностью настраиваемой стратегии поддержки филиалов, просто взимайте с них соответствующую плату, чтобы должным образом покрыть все ваши дополнительные расходы, связанные с предложением такой полностью настраиваемой поддержки - это имеет смысл только для бизнеса. Некоторые клиенты будут мигрировать, чтобы сократить свои расходы (что поможет вам сократить количество пользовательских ветвей), а некоторые - нет.
Выставление счетов за переменную поддержку, постепенно увеличивающееся с возрастом версий выпуска, из которых происходят пользовательские ветви, также может стимулировать клиентов к более быстрому переходу на новые ветви, помогая быстрее закрывать старые пользовательские ветви. Это может помочь уменьшить количество пользовательских веток на клиента - если у вас есть клиенты, которые одновременно запускают несколько версий вашего программного обеспечения.
Убедитесь, что вы не попадете в ловушку полного слияния веток из / в любую из веток релиза (как стандартных, так и пользовательских), все изменения в них должны быть либо индивидуально разработаны, либо исправлены слитными исправлениями.
Поскольку каждая из этих ветвей будет постепенно отличаться друг от друга, количество исправлений, требующих индивидуальной настройки / индивидуальной разработки, будет расти в геометрической прогрессии (обычное слияние вишенек не удастся). Вы должны принять во внимание стоимость разработки для них.
Не имея (значительных) слияний ветвей на рисунке, вы можете (и я не могу не подчеркнуть его важность) построить полностью автоматизированные конвейеры CI / CD для этих ветвей, сопровождаемые хорошей системой отслеживания / управления исправлениями, обеспечивающей доставку исправлений просто рутина (или почти).
источник
Может быть, если вы будете поддерживать ветки по версиям, а не по клиентам, это поможет уменьшить их количество?
В противном случае единственный способ по-настоящему избавиться от него - это иметь возможность самостоятельно разместить программное обеспечение и переключиться на модель SaaS, где вы сможете поддерживать только одну его версию.
источник