Рассмотрим следующий сценарий, касающийся рабочей нагрузки приложения (здесь рассматриваются, например, только процессор и память) -
Нормальная рабочая нагрузка Требуется 4 ядра, 16 ГБ памяти.
Максимальная рабочая нагрузка Требуется 8 ядер, 32 ГБ памяти.Предполагая, что всплеск активности (максимальная рабочая нагрузка) происходит только 2 часа в день.
Случай 1 - Когда приложение не контейнеризовано Приложение должно зарезервировать 8 ядер и 32 ГБ памяти дляон работает так, чтобы справиться с максимальной рабочей нагрузкой с ожидаемой производительностью.Но 4 ядра и 16 ГБ памяти будут потрачены впустую на 22 часа в день.
Случай 2 - Когда приложение упаковано в контейнер Предположим, что контейнер с 4 ядрами и 16ГБ памяти создается.Тогда остальные ресурсы, 4 ядра и 16 ГБ памяти будут доступны для других приложений в кластере, и другой контейнер той же конфигурации будет порожден для этого приложения только на 2 часа в день, когда требуется максимальная рабочая нагрузка.
Поэтому ресурсы в кластере используются оптимально, когда приложения упакованы в контейнеры.
Что, если на одной машине нет всех ресурсов, необходимых для приложения? В таких случаях, если приложениеКонтейнер / ресурсы могут быть выделены из нескольких машин в кластере.
Увеличение отказоустойчивости Если приложение работает на одной машине, а машина выключается, тогда все приложение становится недоступным.Но в случае контейнерного приложения, работающего на разных машинах в кластере.Если машина выходит из строя, то только несколько контейнеров будут недоступны.
Что касается вашего вопроса, если рабочая нагрузка приложения будет равномерной в течение всего срока службы, то нет смысла разбивать приложение на более мелкие контейнеры с точки зрениямасштаб.Но вы все равно можете подумать о контейнерах приложений для других преимуществ.С точки зрения масштаба, приложение контейнеризуется только тогда, когда существует разная рабочая нагрузка или в будущем ожидается большая рабочая нагрузка.