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