![](https://notissimus.com/wp-content/uploads/2024/05/kandinsky-download-1715349887936-850x450.png)
API-шлюз: Бэкэнд для фронтэнда. Давайте обсудим, что такое API-шлюз, почему его необходимо иметь и как с его помощью лучше управлять API. Мы обсудим некоторые из лучших шлюзов API с открытым исходным кодом и управляемых шлюзов для повышения производительности и безопасности.
Лучшие API-шлюзы в 2024 году
Kong Gateway
Kong Gateway – самый популярный облачный API-шлюз с открытым исходным кодом, построенный на базе легкого прокси. Он написан на языке Lua и работает под управлением Nginx. Это шаблонный движок, который помогает ускорить время выполнения событий. Kong гарантирует беспрецедентную производительность и масштабируемость для всех наших микросервисных приложений, независимо от того, где они выполняются.
![](https://notissimus.com/wp-content/uploads/2024/05/kong-api-gateway-e1601825905551-1.jpg)
Такие компании, как 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 и многие другие.
![](https://notissimus.com/wp-content/uploads/2024/05/apache-apisix-1-1.jpg)
Apache APISIX основан на Nginx и etcd, имеет динамическую маршрутизацию и горячую загрузку плагинов, что особенно подходит для управления API в рамках микросервисной системы.
Tyk
Tyk – это готовый к работе API-шлюз с открытым исходным кодом. У вас есть возможность выбрать самостоятельное размещение или управление.
![](https://notissimus.com/wp-content/uploads/2024/05/tyk-e1601826600224-1.jpg)
Ниже перечислены некоторые из возможностей, предлагаемых TYK.
- Аутентификация
- Квоты и ограничение ставок
- Контроль версий
- Уведомления и события
- Подражайте API
- Подробный мониторинг и аналитика
- Приверженность обратной совместимости
- GraphQL из коробки
TYK также доступен на рынке AWS. Хороший выбор, если ваш стек приложений находится на AWS.
Ocelot
Ocelot – это шлюз .NET API. Этот проект нацелен на использование .NET, работающих микросервисов или сервис-ориентированной архитектуры, которым нужна единая точка входа в их систему. Тем не менее, он будет работать со всем, что говорит на языке HTTP, и выполняться на любой платформе, которую поддерживает ASP.NET Core.
![](https://notissimus.com/wp-content/uploads/2024/05/ocelot-1.png)
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 для подключения, защиты и контроля трафика через сервисы ваших приложений.
![](https://notissimus.com/wp-content/uploads/2024/05/gloo-1-1.jpg)
Gloo поддерживает подключение к широкому спектру рабочих нагрузок для обеспечения безопасности и управления ими и отличается исключительной маршрутизацией на функциональном уровне. Он доступен как в версии с открытым исходным кодом, так и в корпоративной версии. Корпоративная версия предлагает следующее.
- Портал для разработчиков
- WAF
- Предотвращение потери данных
- Больше способов аутентификации
- Расширенное ограничение скорости и управление несколькими кластерами
KrakenD
KrakenD – это сверхвысокопроизводительный API-шлюз с открытым исходным кодом. Его основная функциональность заключается в создании API, который выступает в роли агрегатора множества микросервисов в единые конечные точки, автоматически выполняя за вас всю тяжелую работу: агрегацию, преобразование, фильтрацию, декодирование, дросселирование, аутентификацию и многое другое.
![](https://notissimus.com/wp-content/uploads/2024/05/krakend-e1601899826979-1.jpg)
Он предлагает декларативный способ создания конечных точек. Он хорошо структурирован и многоуровневый и открыт для расширения функциональности с помощью подключаемого промежуточного программного обеспечения, разработанного сообществом или собственными силами. 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](https://notissimus.com/wp-content/uploads/2024/05/apigee-1.png)
Он выпускается со следующими вкусами:
- 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.
![](https://notissimus.com/wp-content/uploads/2024/05/how-api-gateway-works-1.jpg)
Если ваши микросервисы или 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](https://notissimus.com/wp-content/uploads/2024/05/mulesoft-anypoint-platform-1.jpg)
Собирайте данные из 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](https://notissimus.com/wp-content/uploads/2024/05/boomi-api-management-1.jpg)
Публикуйте, контролируйте и управляйте API в облаке, на границе или в локальной сети, а также эффективно управляйте и контролируйте доступ к данным. Boomi позволяет создавать омниканальные сервисы в социальных, IoT и мобильных сетях. Вы можете использовать портал разработчиков API для удобного доступа к данным из существующих приложений. Boomi предлагает бесконечное множество функций, таких как посредничество, версионирование, взаимодействие, аутентификация, управление политиками, мониторинг и управление приложениями. Вы можете поддерживать различные версии API в соответствии с вашими потребностями и обеспечивать правильные действия для них. Кроме того, вы можете развернуть API с системой аутентификации сторонних производителей. Благодаря интеграции с помощью простого мастера Boomi AtmoSphere вы можете легко разрабатывать API и управлять ими. Возьмите пробную 30-дневную версию, чтобы понять Boomi с полуслова и изучить ее возможности по управлению API.
Что такое API-шлюз?
API-шлюз – это важная концепция в архитектуре микросервиса. Он формирует точку входа для внешних клиентов (всего, что не является частью системы микросервиса). Это компонент, который выступает в качестве точки входа для приложения. Другими словами, API-шлюз – это сервер управления API, на котором хранится информация о конечных точках. Он также способен выполнять аутентификацию, ограничивать скорость, балансировать нагрузку и многое другое. Чтобы получить более полное представление об API-шлюзе, нам нужно знать, почему API-шлюз необходим.
Зачем нам нужен API-шлюз?
Чтобы понять необходимость API-шлюза, давайте рассмотрим пример использования приложения для электронной коммерции.
Деловое исследование
Рассмотрим пример сложной страницы (допустим, страницы товара) в приложении электронной коммерции. Если мы посмотрим на приведенную ниже страницу листинга товаров Amazon, то увидим большое количество информации, которую необходимо отобразить на этой конкретной странице.
![](https://notissimus.com/wp-content/uploads/2024/05/ecommerceproduct-1.jpg)
Для наглядности перечислим все микросервисы, которые могут понадобиться нам для рендеринга конкретной страницы. Рассмотрим поиск продукта, инвентарь, доставку, рейтинг и отзывы, механизм рекомендаций, торговцев, финансы и страхование – это семь (7) различных микросервисов, используемых для отображения вышеуказанной страницы. P.S: Вышеуказанные семь (7) микросервисов – это всего лишь предположение для объяснения концепции API-шлюза. В реальности Amazon может иметь другое количество микросервисов.
Проблема. Поскольку эти микросервисы были развернуты отдельно на разных серверах, если клиент хочет получить доступ к этим сервисам, для одной страницы необходимо запросить не менее семи (7) вызовов.
![](https://notissimus.com/wp-content/uploads/2024/05/access_to_microservices-1.jpg)
Но действительно ли это хороший подход? Я не думаю, что это рекомендуемый подход, потому что нам придется делать семь разных вызовов, что определенно повлияет на производительность, потребление ресурсов, время загрузки и т. д. Клиент также тесно связан со всеми сервисами, и, если нам придется разделить микросервисы ” Отзывы” и “Рейтинг ” на два разных сервиса, нам придется обновить код клиента. Клиенту придется делать один вызов для получения отзывов и один вызов для получения оценок, что на самом деле не самый лучший способ решения проблемы.
Решение. Так что же рекомендуется делать? Это API-шлюз. В этом подходе между клиентом и микросервисами есть прослойка, называемая API-шлюзом. Это фронтальный сервис для всех микросервисов. Теперь любой клиент, который хочет получить доступ к микросервисам, должен обратиться к API-шлюзу. Теперь API-шлюз, в свою очередь, делает вызов всем микросервисам и получает любой ответ, который может нам понадобиться. Этот процесс называется композицией API.
В двух словах: API-шлюз располагается между клиентом и микросервисами и выступает в роли шлюза для всех микросервисов.
Не только это, но и использование API-шлюза дает нам множество преимуществ.
Преимущества API-шлюза
API-шлюзы помогают нам реализовать A/B-тестирование, кэширование, управление квотами доступа, мониторинг состояния API, версионирование API, тестирование на обезьянах Хаоса, монетизацию и многое другое. Давайте рассмотрим некоторые из этих преимуществ.
Безопасность
При каждом вызове API приходится обращаться к сервисам, используя публичные IP-адреса. Это создает определенные риски.
![](https://notissimus.com/wp-content/uploads/2024/05/networksecurity-1.jpg)
Благодаря использованию API-шлюзов доступ к этим микросервисам может осуществляться только через частные IP-адреса. Это обеспечивает более безопасный способ передачи данных. Кроме того, использование API-шлюзов защищает данные от вредоносных и DDoS-атак. Для обеспечения безопасности необходим сертификат TLS. API Gateway обрабатывает все эти данные, сохраняя все наши API за одним статическим IP или доменом и помогая защитить их с помощью ключей, токенов и фильтрации IP-адресов.
Аутентификация, авторизация и отказоустойчивость
![broken authentication](https://notissimus.com/wp-content/uploads/2024/05/broken-authentication-1.jpg)
Важно обеспечить аутентификацию и авторизацию пользователей, входящих в приложения. Шлюз API упрощает эту задачу, поскольку является единой точкой входа и легко удовлетворяет всем требованиям. Таким образом, он позволяет только авторизованным пользователям входить в систему, а аутентифицированным – вносить изменения, что обеспечивает отказоустойчивость.
Балансировка нагрузки и маршрутизация
В случае, когда поступает множество запросов и увеличивается трафик, API-шлюз помогает справиться с этой проблемой. Это делается путем создания нескольких сервисов и обращения к ним по принципу Round-Robin. Он может управлять и направлять запросы клиентов на основе сегментации пользователей. Таким образом, для разных пользователей обеспечивается разное качество или скорость контента.
![load balancing](https://notissimus.com/wp-content/uploads/2024/05/load-balancing-1.jpg)
Рассмотрим пример, в котором определены две микрослужбы для возврата низкокачественных изображений/видео и высококачественных изображений/видео для настольных и мобильных компьютеров соответственно. В этом случае мы можем настроить API-шлюз таким образом, чтобы он действовал как маршрутизатор и, если запрос поступает с мобильного, направлял его на сервис низкокачественных изображений/видео, а если запрос поступает с настольного компьютера, то на сервис высококачественных изображений/видео. Эта маршрутизация может быть основана на заголовках, путях, параметрах и т. д.
Изоляция
Если один или несколько микросервисов были добавлены в приложение или удалены, мы не будем обновлять код клиента. В этом случае нам нужно внести некоторые изменения в сам API-шлюз, чтобы сделать вызов в соответствии с обновленными микросервисами.
Обратный прокси и кэширование
Обслуживание статических файлов (HTML, JS, CSS, шрифты) микросервисом – не лучший вариант использования. В этом случае мы можем переместить эти файлы в API-шлюз. API-шлюз может хранить все статическое содержимое и напрямую обслуживать клиента. Аналогично, рассмотрим сервис, который оценивает трендовые товары, и эти тренды рассчитываются ежечасно или ежедневно. Поэтому, как только тренд будет рассчитан для всего остального времени, сервис будет возвращать один и тот же ответ многократно. В этом случае API-шлюз имеет функцию кэширования ответов, где мы можем указать URL и пороговое время, в течение которого необходимо кэшировать ответы.
Адаптер протокола
Если мы хотим воспользоваться преимуществами такого протокола, как веб-сокет или новая версия HTTP, например HTTP/2, и даже если наши внутренние сервисы не готовы или не совместимы с HTTP/2 или веб-сокетами, API-шлюз может взять на себя ответственность за преобразование нового протокола в старый. Он может выступать в роли адаптера протокола.
![](https://notissimus.com/wp-content/uploads/2024/05/api-gateway-1.jpg)
Заключение
Как только API будет готов, не забудьте про мониторинг и защиту. Все вышесказанное должно дать вам представление о доступных решениях для шлюзов и управления API. Если вы ограничены в бюджете, то можете попробовать решения с открытым исходным кодом. Лучше всего установить несколько из них и посмотреть, что подойдет именно вам.