Моя компания рассматривает возможность объединения всех своих приложений и сайтов первого уровня (то есть высокопроизводительного производства) в единую всеобъемлющую кодовую базу.
Теория заключается в том, что их разрешения, дизайн и общая функциональность могут быть гомогенизированы и централизованно управляться.
У меня нет конца для беспокойства по поводу этого подхода, поскольку структуры данных, лежащие в основе каждого приложения, сильно различаются, бизнес-правила сложны и уникальны для каждого приложения, а общие кодовые базы для существующих приложений крайне разнородны и ими очень пренебрегают.
РЕДАКТИРОВАТЬ :
Нынешняя среда состоит из трех сайтов ASP.Net 1.1, которые едва ли видели настоящую любовь с момента ее написания (главным образом из-за отсутствия опытных разработчиков в компании) и одного приложения MVC2, которое также было сайтом ASP.Net 1.1 до того, как обновлен в прошлом году. Мы пишем исключительно на C #.
Компания довольно маленькая, около 50 сотрудников; трое из которых являются настоящими разработчиками. Менеджмент (даже ИТ-менеджмент) не имеет никакого ИТ-опыта или опыта, кроме управления проектами ИТ-проектов (и, следовательно, некоторой передачи знаний по терминологии и влиянию на бизнес).
Приложения в основном онлайн-сервисы для поддержки продуктов, продаваемых компанией. Компания не продает программное обеспечение напрямую.
Итак, чтобы сформулировать всю эту ситуацию в достаточно конкретном и отвечающем вопросе: каковы некоторые убедительные причины за и против попытки объединить все ваши системы в одно комплексное решение с учетом текущих условий (т. Е. Старая кодовая база, сложные бизнес-системы и правила) )?
источник
Ответы:
Плохая идея
Эта реакция основана на следующих предположениях:
Что произойдет, если вы идете вперед
Скорее всего, будут предприняты первоначальные консолидированные усилия, чтобы собрать все вместе в рамках единого подхода к проектированию. Это покажет огромные усилия, необходимые для того, чтобы все работало одинаково, и может оказаться неработоспособным.
Если он давит, то потребуется какой-то централизованный репозиторий, содержащий данные конфигурации (например, доступ к безопасности, уровни ведения журнала и т. Д.), После чего кто-то укажет очевидное и скажет
и через мгновение кто-то еще будет трубить с
пока, наконец,
В этот момент все вздыхают с облегчением, что огромный монолит не был построен.
источник
Мы работали над этим в моей компании. Я думаю, что это возможно, и есть очевидные преимущества (вы упомянули их), однако, это, вероятно, будет 5-7-летний проект в абсолютном минимуме, и в основном все будет переписано. Если вы можете подписать что-то подобное, я бы сказал, пойти на это. Если нет, то приготовьтесь к кошмарному маршу смерти.
источник
Google это делает, так что, конечно, это возможно .
Эта ссылка, кстати, представляет собой интересную презентацию от Googler о том, как они управляют своей кодовой базой, непрерывной интеграцией, тестированием и т. Д.
Однако без такой же твердой приверженности инструментам, как это сделал Google, вы, скорее всего, столкнетесь с целым миром.
Ключевой вопрос здесь почему ? Почему высшее руководство хочет сделать это? Какие сбережения, рычаги или другое преимущество они надеются получить?
Если вы можете решить достаточно много таких проблем, чтобы достичь их целей, вы вполне можете избежать единой кодовой базы, которая вас касается, и в то же время дать им тот же эффективный результат.
источник
Мы проходили аналогичный процесс. У нас был продукт, который был некоторое время назад. В прошлом году мы представили еще один продукт, который на 95% такой же, как и первый, с 5% иногда незначительных, но существенных различий, причем эти различия должны разрабатываться и поддерживаться отдельной командой.
Когда мы впервые начали работу над новым продуктом, старая команда продолжала вносить изменения, которые отрицательно повлияли на нас в этих 5%, потому что они не понимали новый продукт. Таким образом, мы полностью раздвоили эти 5% кода, что позволило нам завершить первый выпуск вовремя.
Затем начались дополнительные работы по техническому обслуживанию, и мы обнаружили, что мы часто вносим почти идентичные изменения в почти идентичный код. Старая команда также теперь намного лучше понимает новый продукт, поэтому мы постепенно реинтегрируем то, что раздвоили, и находим более эффективные архитектурные способы выражения различий.
Поэтому, когда вы говорите, что структуры данных различны, а общие кодовые базы разнородны, я хотел бы задать вопрос: должны ли они быть такими или просто развиваться из-за целесообразности момента. Очевидно, что вы должны учитывать различные бизнес-правила и требования, но ключ состоит в том, чтобы выделить эти различия в как можно меньший модуль. Если вы часто обнаруживаете, что реализуете одну и ту же функцию для нескольких клиентов несколько разными способами для разных баз кода, тогда консолидация действительно может помочь, и я подозреваю, что это так, или руководство, вероятно, не предложит этого.
источник
Скорее всего, вы не сможете консолидировать многочисленные приложения в одну и ту же базу кода, потому что это потребует довольно больших усилий, а для старых запущенных программ это может оказаться гораздо более трудоемким, чем первоначально ожидалось.
Тем не менее, нет ничего плохого в том, что все ваши приложения находятся в одном репозитории кода , где у каждого приложения есть отдельная область. Это позволяет вам, например, иметь любую онлайн-документацию, сгенерированную для всей базы кода в едином, согласованном представлении, что, как правило, хорошо, так как вы хотите получить как можно больше наглядности.
Те, кто решают это, должны решительно подумать, ПОЧЕМУ они хотят это сделать, и подумать, сколько работы они хотят потратить, чтобы попасть туда.
источник
Если есть одна вещь, которая делает развитие предприятия настолько неэффективным и дорогостоящим, это иллюзия, что можно создать единую систему, которая сделает все. Если у вас был один владелец продукта, который понимает все детали системы и может принимать все решения, не требуя недели собраний, это может сработать, но я никогда не видел, чтобы это произошло.
В целом, вам будет лучше, если вы будете относиться к нему больше как к разработке для Интернета - просто создайте свое собственное приложение, признав, что на практике вы не имеете никакого контроля над чем-либо, находящимся вне собственного кода. Вы можете получить практически всю согласованность, которую вы, вероятно, захотите, с OAuth и простым API для пользовательских настроек и небольшим количеством общего CSS.
Это очень похоже на первоначальное намерение SOA, но если вы назовете его так, вы просто получите другой тип большой, едва работающей системы, которая пытается сделать все.
источник
Сначала я думаю, что это будет полная PITA для релизов.
Разделение на управляемые куски функциональности намного более разумно, если только избежать всех уровней управления и одобрения.
ИМХО было бы гораздо проще разбить общий материал на компоненты / сервисы и стандартизировать его.
источник
Вы можете подходить к этому по-разному, используя технологию интеграции, такую как Deliverance, для одинакового оформления всех ваших веб-приложений. По сути, каждое приложение по-прежнему отдельно; Deliverance использует правила XSLT, чтобы вставить их вывод в созданный вами статический HTML-шаблон. Это позволяет применять относительно простую статическую тему HTML / CSS ко всему набору приложений с минимальными трудностями.
источник