Какую среду Elastic Beanstalk я должен выбрать?

Моя задача - переместить наши существующие вычисления Java (сервлет в виде файла WAR) с нашего собственного сервера на AWS. Это расчет без пользовательского интерфейса или базы данных. Другие компании должны иметь возможность вызывать расчет в своих программах. Сервлет принимает почтовый запрос с полезной нагрузкой Json, а ответ отправляет полезную нагрузку Json обратно клиенту после выполнения вычисления. Расчет относительно тяжелый и поэтому требует много времени (1-2 секунды).

Я решил использовать AWS Elastic Beanstalk для облачных вычислений, но сомневаюсь, какую среду EB использовать - серверную или рабочую среду? и если я должен использовать AWS API Gateway перед EB?

Надеюсь, кто-нибудь сможет прояснить это для меня.

1 ответ

Решение

Рабочая среда создает очередь SQS, в которую вы отправляете свои задания. Чтобы разрешить доступ к нему извне AWS, вам придется использовать API Gateway (предпочтительный способ).

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

Альтернативой является веб-среда, в которой клиенты получают ответ непосредственно от вашего приложения для обработки json. 1-2 секунды - это не так много времени ожидания HTTP-запроса.

Для более сложного решения на основе EB, можно посмотреть Создание связей между средами Elastic Beanstalk. У вас будет интерфейсная среда для ваших клиентов, связанная с рабочей средой, которая выполняет обработку json-заданий.

Другой способ - переписать приложение в лямбду, если, конечно, возможно. Лямбда подходит для 1-2-секундных задач обработки.

Другие вопросы по тегам