TGViewer
Baba Нюра's Wisdom Baba Нюра's Wisdom @babanyurawisdom · 225 subscribers
Post #777 130
ШАБЛОН ПРОЕКТИРОВАНИЯ API GATEWAY

Давайте сегодня подумаем о чем-то большом.

Откройте любой маркетплейс. Что вы там видите?
⬛корзину;
⬛профиль пользователя;
⬛каталог;
⬛персональные рекомендации;
⬛баннеры с акциями;
⬛поиск;
⬛и так далее.

За каждой из этих функций стоит отдельный микросервис.

А теперь смените устройство. Если открывали сайт с телефона — возьмите ноутбук. Интерфейс, скорее всего, будет отличаться. Где-то изменится расположение блоков, где-то появятся дополнительные элементы, а где-то часть информации вообще исчезнет.

Вернемся к микросервисам.

Допустим, вам нужно получить профиль пользователя. Казалось бы, ничего сложного. Нужно знать адрес сервиса и его API. Но на практике все интереснее. Клиенту приходится проходить аутентификацию, авторизацию, уметь переключаться на другой инстанс, если текущий недоступен, обрабатывать ошибки, фильтровать ответ под конкретное устройство и так далее.

Теперь повторите все то же самое для получения информации про корзину.

Потом тоже самое для рекомендаций.

И так далее.

В итоге для загрузки одной главной страницы клиент может отправить десяток запросов. Логика клиентского приложения разрастается, нагрузка на сеть увеличивается, а внутри инфраструктуры каждый сервис еще и по-своему решает вопросы безопасности. Выглядит не очень.

Именно для таких случаев существует архитектурный паттерн API Gateway.

Перед всеми внутренними сервисами появляется еще один — API Gateway. Именно он становится единой точкой входа для клиентов.

Теперь клиенту не надо бегать во всем сервисам: «дай профиль», «дай корзину»; а просто сходить в одно место с запросом «собери мне главную страницу для десктопной версии».

Все остальное Gateway берет на себя. Он один раз проводит аутентификацию пользователя, сам обращается к нужным микросервисам, собирает итоговый ответ, убирает лишние данные и возвращает клиенту именно то, что нужно.

В результате:
⬛Клиент становится заметно проще.
⬛Уменьшается количество сетевых запросов. Так же экономим на размере данных, которые гоняем по сети.
⬛Внутренние API можно не раскрывать наружу. Да и вообще всю внутреннюю архитектуру.
⬛Еще один приятный бонус — Rate Limiting. Защита от нетерпеливых пользователей, которые нажимают "обновить" 100500 раз в секунду. Можно централизованно ограничить количество запросов от одного пользователя. Если бы такие лимиты настраивались отдельно в каждом сервисе, легко получить ситуацию, когда половина страницы загрузилась, а вторая половина уже уперлась в лимиты.
⬛ API Gateway можно сделать несколько. И нужно сделать несколько, чтобы не получить единую точку отказа. Но еще можно сделать отдельный Gateway для мобильных клиентов и отдельный — для веб-версии.
⬛Может показаться, что этот паттерн нужен только для взаимодействия фронтенда с бэкендом. Или только для взаимодействия между внешним и внутренним мирами. Но это не так. API Gateway нередко используют и внутри крупных систем. Например, когда одна большая внутренняя система интегрируется с другой.

Есть ли у такого подхода минусы? Конечно. Например, это дополнительный компонент инфраструктуры, который тоже нужно разрабатывать, масштабировать и поддерживать. Другие минусы набрасывайте в комментарии.

Поэтому API Gateway — не серебряная пуля. Как и любой архитектурный паттерн, его стоит внедрять только тогда, когда преимущества действительно перевешивают недостатки.

P.S. На фото — дом в предвкушении летней грозы.

#бабанюра_программирует
  • 🤓 2
  • 👨‍💻 1
More from @babanyurawisdom
  1. Sep 28, 2026ВЕДИ СЕБЯ КВАЗИСЛУЧАЙНО. ЧАСТЬ I Если вас попросят загадать случайное число, то ваш мозг л…
  2. Sep 25, 2026ПОДАРОК СО СМЫСЛОМ Снова в том возрасте, когда уместно дарить родителям подарки, сделанные…
  3. Sep 23, 2026САПОЖНИК БЕЗ САПОГ Не так давно на работе закончилось очередное ревью. Можно поздравить с…
  4. Sep 22, 2026КЮРАСАО Вторая страна для изучения после ЧМ-2026 — Кюрасао. Я по себя называю её исключите…
  5. Sep 21, 2026Post #832
  6. Sep 18, 2026ГРАФ МОНТЕ-КРИСТО. СЕРИАЛ Мы с Александром Юрьевичем почти никогда не смотрим сериалы. Зна…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →