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.

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