У меня проблема с принципом DRY (Do not Repeat Yourself) и минимизация зависимостей, которые вращаются вокруг двигателей правил Rete.Как сбалансировать принцип DRY с минимальными зависимостями?
Правила двигателей в крупных ИТ-организациях, как правило, являются Enterprise (обратите внимание на капитал «E» - это серьезный бизнес). Все правила должны быть выражены один раз, красиво и сухо, и централизованы в дорогостоящем движке правил. Группа поддерживает механизм правил и хранит наборы правил.
Когда эта ИТ-организация является частью американской страховой компании, обычно существует множество правил. Существуют правила, которые применяются ко всем государствам и продуктам, но каждое государство имеет тенденцию к разработке своих собственных законов для разных продуктов, поэтому правила должны отражать эти причуды. Категорий много: актуарный, андеррайтинг, даже для заказа кредитных и автомобильных отчетов от сторонних бюро.
Проблемы, что у меня есть с точки зрения дизайна является то, что централизованные правила и обработки, конечно, приятно и DRY, но есть затраты:
- Дополнительная сеть хмеля для доступа к центрально расположенному правилу обслуживания и возврата результатов;
- Дополнительная сложность, если механизм правил представлен как веб-служба SOAP - потребители должны упаковывать SOAP-запросы и OXM ответ обратно в свой собственный домен;
- Дополнительные интерфейсы между группой предприятий, которая поддерживает механизм правил, бизнес, который устанавливает и поддерживает правила, и разработчики, которые их потребляют;
- Дополнительная сложность - иногда может быть достаточно решение с управлением данными.
- Дополнительная зависимости - компоненты, которые не имеют контроля над своими собственными правилами придется беспокоиться о внешних зависимости на двигателе правил для тестирования, развертывания релизов и т.д.
Этих проблем возникают с большим количеством другихов Корпоративные технологии (например, B2B-шлюзы, ESB и т. Д.)
Те же группы предприятий также используют SOA в качестве основополагающего принципа. Но мое понимание правильного дизайна сервиса заключается в том, что они должны разбивать пространство для бизнеса и быть идемпотентным, независимым и изолированным. Как служба может быть независимой и изолированной, если ее правила поддерживаются где-то в другом месте?
Я хотел бы ошибиться на стороне простоты, утверждая, что устранение зависимостей должно иметь приоритет над централизацией, если можно показать, что правила применяются только в изолированных обстоятельствах. Я не уверен, что этот аргумент выиграет день.
Так что мои вопросы:
- Где вы падаете на централизацию против независимости аргумента?
- Каков ваш опыт работы с корпоративными инструментами, такими как механизмы правил?
- Как я могу сделать аргумент для изоляции сильнее?
- Если мой взгляд неверен, какой аргумент вы бы высказали в пользу централизации?
Может ли это быть чуть более вопросом людей и организационной концентрации власти, чем архитектуры? Развиваются как высоко централизованные организации, так и высоко децентрализованные. Мне интересно, что лучше всего подходит для организации? –
Ваши вопросы об организации хорошо приняты, но это не касается проблемы дизайна, с которой я сталкиваюсь. – duffymo