Я разработал приложение на основе Docker, состоящее из нескольких микросервисов. Он должен потреблять сообщения Amazon SQS и обрабатывать их. Сначала я хотел использовать AWS Elastic Beanstalk, но потом я упал на EC2 Container Service. Теперь я не знаю, какой из них выбрать.
На данный момент Elastic Beanstalk поддерживает многоконтейнерные среды. Это здорово, потому что каждый микросервис имеет свой собственный сервер приложений внутри контейнера докеров. Следующая проблема заключается в масштабировании:
Я не знаю, как работает механизм масштабирования. Например: у меня есть 5 докеров-контейнеров в моей эластичной среде Beanstalk. Теперь только пятый контейнер докеров находится под большой нагрузкой, потому что у него есть огромное количество сообщений SQS для обработки, остальные четыре почти бездействуют, потому что им не нужно много CPU или, возможно, не так много сообщений SQS. Предположим, что 5-й контейнер запускает сервер приложений JBoss. Насколько я знаю, сервер может потреблять ограниченное количество параллельных запросов, даже если имеется достаточное количество CPU/памяти.
Если контейнер JBoss Docker не способен обрабатывать количество запросов, но имеется достаточное количество CPU/памяти, конечно, я хочу автоматически запустить второй контейнер Docker/JBoss в том же экземпляре. Но что произойдет, если мне не хватает процессора/памяти? Конечно, я хочу вращаться на втором экземпляре, который настраивается через группу автомасштабирования в EB. Теперь второй экземпляр вращается, но каждый контейнер, за исключением 5-го, почти бездействует, конечно, я не хочу, чтобы они вторгались во второй случай тоже, что было бы пустой тратой ресурсов. Только пятый должен появиться, а остальные должны масштабироваться, как 5-й масштаб, на основе настраиваемых параметров, таких как: CPU/memory/SQS.
Я точно не знаю, делает ли Amazon ECS это, или, если это вообще возможно, но я действительно не могу найти какой-либо источник в Интернете по этой теме, что в общем сказано, масштабирование на основе экземпляров/контейнеры.