Является ли перенаправление допустимой стратегией для шлюза API? - PullRequest
2 голосов
/ 26 июня 2019

Я прочитал эту статью о шаблоне API Gateway. Я понимаю, что шлюзы API обычно служат в качестве обратных прокси , но это создает узкое место. Если все запросы к общедоступным службам приложения проходят через один шлюз или даже один балансировщик нагрузки по нескольким репликам шлюза (возможно, аппаратный балансировщик нагрузки, который может обрабатывать большие объемы полосы пропускания легче, чем шлюз API), то этот единственный узким местом является точка доступа.

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

Если бы шлюз API вместо этого просто перенаправлял клиента на общедоступные микросервисы (что-то вроде пользовательского поиска DNS), требования к оборудованию были бы намного ниже. Это связано с тем, что сообщения, поступающие в и из шлюза API, будут очень маленькими, а запросы состоят только из имени микросервиса и ответов - только из связанного общедоступного IP-адреса.

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

Ответы [ 2 ]

2 голосов
/ 08 июля 2019

Подход, основанный на DNS / Public IP, не годится с многих точек зрения:

  • Большая площадь поверхности атаки, поскольку у вас слишком много открытых точек и каждая из них должна быть защищена
  • Нет.необходимых публичных IP-адресов выше
  • Для этих API могут потребоваться дополнительные настройки DNS с поддоменами или доменами
  • Много раз ваши API будут работать по корневому пути, но вы можете захотетьвыставить их по пути к папке example.com/service1, что требует использования некоторого шлюза для того же
  • Обработка сертификатов SSL для этих общедоступных экспозиций
  • Безопасность на целевом наборе узлов против защиты каждогопублично предоставляемый сервис становится очень сложной задачей
0 голосов
/ 10 июля 2019

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

Безопасность, сертификат и управление DNS были охвачены @ Tarun

Проблемы с высокой доступностью

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...