Контакты

Россия 196084 , Санкт-Петербург, ул. Заозерная, дом №8, корпус 2, Литера А, офис 212

Мы работаем по будням с 10.00 до 19.00 +7 (495) 215-53-16 +7 (812) 748-20-96 info@notissimus.com
Социальные сети

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

Лучшие API-шлюзы в 2024 году

Kong Gateway

Kong Gateway – самый популярный облачный API-шлюз с открытым исходным кодом, построенный на базе легкого прокси. Он написан на языке Lua и работает под управлением Nginx. Это шаблонный движок, который помогает ускорить время выполнения событий. Kong гарантирует беспрецедентную производительность и масштабируемость для всех наших микросервисных приложений, независимо от того, где они выполняются.

Такие компании, как Nasdaq, Honeywell, Cisco, FAB, Expedia, Samsung, Siemens и Yahoo Japan , активно используют API-шлюз Kong. Некоторые из возможностей, предлагаемых Kong, таковы:

  • Аутентификация
  • Управление движением
  • Аналитика
  • Трансформации
  • Ведение журнала
  • Бессерверные
  • Возможность расширения с помощью архитектуры плагинов

Kong получил отличную документацию и интеграцию.

Apache APISIX

Apache APISIX изначально был создан в китайской компании ZhiLiu, а позже попал в инкубатор apache и стал открытым исходным кодом. Вице-президент проекта, Минг Вен, утверждает, что этот API-шлюз решает различные проблемы, возникающие при использовании облачных нативных технологий и микросервисов. Apache ApiSix используют такие компании, как 360, HelloTalk, NetEase, TravelSky и многие другие.

Apache APISIX основан на Nginx и etcd, имеет динамическую маршрутизацию и горячую загрузку плагинов, что особенно подходит для управления API в рамках микросервисной системы.

Tyk

Tyk – это готовый к работе API-шлюз с открытым исходным кодом. У вас есть возможность выбрать самостоятельное размещение или управление.

Ниже перечислены некоторые из возможностей, предлагаемых TYK.

  • Аутентификация
  • Квоты и ограничение ставок
  • Контроль версий
  • Уведомления и события
  • Подражайте API
  • Подробный мониторинг и аналитика
  • Приверженность обратной совместимости
  • GraphQL из коробки

TYK также доступен на рынке AWS. Хороший выбор, если ваш стек приложений находится на AWS.

Ocelot 

Ocelot – это шлюз .NET API. Этот проект нацелен на использование .NET, работающих микросервисов или сервис-ориентированной архитектуры, которым нужна единая точка входа в их систему. Тем не менее, он будет работать со всем, что говорит на языке HTTP, и выполняться на любой платформе, которую поддерживает ASP.NET Core.

Ocelot действует как промежуточное ПО в определенном порядке. Он манипулирует объектом HttpRequest в состоянии, определенном его конфигурацией, пока он не достигнет промежуточного устройства построения запросов. Он создает объект HttpRequestMessage, который используется для запроса последующего сервиса. Промежуточное ПО, выполняющее запрос, является последним в конвейере Ocelot. Оно не вызывает следующее промежуточное ПО. Часть промежуточного ПО сопоставляет HttpResponseMessage с объектом HttpResponse и возвращает его клиенту. Ocelot предлагает стандартные функции, такие как маршрутизация, аутентификация, ограничение скорости, кэширование, балансировка нагрузки и другие. Он не поддерживает кодировку Chunked, пересылку заголовка хоста и Swagger.

Goku API Gateway

Goku API Gateway – зонтичный проект компании EOLINK Inc. Это микросервисный шлюз на базе Golang, обеспечивающий высокопроизводительную динамическую маршрутизацию, оркестровку сервисов, управление мультитенансами, контроль доступа к API и т. д. Goku предоставляет графический интерфейс и систему плагинов для упрощения настройки и расширения. Помимо стандартных функций, Goku предлагает кластеризацию, горячее обновление, оповещение, ведение журнала и т. д.

Express Gateway

Express Gateway построен на Express.js. Express Gateway – это набор компонентов, которые декларативно строятся вокруг Express для удовлетворения потребностей API Gateway. Сила Express Gateway заключается в использовании богатой экосистемы вокруг промежуточного ПО Express. Такие компании, как Joyent, The Linux Foundation, VIRICITI, Switch Media, Coozy и Musement, широко используют Express gateway. Он прост, быстр и предлагает все основные функции.

Gloo

Gloo – это полнофункциональный API-шлюз нового поколения и Ingress Controller для облачных нативных сред. Он построен на базе Envoy Proxy для подключения, защиты и контроля трафика через сервисы ваших приложений.

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

  • Портал для разработчиков
  • WAF
  • Предотвращение потери данных
  • Больше способов аутентификации
  • Расширенное ограничение скорости и управление несколькими кластерами

KrakenD

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

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

Fusio 

Fusio – это система управления API, поскольку она помогает разрабатывать реальные конечные точки API (т.е. запрашивать и преобразовывать данные из базы данных). Она не ограничивается прокси-запросами к другому API. Она предоставляет простой и интуитивно понятный бэкэнд для контроля и управления вашим API. Вот некоторые из возможностей, предлагаемых Fusio:

  • Монетизация
  • Поддержка подписки
  • Создание спецификации схемы OAI, RAML
  • Документация

и другие стандартные функции шлюза API.

WSO2

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

Apigee

Apigee – это кросс-облачная платформа управления API от Google Cloud.

apigee

Он выпускается со следующими вкусами:

  • Apigee: размещенное SaaS-решение, в котором вы платите за то, что используете. Вы концентрируетесь на построении бизнеса и перекладываете управление средой Apigee на GCP.
  • Apigee hybrid: позволяет управлять API на локальной платформе, на облачной платформе Google Cloud Platform (GCP) или сочетать оба варианта.

Apigee предлагает сквозное управление API, которое включает в себя монетизацию и встроенный мониторинг.

Endpoints 

Еще одна разработка от Google Cloud. Endpoints – это облегченная версия Apigee от Google Cloud. Она лучше всего подходит разработчикам для разработки, развертывания и управления API на любом бэкэнде Google Cloud. Она предоставляет инструменты и библиотеки для своих клиентов из приложения App Engine. Google Cloud Endpoints тесно интегрируются с другими продуктами, такими как Trace and Logging для мониторинга, Auth0 и Firebase для аутентификации, GKE и App Engine для автоматического развертывания и т. д.

Amazon API Gateway

AWS может предложить все, что вам нужно для работы ваших приложений. Как и API. Amazon API Gateway – это полностью управляемый сервис, созданный для разработчиков, чтобы они могли легко формировать – > публиковать -> поддерживать и защищать API любого масштаба. Он поддерживает как RESTful, так и WebSocket API и позволяет обеспечить двустороннюю связь в режиме реального времени. Ниже приведено наглядное представление Amazon, иллюстрирующее работу API-шлюза Amazon.

Если ваши микросервисы или API уже размещены на AWS, то имеет смысл интегрироваться с Amazon API Gateway. Они предлагают 1 миллион вызовов API в рамках БЕСПЛАТНОГО уровня, что позволит вам увидеть, как это работает.

Azure 

Зачем оставлять Azure? Microsoft Azure предлагает комплексное управление API в облаке, локальном или гибридном режиме. Вы можете управлять API программно через REST API и SDK. Хорошие новости, если вы используете SOAP. Вы можете импортировать язык описания веб-служб (WSDL) их службы SOAP, и Azure создаст внешний интерфейс SOAP. Они предлагают все стандартные функции, включая монетизацию. Попробуйте испытать эту платформу.

MuleSoft

Управляйте API и повышайте эффективность своего бизнеса с помощью MuleSoft. Он позволяет создавать, защищать, управлять и регулировать универсальные API из любого места. Вы можете открывать API с помощью конвейеров CI/CD, а также нового CLI для ускорения доставки приложений. MuleSoft позволяет разрабатывать API с использованием различных протоколов, соблюдая при этом стандарты управления и поддерживая высокое качество.

mulesoft-anypoint-platform

Собирайте данные из API, чтобы изучить, обслужить и объединить все данные в запрос GraphQL. Это можно сделать с помощью DataGraph. Гибкий шлюз MuleSoft позволяет управлять сервисом, не задумываясь о размере, облаке или языке. MuleSoft предлагает панель управления, с помощью которой вы можете анализировать, управлять и защищать свои API, микросервисы и пользователей. Развивайте новейшие бизнес-модели и потоки доходов, чтобы максимизировать стоимость API, сосредоточившись на внедрении, сообществах API и пути потребления. Кроме того, MuleSoft предоставляет Anypoint Exchange для интеграции ваших API с единым источником правды для обеспечения работы вашего бизнеса. Вы можете ввести в эксплуатацию управление API с помощью Anypoint API governance, не прибегая к накладным расходам на разработку. Создайте учетную запись в MuleSoft и возьмите бесплатную пробную версию, чтобы изучить ее функциональные возможности.

Boomi

Не думайте о сложностях, когда у вас есть служба управления API Boomi, которая поможет вашему бизнесу эффективно развертывать, управлять и защищать API. Boomi API management может управлять полным жизненным циклом API на любой платформе. Это позволяет вам легко настраивать API и осуществлять интеграцию. Интеллектуальный и простой в использовании пользовательский интерфейс делает данные доступными для вашего бизнеса каждый раз, используя свой API Proxy.

boomi-api-management

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

Что такое API-шлюз?

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

Зачем нам нужен API-шлюз?

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

Деловое исследование

Рассмотрим пример сложной страницы (допустим, страницы товара) в приложении электронной коммерции. Если мы посмотрим на приведенную ниже страницу листинга товаров Amazon, то увидим большое количество информации, которую необходимо отобразить на этой конкретной странице.

Для наглядности перечислим все микросервисы, которые могут понадобиться нам для рендеринга конкретной страницы. Рассмотрим поиск продукта, инвентарь, доставку, рейтинг и отзывы, механизм рекомендаций, торговцев, финансы и страхование – это семь (7) различных микросервисов, используемых для отображения вышеуказанной страницы. P.S: Вышеуказанные семь (7) микросервисов – это всего лишь предположение для объяснения концепции API-шлюза. В реальности Amazon может иметь другое количество микросервисов.

Проблема. Поскольку эти микросервисы были развернуты отдельно на разных серверах, если клиент хочет получить доступ к этим сервисам, для одной страницы необходимо запросить не менее семи (7) вызовов.

Но действительно ли это хороший подход? Я не думаю, что это рекомендуемый подход, потому что нам придется делать семь разных вызовов, что определенно повлияет на производительность, потребление ресурсов, время загрузки и т. д. Клиент также тесно связан со всеми сервисами, и, если нам придется разделить микросервисы ” Отзывы” и “Рейтинг ” на два разных сервиса, нам придется обновить код клиента. Клиенту придется делать один вызов для получения отзывов и один вызов для получения оценок, что на самом деле не самый лучший способ решения проблемы.

Решение. Так что же рекомендуется делать? Это API-шлюз. В этом подходе между клиентом и микросервисами есть прослойка, называемая API-шлюзом. Это фронтальный сервис для всех микросервисов. Теперь любой клиент, который хочет получить доступ к микросервисам, должен обратиться к API-шлюзу. Теперь API-шлюз, в свою очередь, делает вызов всем микросервисам и получает любой ответ, который может нам понадобиться. Этот процесс называется композицией API.

В двух словах: API-шлюз располагается между клиентом и микросервисами и выступает в роли шлюза для всех микросервисов.

Не только это, но и использование API-шлюза дает нам множество преимуществ.

Преимущества API-шлюза

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

Безопасность

При каждом вызове API приходится обращаться к сервисам, используя публичные IP-адреса. Это создает определенные риски.

Благодаря использованию API-шлюзов доступ к этим микросервисам может осуществляться только через частные IP-адреса. Это обеспечивает более безопасный способ передачи данных. Кроме того, использование API-шлюзов защищает данные от вредоносных и DDoS-атак. Для обеспечения безопасности необходим сертификат TLS. API Gateway обрабатывает все эти данные, сохраняя все наши API за одним статическим IP или доменом и помогая защитить их с помощью ключей, токенов и фильтрации IP-адресов.

Аутентификация, авторизация и отказоустойчивость

broken authentication

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

Балансировка нагрузки и маршрутизация

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

load balancing

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

Изоляция

Если один или несколько микросервисов были добавлены в приложение или удалены, мы не будем обновлять код клиента. В этом случае нам нужно внести некоторые изменения в сам API-шлюз, чтобы сделать вызов в соответствии с обновленными микросервисами.

Обратный прокси и кэширование

Обслуживание статических файлов (HTML, JS, CSS, шрифты) микросервисом – не лучший вариант использования. В этом случае мы можем переместить эти файлы в API-шлюз. API-шлюз может хранить все статическое содержимое и напрямую обслуживать клиента. Аналогично, рассмотрим сервис, который оценивает трендовые товары, и эти тренды рассчитываются ежечасно или ежедневно. Поэтому, как только тренд будет рассчитан для всего остального времени, сервис будет возвращать один и тот же ответ многократно. В этом случае API-шлюз имеет функцию кэширования ответов, где мы можем указать URL и пороговое время, в течение которого необходимо кэшировать ответы.

Адаптер протокола

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

Заключение

Как только API будет готов, не забудьте про мониторинг и защиту. Все вышесказанное должно дать вам представление о доступных решениях для шлюзов и управления API. Если вы ограничены в бюджете, то можете попробовать решения с открытым исходным кодом. Лучше всего установить несколько из них и посмотреть, что подойдет именно вам.