Что такое 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:
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: