Автор Луис Чаварриага, архитектор программного обеспечения в Growth Acceleration Partners
В прошлом у меня была возможность участвовать в проектах с надежными и сложными системами, которым необходимо взаимодействовать друг с другом. Но из-за отсутствия однородности их технологий это стало головной болью для задействованных команд разработчиков. Именно здесь этот шаблон помогает преодолеть многие из этих препятствий. В этом посте я хочу поделиться кратким и кратким объяснением шаблона антикоррупционного слоя.
Шаблон уровня защиты от коррупции реализует фасад или адаптер между различными системами с различной семантикой. Основная цель — перевести запрос из одной системы в другую, пытаясь уменьшить зависимости и ограничения.
«Создайте изолирующий слой, чтобы предоставить клиентам функциональные возможности с точки зрения их собственной модели предметной области. Уровень общается с другой системой через свой существующий интерфейс, практически не требуя модификации другой системы. Внутри слой перемещается в обоих направлениях по мере необходимости между двумя моделями».
- «Дизайн, ориентированный на предметную область: решение сложных задач в основе программного обеспечения», Эрик Эванс.
Контекст
Некоторые компании посвящают свои усилия решению конкретных задач в рамках конкретных механизмов, технологий и архитектур, забывая о возможной унификации или коммуникации этих систем в будущем.
Многие из этих сценариев возникают при попытке связать новую или недавнюю систему с устаревшими компонентами, вызывая проблемы совместимости. В этих случаях приоритет должен состоять в том, чтобы соблюдать ограничения системы и не включать плохие методы в наш код, чтобы навязать общение между участниками.
Союзником для решения этой проблемы является реализация уровня защиты от коррупции, который служит адаптером и переводчиком между запросами, которые делают задействованные системы или подсистемы.
Когда использовать?
Если у вас нет однородных систем, вы можете использовать этот шаблон, чтобы избежать смешения протоколов и механизмов связи между разными архитектурами и подсистемами.
Преимущества
- Стандартный интерфейс для раскрытия функциональности
- Развитие реализаций без ущерба для совместимости или эффективности
- Обнаружение сервисов может быть проще через средний уровень
- Централизованная обработка ошибок на среднем уровне
- Перемещение и объединение обязанностей по связи, мониторингу, безопасности и функциональной совместимости на уровень, который не мешает работе старых или новых систем.
Недостатки
- Уровень защиты от коррупции добавляет усилия для интеграции со всей системой с точки зрения мониторинга, настройки и развертывания.
- Уровень защиты от коррупции может увеличить задержку при обработке вызовов и запросов между системами.
- Уровень защиты от коррупции является кандидатом на то, чтобы стать еще одним масштабируемым компонентом. Важно продумать стратегию его масштабирования, чтобы избежать снижения производительности.
- Обработка транзакций и согласованность данных должны контролироваться.
В заключение я бы рекомендовал реализовать этот шаблон в соответствии со следующими предпосылками:
- Системы с различными технологиями реализации, которые должны обмениваться данными, развиваться и раскрывать свои функциональные возможности.
- Миграционные проекты, в которых необходимо соединить устаревшие и новые системы.