В современном интернете большая часть сетевого взаимодействия приходится на интерфейсы прикладного программирования — API. Рост популярности и усложнения этих интерфейсов в свою очередь приводит к новым вызовам, для разрешения которых нужен новый тип инфраструктуры. И сегодня речь пойдет о API Gateway — мы простым языком расскажем о том, что это такое, для чего нужно и как устроено.
API-интерфейс постоянно расширяется, клиентов становится больше, увеличивается число обращений и эффективность работы рано или поздно снижается. Очевидно, что необходима какая-то инфраструктура для обеспечения масштабирования и ускорения API-трафика. В высоконагруженных системах такой трафик перенаправляется в API Gateway, шлюз-систему, которая является общей точкой входа в современных приложениях, работающих через API. Причем это могут быть как монолитные приложения, так и приложения на основе микросервисов.
API Gateway — один из основных паттернов, вокруг которого строится микросервисная архитектура. Его реализация преследует ряд целей:
Курсы от наших друзей помогут вам выйти на новый уровень знаний, рекомендуем ознакомиться с занятиями от школ Hillel и Mate Academy.
Рассмотрим простой пример. Предположим, мы имеем серверную конфигурацию с высокой загруженностью сетевыми запросами. Для того, чтобы ответить на один-единственный запрос такой системе необходимо получить и обработать данные из самых разных источников.
Например, мы имеем магазин, который работает в мобильной и десктопной версии, а также он общается по API с мобильными приложениями.
Для отображения товара у нас задействована цепочка запросов к разным службам — одна хранит отзывы покупателей о конкретной позиции, другая содержит характеристики товара, третья — отвечает за наличие и т.д. Подключив API-шлюз мы можем осуществлять контроль поступающего трафика серверных систем. Для этого составляются четкие правила распределения нагрузки. Обычно API Gateway работает как некий буфер между пользователями и произвольным числом API-сервисов (API), выступая в роли обратного прокси, как Nginx и HAProxy.
Через этот шлюз проходят все клиентские API-запросы, которые затем перенаправляются в соответствующий микросервис с маршрутизацией, структурой и преобразованием протокола. Обычно система на лету анализирует исходный запрос, вызывая несколько микросервисов и собирая данные для определения наилучшего пути.
Различные облачные реализации API Gateway удобны в использовании и значительно экономят время разработки. Они принимают и обрабатывают клиентские запросы к различным службам, управляют функциями сервисов и реализуют бизнес-логику. Кроме того, облачные API Gateway поддерживают интеграцию с облачными сервисами и настраивается это очень быстро, буквально за пару минут.
Система автоматического масштабирования обеспечивает минимально возможный отклик на запрос. Облачные Gateway могут контролировать периодичность запросов для каждого HTTP-метода и формировать кеш с настраиваемыми ключами и определением таймаута в секундах. Обычно, облачные системы API Gateway позволяют выполнять контроль различных показателей, показывая в удобном интерфейсе, например, число ошибок или задержку вызова.
На данный момент существуют несколько популярных облачных платформ, которые предоставляют возможности создания единой точки входа в приложения. Прежде всего, это — Azure API Management, продукт компании Microsoft.
Данная платформа обеспечивает функционирование локального шлюза и позволяет организациям эффективно и безопасно управлять интерфейсами API, размещенными локально и в разных облаках, и все из одной службы управления API в Azure.
Схожий облачный сервис есть и у гиганта 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 доступен бесплатно, до тех пор, пока количество запросов в месяц не превысит:
Аналогичный сервис от 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), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…