Автор Луис Чаварриага, архитектор программного обеспечения в Growth Acceleration Partners

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

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

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

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

Контекст

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

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

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

Когда использовать?

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

Преимущества

  • Стандартный интерфейс для раскрытия функциональности
  • Развитие реализаций без ущерба для совместимости или эффективности
  • Обнаружение сервисов может быть проще через средний уровень
  • Централизованная обработка ошибок на среднем уровне
  • Перемещение и объединение обязанностей по связи, мониторингу, безопасности и функциональной совместимости на уровень, который не мешает работе старых или новых систем.

Недостатки

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

В заключение я бы рекомендовал реализовать этот шаблон в соответствии со следующими предпосылками:

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