JavaRush /Курси /Модуль 5. Spring /Лекція 241: Вступ до API Gateway: навіщо потрібен і як пр...

Лекція 241: Вступ до API Gateway: навіщо потрібен і як працює

Модуль 5. Spring
Рівень 24 , Лекція 0
Відкрита

Уявіть, що в вас є величезний ресторан з безліччю кухонь (кожна кухня — це мікросервіс). Клієнти (користувачі) заходять у ресторан, і ви не хочете, щоб вони бігали між кухнями, шукаючи, де роблять суші або де готують піцу. Що робите? Ви наймаєте офіціанта (API Gateway), який приймає замовлення, передає їх на потрібну кухню і приносить клієнту готову страву. API Gateway — це той самий офіціант для вашого мікросервісного ресторану.

API Gateway — це шар між вашими клієнтами (наприклад, фронтендом, мобільним додатком або сторонніми системами) і вашими мікросервісами. Він спрощує взаємодію та керування запитами в розподіленій системі.

У складних мікросервісних додатках взаємодія напряму з кожним сервісом може створювати проблеми. Тут на сцену виходить API Gateway, який виступає як єдина точка входу для всіх запитів.


Основні функції API Gateway

  1. Маршрутизація запитів.
    Уявіть API Gateway як диспетчера, який вирішує, куди саме направити запит. Наприклад, запити на /users відправляються в мікросервіс "Користувачі", а запити на /orders — в мікросервіс "Замовлення".
  2. Безпека.
    API Gateway може реалізовувати аутентифікацію та авторизацію. Наприклад, перевірити, чи є у клієнта валідний токен JWT і чи має він право викликати певний endpoint.
  3. Балансування навантаження.
    Коли в нас багато екземплярів одного мікросервісу (наприклад, три контейнери з мікросервісом "Платежі"), API Gateway може розподіляти запити між ними, щоб уникнути перевантажень.
  4. Моніторинг і логування.
    API Gateway також може збирати статистику про кількість запитів, їхні типи, помилки та час обробки. Це допомагає зрозуміти, як ваше застосування використовується.
  5. Обмеження швидкості запитів (Rate Limiting).
    Часто API використовується зовнішніми клієнтами або партнерами. API Gateway обмежує кількість запитів від одного клієнта, щоб захистити ваше застосування від перевантаження.
  6. Зміна формату даних.
    Якщо клієнти очікують дані в іншому форматі (наприклад, фронтенд працює з одними полями, а мікросервіс повертає інші), API Gateway може перетворювати запити й відповіді.

Навіщо потрібен API Gateway?

Якщо у вас всього один монолітний сервер, то потреба в API Gateway мінімальна. Однак у мікросервісах він життєво необхідний. Ось чому:

  1. Єдина точка входу.
    Замість того, щоб клієнти зверталися до десятків мікросервісів, вони взаємодіють тільки з API Gateway. Це спрощує роботу клієнтів, оскільки їм не треба знати структуру вашої серверної частини.
  2. Приховування внутрішньої структури мікросервісів.
    Ваші мікросервіси можуть змінюватися, переміщуватися або навіть замінюватися, але клієнти цього не помітять завдяки API Gateway. Він абстрагує внутрішню архітектуру системи.
  3. Керування доступом.
    API Gateway виступає в ролі "охоронця", який впевнюється, що доступ до ваших сервісів мають тільки авторизовані користувачі.
  4. Підтримка мобільних пристроїв і фронтенду.
    API Gateway може надавати різні інтерфейси для різних типів клієнтів. Наприклад, легший API для мобільного додатку і більш насичений API для браузера.

Приклади використання API Gateway

  • Netflix, як піонер мікросервісної архітектури, використовує API Gateway для маршрутизації запитів користувачів до відповідних сервісів, а також для забезпечення персоналізованого досвіду (наприклад, рекомендацій).
  • Amazon обробляє мільйони запитів на секунду і реалізує API Gateway для керування запитами від різних клієнтів, включно з веб-застосунками, мобільними телефонами та пристроями з голосовим керуванням.
  • У маркетплейсах з сотнями мікросервісів API Gateway допомагає централізовано керувати взаємодією між мікросервісами покупців, продавців і обробки замовлень.

Як працює API Gateway?

  1. Клієнт надсилає запит до API Gateway
    Клієнти (мобільні додатки, веб-браузери) нічого не знають про мікросервіси. Усі їхні запити спрямовуються до API Gateway.
  2. API Gateway аналізує запит
    На основі запиту (його шляху, HTTP-методу, заголовків тощо) API Gateway вирішує, який мікросервіс має обробити запит.
  3. Маршрутизація запиту
    API Gateway перенаправляє запит до потрібного мікросервісу. Наприклад:
    • Запит https://api.example.com/users перенаправляється на мікросервіс "Користувачі".
    • Запит https://api.example.com/orders відправляється мікросервісу "Замовлення".
  4. Зворотній потік відповіді
    Після обробки запиту мікросервіс повертає відповідь. API Gateway може модифікувати її (наприклад, додати заголовки) і відправити клієнту.

API Gateway в мікросервісній архітектурі: візуалізація


Клієнти  ->  [ API Gateway ]  ->  [ Сервіс A ]
Мобільний      (Маршрутизація)      [ Сервіс B ]
додаток                            [ Сервіс C ]
і фронтенд

Доступні рішення для API Gateway

На ринку є багато рішень для API Gateway. Ось деякі з них:

Рішення Опис
Spring Cloud Gateway Інструмент з екосистеми Spring. Чудово інтегрується з іншими Spring-проєктами
Kong Gateway Високопродуктивне рішення, що підтримує розширюваність за допомогою плагінів
AWS API Gateway Кероване API Gateway-рішення від Amazon для роботи в хмарі
NGINX Легке, але потужне рішення для маршрутизації та балансування
Traefik Чудовий варіант для контейнеризованих сервісів (наприклад, Kubernetes, Docker)

У нашому курсі ми зосередимося на Spring Cloud Gateway, бо це природний вибір для застосунків на Spring Boot.


Практичне застосування знань

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


На наступній лекції ми почнемо розбирати практичну реалізацію API Gateway з використанням Spring Cloud Gateway!

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ