Мережевий шлюз
An API Gateway acts as a single entry point for clients accessing multiple backend microservices, handling requests, routing them to appropriate services, and aggregating responses to simplify client ...
[API Gateway](/uk/terms/api-gateway) — це сервер, який діє як точка входу для всіх клієнтських запитів до серверів додатків. Він розташовується між клієнтськими програмами та мікросервісами або монолітним бекендом, абстрагуючи базову архітектуру та спрощуючи взаємодію з клієнтами. Основні функції API Gateway включають маршрутизацію запитів, трансформацію запитів/відповідей, автентифікацію та авторизацію, обмеження швидкості запитів (rate limiting), кешування, логування та моніторинг. Централізуючи ці наскрізні аспекти (cross-cutting concerns), шлюз запобігає їх дублюванню в багатьох сервісах бекенду, що призводить до чистішого, більш підтримуваного коду. Маршрутизація запитів спрямовує вхідні виклики API до відповідного сервісу бекенду на основі шляху запиту, заголовків або інших критеріїв. Трансформація дозволяє шлюзу змінювати запити або відповіді, наприклад, змінюючи формати даних (наприклад, XML на JSON) або агрегуючи дані з кількох сервісів. Безпека є критично важливим аспектом; шлюз може обробляти автентифікацію (перевірку ідентичності клієнта) та авторизацію (визначення, чи має клієнт дозвіл на доступ до запитуваного ресурсу), часто шляхом інтеграції з постачальниками ідентифікації або сервісами валідації токенів. Обмеження швидкості запитів захищає сервіси бекенду від перевантаження надмірною кількістю запитів, тоді як кешування може покращити продуктивність, обслуговуючи часто запитувані дані безпосередньо зі шлюзу. Цей архітектурний шаблон особливо поширений в архітектурах мікросервісів, де він допомагає керувати складністю численних розподілених сервісів.
graph LR
Center["Мережевий шлюз"]:::main
Rel_load_balancer["load-balancer"]:::related -.-> Center
click Rel_load_balancer "/terms/load-balancer"
Rel_internet_of_things_iot["internet-of-things-iot"]:::related -.-> Center
click Rel_internet_of_things_iot "/terms/internet-of-things-iot"
Rel_grid_computing["grid-computing"]:::related -.-> Center
click Rel_grid_computing "/terms/grid-computing"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧠 Перевірка знань
🧒 Простими словами
[[API](/uk/terms/api) Gateway](/uk/terms/api-gateway) схожий на уважного адміністратора великої офісної будівлі; він направляє відвідувачів (запити вашого додатку) до правильного відділу (сервісу бекенду) і гарантує, що ввійдуть лише авторизовані особи, при цьому відвідувачу не потрібно знати внутрішнє планування.
🤓 Expert Deep Dive
Шаблон [API Gateway](/uk/terms/api-gateway) вирішує проблеми управління розподіленими системами, особливо мікросервісами, надаючи єдиний, уніфікований інтерфейс для клієнтів. Ключові архітектурні міркування включають вибір між централізованим шлюзом (єдина точка входу) та децентралізованими (шлюзи на сервіс або на домен). Централізовані шлюзи спрощують взаємодію з клієнтами та застосовують узгоджені політики, але можуть стати вузьким місцем і єдиною точкою відмови. Децентралізовані шлюзи пропонують кращу масштабованість та ізоляцію відмов, але можуть призвести до дублювання політик. Поширені шаблони реалізації включають шаблон Backend For Frontend (BFF), де спеціалізовані шлюзи задовольняють конкретні потреби різних типів клієнтів (наприклад, мобільних, веб). Роль шлюзу в трансляції протоколів (наприклад, REST до gRPC) та агрегації запитів є критично важливою для відокремлення клієнтів від еволюції сервісів бекенду. Вплив на продуктивність виникає через додатковий мережевий перехід та накладні витрати на обробку, що вимагає ефективної маршрутизації, кешування та, можливо, асинхронної обробки. Застосування безпеки на рівні шлюзу, таке як валідація JWT або інтроспекція токенів OAuth 2.0, є критично важливою найкращою практикою безпеки.