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