Какие соображения следует учитывать за и против «супер» сайтов?

9

Моя компания рассматривает возможность объединения всех своих приложений и сайтов первого уровня (то есть высокопроизводительного производства) в единую всеобъемлющую кодовую базу.

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

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

РЕДАКТИРОВАТЬ :

Нынешняя среда состоит из трех сайтов ASP.Net 1.1, которые едва ли видели настоящую любовь с момента ее написания (главным образом из-за отсутствия опытных разработчиков в компании) и одного приложения MVC2, которое также было сайтом ASP.Net 1.1 до того, как обновлен в прошлом году. Мы пишем исключительно на C #.

Компания довольно маленькая, около 50 сотрудников; трое из которых являются настоящими разработчиками. Менеджмент (даже ИТ-менеджмент) не имеет никакого ИТ-опыта или опыта, кроме управления проектами ИТ-проектов (и, следовательно, некоторой передачи знаний по терминологии и влиянию на бизнес).

Приложения в основном онлайн-сервисы для поддержки продуктов, продаваемых компанией. Компания не продает программное обеспечение напрямую.

Итак, чтобы сформулировать всю эту ситуацию в достаточно конкретном и отвечающем вопросе: каковы некоторые убедительные причины за и против попытки объединить все ваши системы в одно комплексное решение с учетом текущих условий (т. Е. Старая кодовая база, сложные бизнес-системы и правила) )?

Phil.Wheeler
источник
4
Вопрос, представленный здесь, является чрезвычайно открытым и чрезмерно широким. Если вы можете сузить это, то это могло бы сделать лучший вопрос.
ChrisF
@ChrisF - попробую. Не могли бы вы предложить, какие особенности вы бы хотели видеть?
Phil.Wheeler
@Phil Ты ОП, что ты ищешь?
Джордж Стокер
@Phil Кстати, вы также хотите дать некоторые подробности о языке, потому что есть много инструментов, которые выводят управление приложениями из внешнего вида (например, безопасность, ведение журнала, конфигурация, соединение с БД и т. Д.)
Гэри Роу,
1
таким образом, они могут пренебречь одним большим шариком грязи вместо 3 - 4 меньших шариков грязи, намного более эффективным в этом смысле!

Ответы:

10

Плохая идея

Эта реакция основана на следующих предположениях:

  1. Есть много довольно разнородных приложений, которые гомогенизируются
  2. Есть много команд, работающих над различными приложениями
  3. Нет авторитетного и авторитетного архитектора программного обеспечения, активно управляющего приложениями

Что произойдет, если вы идете вперед

Скорее всего, будут предприняты первоначальные консолидированные усилия, чтобы собрать все вместе в рамках единого подхода к проектированию. Это покажет огромные усилия, необходимые для того, чтобы все работало одинаково, и может оказаться неработоспособным.

Если он давит, то потребуется какой-то централизованный репозиторий, содержащий данные конфигурации (например, доступ к безопасности, уровни ведения журнала и т. Д.), После чего кто-то укажет очевидное и скажет

«Эй, почему бы нам просто не модифицировать этот внешний подход к настройке старых приложений, это будет намного быстрее?»

и через мгновение кто-то еще будет трубить с

«И, так как мы все равно проводим рефакторинг, почему бы нам просто не применить стандарт проектирования для каждого из доменов приложения - веб-обработка выглядит так, обработка бизнес-правил - как это и доступ к базе данных - вот так».

пока, наконец,

«О, и здесь есть много общего кода, почему бы не собрать несколько легко используемых библиотек. Нам, вероятно, понадобится какая-то интеграционная сборка, запускаемая через регулярные промежутки времени, скажем, каждую ночь».

В этот момент все вздыхают с облегчением, что огромный монолит не был построен.

Гэри Роу
источник
(+1) только для (1), остальная часть описания также действительна ...
umlcat
3

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

Морган Херлокер
источник
3

Google это делает, так что, конечно, это возможно .

Эта ссылка, кстати, представляет собой интересную презентацию от Googler о том, как они управляют своей кодовой базой, непрерывной интеграцией, тестированием и т. Д.

Однако без такой же твердой приверженности инструментам, как это сделал Google, вы, скорее всего, столкнетесь с целым миром.

Ключевой вопрос здесь почему ? Почему высшее руководство хочет сделать это? Какие сбережения, рычаги или другое преимущество они надеются получить?

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

SDG
источник
Спасибо за эту ссылку. Видео удивило меня, будучи очень интересным. (Хотя этот сайт должен сделать это более очевидным, видео синхронизируется со слайд-шоу ниже. Я почти разочаровался из-за того, что не видел слайд-шоу.)
Эми Б
InfoQ получает довольно хорошие презентации там; они топ-сайт в моем списке RSS.
SDG
2

Мы проходили аналогичный процесс. У нас был продукт, который был некоторое время назад. В прошлом году мы представили еще один продукт, который на 95% такой же, как и первый, с 5% иногда незначительных, но существенных различий, причем эти различия должны разрабатываться и поддерживаться отдельной командой.

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

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

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

Карл Билефельдт
источник
Некоторые хорошие моменты. Код - это то, как он обусловлен в основном эволюцией, а не обязательно необходимостью или лучшей практикой. Однако понимание руководством фактической технической среды практически нулевое: они, честно говоря, не знают, как работает программирование и программное обеспечение. Они не видят различий в коде, поэтому их решения не основаны на том, что архитектурно лучше для компании.
Phil.Wheeler
2

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

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

Те, кто решают это, должны решительно подумать, ПОЧЕМУ они хотят это сделать, и подумать, сколько работы они хотят потратить, чтобы попасть туда.


источник
2

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

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

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

Том Кларксон
источник
1

Сначала я думаю, что это будет полная PITA для релизов.

Разделение на управляемые куски функциональности намного более разумно, если только избежать всех уровней управления и одобрения.

ИМХО было бы гораздо проще разбить общий материал на компоненты / сервисы и стандартизировать его.

Ozz
источник
0

Вы можете подходить к этому по-разному, используя технологию интеграции, такую ​​как Deliverance, для одинакового оформления всех ваших веб-приложений. По сути, каждое приложение по-прежнему отдельно; Deliverance использует правила XSLT, чтобы вставить их вывод в созданный вами статический HTML-шаблон. Это позволяет применять относительно простую статическую тему HTML / CSS ко всему набору приложений с минимальными трудностями.

asthasr
источник