Ambassador pattern
2019-08-27 14:51:12 +0600 +0600
Ambassador pattern
Шаблон Ambassador
Создайте вспомогательные службы, которые отправляют сетевые запросы от имени службы или приложения потребителя. Службу посла можно рассматривать как внепроцессный прокси-сервер, расположенный рядом с клиентом.
Проблема
Есть старый сервис, который нет возможности модифицировать, и тяжело мониторить в условиях клауда. Надо как-то расширить его функциональность или добавить в существующий мониторинг.
Решение
Создаем прокси-сервис (Аmbassador service), который будет общаться со старым сервисом. И уже в нем реализуем ту логику, которая нам нужна.
когда использовать
- Необходимо создать общий набор функций подключения клиентов для нескольких языков или структур.
- Необходимо переложить сквозные проблемы подключения клиентов к разработчикам инфраструктуры или другим, более специализированным, группам.
- Необходимо поддерживать требования к облачным или кластерным подключениям в устаревшем приложении или в приложении, которое трудно изменить.
- Необходимо вычленять куски монолита в микросервисы. Таким образом, Аmbassador может выполнять роль промежуточного звена между старым монолитом и новыми сервисами.
когда не использовать
-
Когда задержка сетевого запроса имеет решающее значение. Прокси-сервер вносит некоторые накладные расходы, хотя и минимальные, и в некоторых случаях это может повлиять на приложение.
-
Когда функции подключения клиента используются одним языком. В этом случае лучшим вариантом может быть клиентская библиотека, которая распространяется группами разработчиков в виде пакета.
-
Когда функции подключения не могут быть обобщены и требуют более глубокой интеграции с клиентским приложением.
https://medium.com/faun/how-to-create-an-api-gateway-using-ambassador-on-kubernetes-95f181904ff7
https://docs.microsoft.com/en-us/azure/architecture/patterns/ambassador