Самым большим преимуществом виртуализации обычно считается более эффективное использование сервера.
Но зачем мне для этого нужна виртуализация?
Скажем, у меня есть N физических серверов, которые используются нечасто. Почему бы мне просто не объединить все приложения на этих N серверах в 1 физический сервер? Таким образом, виртуализация не снижает производительности.
Что в этом случае дает мне виртуализация?
Виртуализация отлично подходит для разделения этих приложений.
Возможно, все ваши приложения не могут быть установлены на одном сервере, или, может быть, в целях безопасности вы не хотите, чтобы они были на одном сервере - если взломано одно, то взломается только одно.
Может быть, вы размещаете приложения для других людей и хотите дать каждому отдельную «машину».
Возможно, у вас есть 10 таких же серверов, и большую часть времени вам нужен только один, но иногда, когда ваша нагрузка становится выше, вам нужно еще несколько. Таким образом, вам не нужно загружать еще 9 серверов, у вас все консолидировано и работает на одном (или нескольких виртуальных серверах).
Есть много причин использовать виртуализацию (и, вероятно, столько же причин не использовать виртуализацию).
Что в этом случае дает мне виртуализация?
Возможность запускать две разные вещи с разными требованиями и зависимостями. Это особенно ценно, когда эти требования противоречат друг другу. Например, допустим, у вас есть какое-то старое корпоративное приложение, которое работает только на сервере Windows 2000, но у вас также есть новое блестящее приложение, для которого требуется Windows 2008, .Net framemworks и т. Д., Эти два приложения не могут быть запущены в одной ОС , но с виртуальными машинами они могут работать на одном оборудовании.
Это полезно, если у разных служб разные циклы обслуживания. С большим количеством виртуальных машин вы можете обновить / перезапустить виртуальную машину вторичного DNS-сервера без особого воздействия. Но если этот DNS-сервер также является вашим файловым сервером, сервером печати, почтовым сервером и т. Д., То планирование этого обновления будет намного сложнее.
ИМХО, самая большая выгода от виртуализации - это изоляция.
Ваша идея собрать вместе все N наборов приложений несет в себе всевозможные риски. Что, если вдруг понадобится патч, требующий перезагрузки? Вы патчите, а затем перезагружаете все остальные; с несколькими виртуальными машинами вы перезагружаете только одну. Что, если одно приложение лучше всего работает на RHEL 5.2, а другому нравится Suse 10.0? Что делать, если для одного приложения абсолютно необходима версия X Oracle, а для другого абсолютно не может использоваться версия X? (Мы все видели такое!).
Возможность использовать одну физическую систему для запуска N наборов приложений, когда указанные приложения не имеют возможности (или, по крайней мере, очень маловероятно) мешать друг другу, часто является огромной победой.
в прошлом приложения были изолированы, потому что, если, скажем, приложению «A» потребуется перезагрузка сервера, приложение «B» не будет наказано. При этом все больше и больше приложений становятся более устойчивыми / изолированными, поэтому перезагрузка сервера менее вероятна. Это проблема мышления, которую трудно преодолеть.
Виртуализированная среда дает ощутимое преимущество безопасности.
Бытует мнение, что с 1960-х годов нам не удалось создать безопасную ОС, мы можем внезапно создать безопасные виртуальные машины, в которых одна виртуализированная среда не может мешать другой. Это, конечно, чушь. Мы даже не можем создать процессоры, которые полностью защищают два запущенных процесса друг от друга.
Больше сложности и больше строк кода просто означает больше ошибок.
Когда вам нужна чистая среда для компиляции / тестирования, виртуальная машина удобна, чтобы избежать дополнительных покупок оборудования, но это действительно предел. Во многих случаях правильно спроектированные приложения могут запускаться точно так же, как вы описываете, каждое из которых работает со своим собственным идентификатором пользователя, где ОС определяет, к каким ресурсам можно получить доступ.