Приложения всех вендеров, виртуализируйтесь!

Есть один продукт, называется Symantec SVS (Software Virtualization Sotutions). Полная версия конечно же расчитана на корпоративных клиентов, и имеет в своем составе очень много "вкусных" фич. Но есть и бесплатный кусочек для некоммерческого использования. Его я себе установил, и сейчас тестирую.


В отличии от виртуализации целых операционных систем, данная виртуализация предназначена не для сервисов, а для конечных приложений конечных пользователей.
Первая проблема, которую призвана решать данное решение - конфликты между приложениями. Например, борьба за системные ресурсы-библиотеки: когда одно приложение уже запущено, второе уже не может воспользоваться ресурсом системы.
Как следствие - проблема запуска двух приложений разных версий, что особенно ценно разработчиками и тестировщиками софта.

Есть еще проблема, особо актуальна для некоторых пользователей, часто устанавливающих и удаляющих программы - полное удаление приложений: как правило не много программ, которые просто удаляются из системы - за ними остаются файлы (особенно в системных каталогах), ключи в реестре, и много разного прочего мусора, который отследить и удалить бывает практически уже невозможно.

Так же проблемой выглядит переносимость приложений с компьютера на компьютер. Как правило приложение устанавливается заново. Особенно это заметно, когда одно приложение зависит от других, и все зависимости надо устанавливать заново.

А пожирание ресурсов? Допустим вы установили ПО, и используете его иногда, но с ним село несколько сервисов: один следит за новой версией, другой пытается улучшить и быстро запустить программу. А они вам надо? Но ресурсы - память-процессор съедаются.

Есть и другие задачи по управлению, сопровождению, администрированию приложений.


И вот на помощь нам приходит витруализация софта. Разработок много, но цель у всех едина - суицид, вернее средство - создание этакой изоляционной "песочницы", куда устанавливается ПО, и затем работает без конфликтов и легко управляется.

Вот и SVS. В легком своем варианте устанавливается служба, через которую происходит создание "уровня" (layer), в который производится установка ПО, вместе с системными библиотеками, ключами реестра и т.п. Уровни можно включать, тогда становится доступно само приложение, его ключи и настроечные данные в реестре, прописываются регистрации библиотек и связываются расширения файлов, появляются ярлыки на запуск.
Во время работы приложения, все изменения регистрируются именно на этом уровне.
А при выключении уровня - все исчезает, и возвращается в состояние, как было до установки приложения - как будто его тут и не стояло.

Таким образом решается и проблема удаления - просто удалить выключенный уровень.
А еще есть опция "сброса уровня", как я понимаю - это возвращение к первоначальной установленной среде, бывает полезно, когда в процессе работы в ПО было что-то сломано. Ну и дополнительная защита: например, если виртуализиорованный браузер подцепил что-то нехорошее.


По заявлению вендора, в последней версии были решены некоторые проблемы, связанные с полной изоляцией: так, например, засунув в свой "уровень" (простите, но это термин Symantec, который еще не определился с русским переводом) офисный пакет, ссылке не открывались в браузере из другого уровня - сейчас эта проблема решена.
Однако, я полагаю, что есть все же ограничение на виртуализацию ПО с глубоким проникновением в систему, или использующие свои специфические драйверы. Так, например, судя по описанию на сайте Symantecа установки виртуализированного IE7 процесс не так уж и тривиален, а IE8 я сам пока виртуализировать не смог - нужен бубен (да лень искать, если честно).

Еще остается открытым для меня вопрос с интеграцией приложений. Например, я устанавливая Adobe Acrobat, он интегрируется с IE. 1) Установит ли он свой плагин в свой уровень, или уровень IE. 2) Необходимо ли перегружать IE, чтобы плагин подцепился после включения уровня AA. 3) Как поведет себя IE, когда я вдруг при используемом им плагине, выключу уровень AA.


И немного о вкусностях большого продукта. В этом случае у нас появляется возможность управлять софтом целой компании. ПО распространяется и контролируется специально выделенным сервером. Появляется возможность контроля лицензий - управление количеством установленных копий, согласно имеющемуся реестру.
Добавляется функция "streaming". У пользователей появляются ярлыки на еще не установленное приложение. При запуске пользователем, идет загрузка на компьютер минимально необходимых для запуска ПО файлов, причем само приложение считает, что оно установлено полностью, а по мере вызова определенных функций, догружаются остальные файлы. Система проактивна, и умеет предугадывать действия пользователя.
Безопасность. Тут имеется несколько механизмов. Во-первых, контроль прав пользователя. Не секрет, что некоторые приложения многого хотят. Тут нет необходимости отдавать простому пользователю права локального администратора, система сама повысит для приложения в нужных местах, нужные права, при этом не даст использовать дыры для запуска т.н. руткитов: т.е. если вам фотошоп с повышенными правами дал возможность запустить консоль, консоль запустится с вашими пользовательскими правами.
Кроме того, все приложения, устанавливаемые самими пользователями, также ставятся в свои уровни, о которых информация передается на сервер, откуда можно запретить использовать или удалить нежелательное ПО с пользовательских машин.


Вот немного о виртуализации ПО на примере одного продукта. К-слову, VMware в уходящем году купила компанию Thinstall, занимавшуюся разработками в области виртуализации ПО, и уже выпустила под своей маркой продукт ThinApp.