API шлюз

API шлюз (в англ API Gateway) — это тоже механизм для распределения трафика, как и балансировщик нагрузки. Но это лишь одна из его функциональностей. Давай посмотрим на все возможности, которые дает нам этот инструмент, а потом я отвечу на уже зудящий вопрос: так почему не всегда ставить Api GW, раз он тоже умеет балансировать нагрузку?

Итак, вот что делает Api Gateway (пункты будут сжатые и максимально прикладные для разработки):

  • Load Balancing — может выступать балансировщиком на уровне L7.
  • Caching — кэширование ответов на определённые API.
  • Rate Limiting — способ ограничения количества запросов на наш backend, чтобы обеспечить надёжность системы.
  • Authentication and Authorization — аутентификация и авторизация пользователей.
  • Service Discovery — отвечает за распределение запросов на корректные сервисы на backend.
  • Protocol Translation — запрос приходит через HTTP, но затем оборачивается в gRPC (и наоборот при ответе).
  • Monitoring, Logging and Analytics — мониторинг, логирование и аналитика.

Как же использовать эти две системы, Load Balancer и API Gateway, вместе?

Есть подходящие сценарии, которые будут учитывать плюсы и минусы каждого инструмента:

  • Входящий трафик сначала проходит через Load Balancer. Он распределяет запросы между несколькими экземплярами API Gateway, чтобы обеспечить масштабируемость и отказоустойчивость. Чаще всего используется L3/L4.
  • API Gateway обрабатывает запросы, выполняя аутентификацию, авторизацию, трансформацию данных и другие функции управления API. После этого он направляет запросы к соответствующим микросервисам или backend-сервисам. Обычно это происходит на уровне L7.

Наконец, давай рассмотрим наиболее полный путь запроса от Пользователя до наших микросервисов. Пошли изучим эту схему наиболее подробно, чтобы ты понимал от А до Я, какая система в какой момент используется при нашем запросе.