Hackernoon logo

Использование AWS API Gateway в качестве балансировщика нагрузки | Хакер полдень

Аватар профиля автора

@Таави-rehemagiТаави Рехемяги

Более 12 лет опыта работы разработчиком программного обеспечения и более 5 лет разработки приложений без сервера.

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

Балансировщики нагрузки являются одним из наиболее распространенных способов предоставления бэкэнд-API для широкой публики или даже для внутренней / частной аудитории. Похоже, что API-шлюзы предоставляют такую ​​же функциональность: сопоставляют и подключают HTTP-запросы к бэкэнд-службе. Так они одинаковые или есть какие-то различия? Может ли API Gateway обеспечить балансировку нагрузки? Какой из них лучше для Безсерверные архитектуры?

В этой статье мы рассмотрим предложения AWS для API-шлюз (API GW) и Балансировщик нагрузки приложения (ALB).

Что такое балансировщик нагрузки

ALB — это центральный интерфейс, который позволяет лучше масштабируемость подключать клиентов и серверные сервисы через HTTP-запросы. Каждый балансировщик нагрузки может предлагать несколько конечных точек HTTP, указывающих на один или несколько ресурсов инфраструктуры.
Клиент запрашивает конечную точку / api / service / xyz, а балансировщик нагрузки отвечает за распространение этого запроса на работоспособный серверный ресурс (например, сервер EC2 или Лямбда-функция). Он связывается с бэкэнд-сервисом, ожидает результатов и упаковывает HTTP-ответ клиенту.

Для чего используются балансировщики нагрузки?

Как следует из названия, одна из основных целей использования ALB — это сгладить и сбалансировать спрос по набору ресурсов.

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

Балансировщики нагрузки также служат для разделения клиентов и сервисов, что является хорошей практикой с точки зрения облачной архитектуры.

Как API Gateway сравнивается с балансировщиком нагрузки?

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

Это играет важную роль в микросервисные архитектуры, например. Несколько служб могут быть подключены к шлюзу и сопоставлены с конкретными представлениями конечных точек HTTP. Шлюз отвечает за маршрутизацию каждого запроса по запросу к соответствующей серверной службе.

Как API Gateway масштабируется в зависимости от нагрузки

При интеграции с AWS Lambda API-шлюз без проблем справляется с масштабированием сети. По умолчанию API-шлюз может обрабатывать до 10000 запросов в секунду, Lambda будет масштабироваться в соответствии с требованиями вызовов, поступающих от клиентов API.
Фактически разработчикам не следует беспокоиться о настройке параметров масштабируемости, поскольку их нет ни для API Gateway, ни для Lambda. Они оба масштабировать в соответствии со своими внутренними правилами, В зависимости от случая использования, когда ожидается большой всплеск спроса, может потребоваться запрос на увеличение квот на обслуживание, чтобы AWS не ограничивал запросы клиентов.

Дополнительные функции, предоставляемые API Gateway

ALB может также поддерживать маршрутизацию запросов на основе правил конечных точек, особенно в сочетании с функциями Lambda.

Тем не менее, API Gateway предлагает множество дополнительных функций, отсутствующих в ALB. Например, он обрабатывает аутентификацию и авторизацию, выдачу и управление токенами API и даже может генерировать SDK на основе структуры API. API-шлюз интегрируется со службой IAM (Identity Access Management), например, упрощая управление доступом к базовым ресурсам.

Хотя обычно мы хотим избежать регулирования запросов клиентов, во многих случаях важно иметь правила регулирования. Это может помочь, например, предотвратить злоупотребления или ограничить доступ в зависимости от тарифных планов. API Gateway поддерживает готовое регулирование, что позволяет сэкономить время и обеспечить соответствие бизнес-требованиям.

Какой выбрать

Если вам не нужны функции, предоставляемые API-шлюзом, вы можете вместо этого использовать ALB, поскольку во многих случаях он может быть намного дешевле, хотя его трудно сравнивать, потому что Цены на API-шлюз зависит от количества запросов, а стоимость ALB зависит от нескольких факторов, определяющих его ценообразование, такие как часы, новые и живые соединения. Обычно API-интерфейсы с небольшим трафиком являются более экономичными на API-шлюзе, в то время как высокодоходные могут найти экономию, приняв вместо этого ALB.
Технически говоря, основным ограничением API Gateway является тайм-аут 29 секунд, Если запрос занимает больше времени для обработки внутренним ресурсом (например, функцией Lambda), API рано ответит клиенту с ошибкой. Хотя количество запросов в секунду ограничено, как указано выше, оно может быть увеличено в зависимости от потребности. Однако балансировщик нагрузки может масштабироваться до сотен тысяч или даже миллионов запросов в секунду без каких-либо проблем.

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

Вывод

И API Gateway, и Application Load Balancer могут быть очень полезны. Первый вариант проще и дешевле, что позволяет внутренним API-интерфейсам лучше подключать, например, архитектуры микросервисов на основе AWS Lambda. API Gateway больше подходит, особенно для API, которые требуют детального контроля доступа и других функций, недоступных в ALB.

Если вы хотите узнать больше об облачной архитектуре и об отсутствии серверов, вы можете проверить это Облачная база знаний,

Комментарии

Теги

Баннер Noonification

Подпишитесь, чтобы получать ежедневные обзоры лучших технических историй!





Источник: Использование AWS API Gateway в качестве балансировщика нагрузки | Хакер полдень


Обратная ссылка при копировании статьи: Использование AWS API Gateway в качестве балансировщика нагрузки | Хакер полдень

Leave a comment