Що таке API Gateway?

Зміст:

  • Що таке API Gateway?
  • Особливості
  • Переваги
  • Приклад на Spring Boot
  • Висновок

Що таке API Gateway?

З швидким розвитком хмарних обчислень, мікросервісів, ШІ, машинного навчання та розподілених систем, монолітні архітектури не справляються з вимогами до масштабованості, гнучкості та стійкості. Ця еволюція призвела до необхідності архітектур, які не лише масштабуються, але й здатні безперешкодно інтегрувати кілька сервісів, покращувати безпеку та дозволяти швидше здійснювати цикли розгортання.

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

API Gateway — це програмне посередник, що знаходиться між клієнтськими застосунками та бекенд-сервісами. Він служить єдиною точкою доступу в архітектурі мікросервісів, спрощуючи управління API, об'єднуючи кілька викликів сервісів в одну точку доступу, керуючи спільними проблемами, такими як автентифікація, авторизація та обмеження на кількість запитів, а також надаючи покращене моніторинг та безпеку.

Особливості

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

  1. Маршрутизація — API Gateway маршрутизує зовнішні виклики (запити клієнтів) до внутрішніх кінцевих точок сервісів. Для цього він використовує карту маршрутизації. Карта маршрутизації — це конфігурація або набір правил, що визначають, як зовнішні виклики маршрутизуються до відповідних бекенд-сервісів.
  2. Композиція — API Gateway може об'єднувати кілька запитів в один відповідь, що дозволяє безперешкодно інтегрувати мікросервіси, які не знають один про одного. Однак цей підхід має свої виклики:
  3. Продуктивність та латентність — загальний час відповіді визначається найповільнішим сервісом.
  4. Трансформація даних — якщо сервіси повертають дані в різних форматах, API Gateway повинен нормалізувати відповідь. Цей процес схильний до помилок і може бути обчислювально витратним.
  5. Консистентність — складені відповіді можуть включати невідповідності, якщо сервіси надають дані з відкладеною консистентністю.
  6. Складність розробки — з ростом кількості сервісів логіка агрегації стає все більш складною, схильною до помилок і може вимагати значного рефакторингу.
  7. Переклад — API Gateway діє як перекладач між різними механізмами міжпроцесної комунікації. Наприклад, він може перетворювати RESTful HTTP запит від зовнішнього клієнта на внутрішній gRPC виклик. Цей підхід дозволяє стандартизувати протоколи, оптимізуючи продуктивність завдяки ефективності gRPC всередині, підтримуючи REST ззовні, та забезпечує декуплінг між зовнішніми та внутрішніми протоколами.
  8. Кешування — Якщо кешування включено і відповідь бекенду можна кешувати, API Gateway зберігає її, щоб зменшити латентність, знизити навантаження на бекенд і підвищити продуктивність.
  9. Управління трафіком API — API Gateway виступає як єдина точка зв'язку для взаємодії з зовнішнім світом. Він відповідає за маршрутизацію запитів на основі ключових факторів, таких як шлях запиту, заголовки та параметри запиту.

Переваги

API Gateways надають безліч переваг, які підвищують функціональність і надійність сучасних застосунків. Ці переваги роблять API Gateways незамінними для побудови ефективних, безпечних і високопродуктивних систем.

  1. Спрощена архітектура — Замість того щоб управляти API для кожного бекенд-сервісу, можна зосередитися на бізнес-логіці кожного сервісу. API Gateway виступає "комунікаційним партнером" з зовнішнім світом, вирішуючи, який сервіс має обробити запит.
    2.
    Покращена безпека — API Gateway фільтрує та блокує неавторизовані або шкідливі запити, забезпечуючи безпеку застосунку від SQL-ін'єкцій та атак DDoS.

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

Масштабованість — Як центральна точка API для застосунку, API Gateway дозволяє бекенд-сервісам масштабуватися незалежно, без впливу на клієнтів. Він може обробляти великі обсяги запитів, ефективно маршрутизувати трафік та розподіляти навантаження між кількома інстанціями сервісів, запобігаючи перевантаженню одного сервісу.

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

Приклад на Spring Boot

Тепер давайте розглянемо приклад реалізації на Spring Boot з використанням Spring Cloud Gateway. Ми створимо Gateway-застосунок і два сервіси: Product Service та Order Service.

Застосунок Gateway повинен включати залежність Spring Cloud Gateway.

pic

Ось приклад YAML-конфігурацій для маршрутизації сервісів Product і Order та порту сервера Gateway.

pic

Сервіси Product і Order надають два REST-ендпоїнти, які будуть доступні через Gateway.

pic

pic

Тепер давайте перевіримо це через Postman. Спочатку протестуємо Order Service, що працює на порту 8081, а потім Product Service, що працює на порту 8082.

pic

pic

Висновок

У підсумку, API Gateways відіграють вирішальну роль у сучасних архітектурах програмного забезпечення, спрощуючи комунікацію, покращуючи безпеку та підвищуючи масштабованість і стійкість. Вони централізують управління трафіком, дозволяють ефективну інтеграцію сервісів і надають важливі функції, такі як маршрутизація, трансформація даних і композиція запитів. Хоча вони мають численні переваги, важливо ретельно враховувати компроміси, які супроводжують їх впровадження. Врешті-решт, API Gateways — це безцінний інструмент для створення безпечних, масштабованих і високопродуктивних систем.

Перекладено з: What is an API Gateway?

Leave a Reply

Your email address will not be published. Required fields are marked *