API -шлюзы становятся все более популярными среди архитектуры микросервиса. Недавно Google объявил о своем собственном API-Gateway Анкет Время созрело, чтобы взглянуть на то, почему микросервисная архитектура нуждается в них и как они в настоящее время выглядят без шлюза API.
Давайте посмотрим на архитектуру микросервиса без шлюза API.
Каждый микросервис, помимо его основной функциональности, традиционно делал это,
- Аутентификация запросов на основе токена OAuth или JWT или простой аутентификации на основе ключей. (Эта аутентификация должна проверить, имеют ли другие службы или пользователи доступ к этой услуге, а не типичную аутентификацию пользователей, которая происходит на основе данных приложения.)
- Разрешить CORS запросы от других микросервисов
- Разрешить/отрицать запросы на основе их IPS.
Ограничение скорости — разрешить только определенное количество запросов. Запросы по указанному пределу будут отвечать кодом состояния 429 (слишком много запросов). Эти правила также защищают микросервис от DDOS атаки Это происходит на уровне приложения.
Мониторинг — Сбор метрик из запросов/ответа на получение ценной информации. Например: количество запросов в минуту, количество запросов на API, количество запросов, которые конкретный пользователь достиг выше предела ставки.
Оповещение — это подмножество мониторинга, где предупреждения генерируются для конкретных событий. Например: генерирование предупреждения, когда время отклика превышает 500 мс для 1000 Использование инструмента наблюдения, такого как Prometheus, помогает как в мониторинге, так и в предупреждении.
Регистрация — регистрирование всех запросов, сделанных на сервер.
Запрос прекращения — временно отключить запрос на некоторые API или отключить услугу во время простоя.
Хорошо, это некоторые из них. Это может быть еще больше.
Основные недостатки этого подхода:
- Когда появится новый микросервис, все эти функции необходимо воспроизвести.
- Любое изменение в одной функциональности должно повторяться во всех услугах. Например: перемещение регистрации запросов от loggly в STATSD.
- Логически, все эти функции не являются специфическими для базового приложения. Они могут быть отделены от самого приложения.
API Gateway:
API Gateway сейчас не нуждается в вступлении. Ворота API можно считать еще одним микросервисом в вашей архитектуре, который выполняет все вышеупомянутые функции.
- Это точка входа для ваших микросервисов и действует как привратник, выполняющий все основные функции перед передачей запроса соответствующему микросервису.
- Все функции сейчас находятся в централизованном месте, что позволяет легко поддерживать и анализировать их.
- Когда появится новый микросервис, все, что ему нужно сделать, это обработать запросы и отправить ответ обратно в шлюз. API Gateway заботится об остальных.
- При на месте API функциональные возможности, такие как запрос/преобразование ответа, также становятся возможными развертыванием канарейских развертываний.
Я записал некоторые проблемы, которые решает шлюз API. Сказав это, это действительно зависит от архитектуры, чтобы решить, является ли ворота API обязательным или хорошим иметь. Они обязательно должны иметь, особенно когда в архитектуре много микросервисов.
Независимо от того, существует ли абсолютная потребность в воротах API или нет, просто внимательно посмотрев на дизайн до существования API Gateway, очевидно, что он нарушает Принцип единственной ответственности , Не повторяйся и Высокая сплоченность и низкая связь Анкет
Оригинал: «https://dev.to/rahul_ramfort/why-do-microservices-need-an-api-gateway-503i»