Паттерн API Gateway


Gateway — это устройство, которое выступает в роли связующего звена между различными частями одной системы

Контекст
ПРоблемная Маша:
Мы по твоему совету сделали микросервисную архитектуру, теперь у нас есть микр с API для заказов, другой микр с API для продуктов, третий предоставляет API для платежей. И как теперь работать?!
Выручающий Саша:
А в чем проблема?
ПРоблемная Маша:
В том что у нас есть фронт для браузера, есть клиенты iPhone и Adroid, да и просто REST API даем сторонним приложениям. А теперь все эти API разбросаны по разным микрам с разными адресами. Как клиентам понять куда запрос отправлять?
Выручающий Саша:
Можно сделать так, чтобы не клиент думал кому что отправить, а на нашей backend стороне был тот кто принимает весь удар запросов на себя и разруливает их по микрам
Проблема
Как клиентам микросервисного приложения получать доступ к отдельным сервисам?
Решение
Сделать API gateway, который станет единой точкой входа для всех клиентов.
API gateway получает запросы от клиентов и делает:
1) Routing - маршрутизацию запросов, т.е. по url понимает какому микру отправить этот запрос
2) Load Balancer - балансировку, т.е. распределяет запросы между разными репликами одного и того же микра
3) Filter - фильтрация, т.е. предварительно обрабатывает запросы с помощью фильтров
4) Security - аутентификация, т.е. может валидировать jwt токен и проводить другие операцию для обеспечения безопасности
5) Cache - может кэшировать для улучшения производительности
6) Aggregate - может агрегировать ответы от микров в один ответ
7) Circuit Braker - может реализовывать механизмы отказоустойчивости для предотвращения каскадных падений
Онлайн-школа профессионального программирования на java для коммерческих разработчиков и соискателей.
2 главные задачи, которые мы решаем:
  1. Трудоустройство и успешное прохождение испыталки.
  2. Переход на современный стек middle+
Наше главное достояние:
Менторская поддержка 24/7 и обучение в формате живого общения
Получить консультацию по обучению