Как работают API-шлюзы?
Как работают API-шлюзы? Каковы типичные компоненты шлюза API? Существуют ли общие стандарты управления безопасностью, ведением журнала вызовов и управлением?
1 ответ
Это довольно широкий вопрос, поскольку существует множество различных типов шлюзов (и решений для управления). В самом широком смысле шлюз - это фильтр где-то в вашем веб-стеке (размещенный вами или третьей стороной), который каким-то образом фильтрует ваш трафик API. Часть фильтрации может произойти:
- Внутри CDN, если вы используете его, прежде чем он достигнет ваших серверов.
- Внутри прокси, размещенного третьей стороной, через которую вы перенаправляете трафик.
- В выделенных машинах в вашем собственном облаке или в локальной инфраструктуре, где запущено прокси-программное обеспечение (стороннее, с открытым исходным кодом или в доме).
- В пределах определенной части стека вашего приложения, прежде чем трафик будет принят для первичной обработки.
Как правило, типы функций, которые может предоставлять шлюз, могут включать в себя: управление доступом (фильтрация трафика так, что проходит только аутентифицированный / авторизованный трафик), ограничение скорости (ограничение объема трафика, который может быть отправлен каждым клиентом API), захват аналитики / метрик и ведение журнала (отслеживание того, что происходит в API), фильтрация безопасности (проверка содержимого входящих сообщений на предмет атак, перенаправление / маршрутизация трафика (отправка трафика на различные конечные точки в вашей собственной инфраструктуре в зависимости от отправителя или запроса).
Шлюз, как правило, работает как набор модулей и фильтров, которые обрабатывают трафик при его прохождении через него с высокой скоростью, и вы обычно можете включить те модули / фильтры, которые вам нужны, и управлять их параметрами. Очевидно, существует довольно много разных способов сделать реализацию + различные поставщики и системы с открытым исходным кодом на выбор.
Я постараюсь написать это нейтрально, поскольку я работаю в 3scale, которая предоставляет как коммерческие решения, так и решения с открытым исходным кодом, но я бы посоветовал вам взглянуть на различные варианты и сделать свои собственные выводы! Основными вариантами выбора являются:
- Локальные проприетарные шлюзы от таких поставщиков, как Apigee и Layer7, - это обычно жесткие или программные устройства, которые вы устанавливаете локально в своем центре обработки данных.
- Облачные шлюзы от таких производителей, как Mashery, Apigee и WSO2 API Cloud, которые эффективно перенаправляют трафик API через свои серверы для работы.
- Архитектуры плагинов / агентов, такие как 3scale (для которых я работаю), которые предоставляют программные модули, которые могут быть развернуты в помещении внутри приложения, в помещении в прокси-шлюзе с открытым исходным кодом, например Varnish, и также подключены к CDN.
- Решения с открытым исходным кодом, такие как APIAXLE и WSO2, которые могут быть развернуты в помещении или в облаке.
Различные подходы работают по-разному, и это зависит от того, к чему вы стремитесь. В 3scale у нас явно есть предвзятость к нашему подходу, поскольку он позволяет вам добавлять фильтрующих агентов практически в любом месте вашего стека - но, несомненно, каждый поставщик будет иметь свое мнение!
Концепцию API Gateway легче (мне) понять по аналогии. Если вы думаете о стойке регистрации в передней части офисного здания, она в основном направляет звонки, останавливает неожиданных посетителей и обеспечивает доставку посылок в нужное место.
Это как раз роль шлюза API в распределенном приложении. Он принимает запросы и перенаправляет их в нужную службу. Вставьте в изображение, вот как это может выглядеть.
По сути, это стойка регистрации между вашими микросервисами и различными запросами клиентов (браузеры, приложения и т. Д.). Что касается того, как они работают, какие компоненты и так далее, это полностью зависит от реализации и требований. Некоторые шлюзы API обрабатывают аутентификацию и авторизацию, другие обрабатывают и проверяют входные данные или преобразуют ответы. Некоторые предоставляют информацию для мониторинга, а некоторые и все.
Если вам нужны дополнительные технические ответы, Стив подробно расскажет о различных компонентах, составляющих такой слой. Вот также статья о ключевых преимуществах шлюза API.