Рубріки: Теория

Что такое API Gateway: введение

Сергій Бондаренко

В современном интернете большая часть сетевого взаимодействия приходится на интерфейсы прикладного программирования — API. Рост популярности и усложнения этих интерфейсов в свою очередь приводит к новым вызовам, для разрешения которых нужен новый тип инфраструктуры. И сегодня речь пойдет о API Gateway — мы простым языком расскажем о том, что это такое, для чего нужно и как устроено. 

Что такое API Gateway

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

API Gateway — один из основных паттернов, вокруг которого строится микросервисная архитектура. Его реализация преследует ряд целей:

  • Первое — Route. Мы выставляем во внешний мир один адрес, но так как у нас много микросервисов, нам необходимо перенаправлять запросы на инстансы этих микросервисов.
  • Следующая цель данной технологии — построение бэкенда для фронтенда одностраничных приложений.
  • API Gateway это способ разделения клиентского программного интерфейса от вашей внутренней реализации. Когда клиент делает запрос, шлюз API автоматически разбивает его на несколько запросов, направляет их в нужные места, выдает ответ и все отслеживает.
  • Агрегация.
  • Кеширование.
  • Безопасность — одна из самых важных задач, которые решает API Gateway, потому что эта система стоит на входе в нашу инфраструктуру и именно на границе мы решаем вопрос безопасности, после чего уже имеем дело с доверенной зоной (DMZ).

Курсы от наших друзей помогут вам выйти на новый уровень знаний, рекомендуем ознакомиться с занятиями от школ Hillel и Mate Academy.

Как работает API Gateway

Рассмотрим простой пример. Предположим, мы имеем серверную конфигурацию с высокой загруженностью сетевыми запросами. Для того, чтобы ответить на один-единственный запрос такой системе необходимо получить и обработать данные из самых разных источников. 

Например, мы имеем магазин, который работает в мобильной и десктопной версии, а также он общается по API с мобильными приложениями.

Для отображения товара у нас задействована цепочка запросов к разным службам — одна хранит отзывы покупателей о конкретной позиции, другая содержит характеристики товара, третья — отвечает за наличие и т.д. Подключив API-шлюз мы можем осуществлять контроль поступающего трафика серверных систем. Для этого составляются четкие правила распределения нагрузки. Обычно API Gateway работает как некий буфер между пользователями и произвольным числом API-сервисов (API), выступая в роли обратного прокси, как Nginx и HAProxy.

Через этот шлюз проходят все клиентские API-запросы, которые затем перенаправляются в соответствующий микросервис с маршрутизацией, структурой и преобразованием протокола. Обычно система на лету анализирует исходный запрос, вызывая несколько микросервисов и собирая данные для определения наилучшего пути. 

Преимущества облачных API Gateway

Различные облачные реализации API Gateway удобны в использовании и значительно экономят время разработки. Они принимают и обрабатывают клиентские запросы к различным службам, управляют функциями сервисов и реализуют бизнес-логику. Кроме того, облачные API Gateway поддерживают интеграцию с облачными сервисами и настраивается это очень быстро, буквально за пару минут. 

Система автоматического масштабирования обеспечивает минимально возможный отклик на запрос. Облачные Gateway могут контролировать периодичность запросов для каждого HTTP-метода и формировать кеш с настраиваемыми ключами и определением таймаута в секундах. Обычно, облачные системы API Gateway позволяют выполнять контроль различных показателей, показывая в удобном интерфейсе, например, число ошибок или задержку вызова. 

Популярные облачные решения

Azure API Management

На данный момент существуют несколько популярных облачных платформ, которые предоставляют возможности создания единой точки входа в приложения. Прежде всего, это — Azure API Management, продукт компании Microsoft.

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

Amazon API Gateway

Схожий облачный сервис есть и у гиганта Amazon, но со своими особенностями. Знакомство с ним и понимание настроек очень упрощает интуитивный и понятный интерфейс для HTTP API. Посредством HTTP API разработчик может быстро сконфигурировать cross-origin resource sharing (CORS). API шлюз от Амазон обеспечивает совместное использование пользовательских доменов для REST API и HTTP API. Такая гибкость дает возможность разработчикам применять разные типы API-интерфейсов (REST и HTTP) в одном приложении.

В Amazon API Gateway вы можете создать API WebSocket как внешний интерфейс с отслеживанием состояния для службы AWS (например, Lambda или DynamoDB) или для конечной точки HTTP. API WebSocket вызывает ваш бэкэнд на основе содержимого сообщений, которые он получает от клиентских приложений. В то время как REST API получает запросы и отвечает на них, WebSocket API поддерживает двустороннюю связь между клиентскими приложениями и серверной частью. Серверная часть может отправлять сообщения обратного вызова подключенным клиентам. 

Опционально в API Gateway можно создавать ключи API. Для любого отдельного ключа возможна подробная настройка доступа — в каждом методе это активируется отдельно.

Чтобы можно было оперативно протестировать новые API в приложениях, Amazon API Gateway создает для отдельных платформ клиентские SDK. Для подтверждения прав доступа эти SDK используют ключи API, а также запросы на подпись с помощью данных AWS. API Gateway генерирует клиентские SDK для Java, JavaScript, Java для Android, Objective-C или Swift для iOS и Ruby. 

А еще в сервисе от Amazon имеется прекрасная документация и огромная коллекция (более пятисот) видео-курсов. Вдобавок ко всему Amazon API Gateway доступен бесплатно, до тех пор, пока количество запросов в месяц не превысит:

  • миллион запросов полученных для API REST.
  • миллион запросов для API HTTP.
  • миллион запросов или 750 000 минут подключения для API WebSocket.

Oracle

Аналогичный сервис от Oracle представляется как альтернатива популярным AWS. Oracle обещает более эффективное соотношение цены и производительности. Oracle API Gateway доступен в Windows, Linux и Solaris. Обеспечивается совместимость с LDAP, Microsoft Active Directory, Oracle Access Manager, CA SiteMinder, Entrust GetAccess, IBM Tivoli Access Manager, RSA Access Manager и другими продуктами для обмена мгновенными сообщениями.

Шлюз взаимодействует с Microsoft .NET, Oracle WebLogic, IBM WebSphere и SAP NetWeaver. Все сервисы платформы Oracle интегрируется с IAM для идентификации и авторизации (консоль, SDK или CLI и REST API).

С помощью Policy Studio к шлюзу API добавляются политики безопасности и управления, а также есть возможность управления версиями политик на нескольких шлюзах API — централизованно, а не отдельно на каждом шлюзе API. API Gateway может аутентифицировать внешних клиентов по имени пользователя и паролю, а затем выдавать токены SAML.

Для аудита и отчетности по нагрузке во всех точках входа используется инструмент Oracle API Gateway Analytics. Данный инструмент также обеспечивает анализ первопричин, выявляя общие точки отказа в мультисервисных транзакциях. Если служба выходит из строя и влияет на транзакцию в целом, API Gateway Analytics может обнаружить это и сгенерировать предупреждения.

Заключение

На данный момент есть несколько альтернативных решений (которые интересны как по возможностям, так и методам реализации), например, Yandex API Gateway, SberCloud API Gateway или Google API Gateway, но о них мы поговорим в другой раз. Ограничимся тем, что выше рассмотрели самые популярные и стандартные решения. В заключение мы рекомендуем посмотреть видео, в котором рассказывается про различные динамические сценарии использования API Gateway:

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024