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