Точка выбора: VDI и Terminal Services
Две базовые концепции конкурируют за первенство — если технологиям вообще важно первенство — в сфере удалённых графических настольных интерфейсов: VDI (виртуальная инфраструктура рабочих столов) и Terminal Services. Идея обеих проста: разместить ресурсы и вычислительную мощность на сервере и предоставить конечным пользователям доступ к графическому интерфейсу удалённо через сеть. Принципиальное различие между VDI и TS состоит в разнице между тем, что удалённый сервер предоставляет опыт «один ко многим», когда многие пользователи получают свои рабочие столы из единого образа операционной системы (TS), и тем, что каждый пользователь получает выделенный собственный сервер (предположительно виртуализированный и называемый VDI), где ресурсы индивидуальной операционной системы не разделяются.
Существует определённое допущение, частично исходящее из соглашений об именовании, что VDI подразумевает настольную операционную систему, а не серверную, — однако это не следует рассматривать как само собой разумеющееся. Фактически за пределами мира Windows не существует реального разграничения между настольными и серверными операционными системами, поэтому наличие такого разграничения на технологическом уровне не имело бы смысла. Важно, однако, помнить, что Microsoft определяет лицензирование VDI через использование различных вариантов лицензий ОС, и большинство VDI-решений ориентированы на операционные системы Windows. Поэтому, хотя VDI технически этого не подразумевает, на практике важно иметь в виду, что с технической точки зрения различий нет, а с точки зрения лицензирования Microsoft — существенные.
Из двух технологий VDI является более новой концепцией. Terminal Services существуют уже несколько десятилетий, хорошо известны и сегодня отнюдь не являются чем-то захватывающим или броским. Terminal Services предшествуют Windows и широко распространены практически в каждом семействе операционных систем; в мире UNIX они настолько привычны, что зачастую используются без лишних слов. Terminal Services являются графическим продолжением старых «зелёных экранов», использовавшихся с «давних времён» вычислительной техники. В прошлом терминалы нередко подключались по последовательному интерфейсу как VT100-терминалы, а сегодня используются TCP/IP-сети и протоколы, способные передавать графику, — но концепция остаётся прежней: множество пользователей на одном сервере.
С VDI мы достигаем тех же целей, но предоставляем каждому пользователю все ресурсы в его полное распоряжение. Его ОС полностью его собственная и ни с кем не делится. Это означает, что для каждого отдельного пользователя существуют все накладные расходы на управление памятью, управление процессором, таблицы процессов, копии библиотек и так далее. Это значительные накладные расходы. Задумайтесь обо всех ресурсах, которые требует незагруженный графический рабочий стол только для загрузки и ожидания пользователя — это может быть немало. Новые версии Windows становятся всё более компактными и эффективными — вероятно, чтобы сделать их более жизнеспособными в инфраструктурах VDI, — но накладные расходы по-прежнему остаются существенным фактором. VDI стал реально возможным только благодаря виртуализации, поэтому в практическом смысле это новое применение технологии, которое нередко понимается неверно.
Перед нами стоит задача: при проектировании инфраструктуры удалённых вычислений выбрать между этими двумя архитектурными концепциями. Разумеется, следует отметить, что эти две концепции могут сосуществовать вполне легко, и нередко такое сочетание вполне уместно. В небольших организациях обе технологии очень легко могут сосуществовать на одной физической платформе. Здесь необходимо учитывать множество факторов, и этот процесс принятия решения может быть весьма сложным.
Одним из важнейших факторов, который необходимо учитывать, является совместимость программного обеспечения. Это главный движущий фактор перехода к VDI вместо Terminal Services. В мире Windows нередки случаи, когда приложения требуют таких вещей, как сигнатура настольной операционной системы (отказываясь работать на серверных вариантах ОС), однопользовательские среды, наличие у пользователей прав администратора, запуск с определёнными учётными записями или требования к библиотекам, которые часто конфликтуют с другими пакетами. Из-за этих проблем многие компании обращаются к VDI, чтобы воспроизвести поведение индивидуальных рабочих столов, где эти проблемы легко обходились благодаря тому, что каждый пользователь работал в обособленной среде. VDI привносит ту же функциональность в мир удалённого доступа, позволяя обслуживать «проблемные» приложения по мере необходимости. Изоляция ОС добавляет уровень защиты.
Этот движущий фактор практически не существует за пределами мира Windows и является основной причиной того, почему VDI так и не получил распространения ни в какой другой среде. Хотя VDI легко достижим с Linux или FreeBSD, например, он практически не имеет смысла или ценности в этих случаях.
Серьёзной проблемой VDI являются огромные накладные расходы на управление множеством избыточных операционных систем, каждая из которых имеет собственные дублированные процессы, хранилище и память. В начальный период это делало VDI невероятно неэффективным. Однако в последнее время продвинутые VDI-системы, в первую очередь основанные на платформах виртуализации и системах хранения, решили многие из этих проблем благодаря дедупликации памяти и хранилища, использованию общих мастер-загрузочных файлов и другим методам. Вопреки большинству ожиданий, возможны даже случаи, когда VDI может превзойти традиционные Terminal Services для Windows — благодаря тому, что платформа гипервизора способна управлять памятью и переключением задач даже более эффективно, чем сама Windows (явление, впервые замеченное в начале 2000-х, когда в ряде случаев Windows работала быстрее при виртуализации поверх Linux, поскольку управление памятью частично передавалось нижележащей системе Linux, которая была более эффективной). Это, безусловно, не всегда так, но улучшения в обработке VDI зашли так далеко, что обе технологии нередко весьма близки по показателям. Тем не менее это фактор, делающий VDI более привлекательным в мире Windows, но не столь же значительно — в не-Windows-мире, где нативное управление задачами ОС, как правило, более эффективно, а VDI оставался бы ненужными накладными расходами.
Ещё одной областью, где VDI неизменно демонстрирует более высокие возможности по сравнению с Terminal Services, является сфера графически насыщенных сред рендеринга, таких как CAD и видеомонтаж. Те же области, которые по-прежнему тяготеют к выделенному оборудованию, склонны переходить к VDI, а не к Terminal Services, благодаря значительным инвестициям в возможности GPU в рамках VDI-решений. Это не универсальный сценарий, но в ситуациях, где необходим интенсивный графический рендеринг, стоит рассмотреть возможность того, что VDI обеспечит значительно более высокую производительность.
В силу принципов управления VDI эта технология нередко предназначена только для очень крупных развёртываний, где масштаб по количеству конечных пользователей, включённых в решение, позволяет преодолеть часть затрат на внедрение. Terminal Services, однако, благодаря своей более масштабируемой стоимости, нередко способны быть внедрены в меньших средах или для подмножеств пользователей более экономически эффективно. Ни та ни другая технология не является распространённой для очень небольшой среды всего из нескольких пользователей, хотя существует любопытный феномен ручного управления VDI, при котором VDI оказывается, вероятно, более эффективным, чем Terminal Services, для исключительно малого числа пользователей — возможно, менее десяти, — когда VDI рассматривается скорее как отдельные серверы, а не как единая VDI-среда.
За редчайшими исключениями — преимущественно обусловленными лицензионными накладными расходами, создаваемыми экосистемой настольных ОС Windows в виртуализированной среде, — де-факто отправной точкой для систем удалённого доступа конечных пользователей считается использование технологий Terminal Server, и только при невозможности Terminal Services удовлетворить технические требования сценария следует обращаться к более сложным и более дорогостоящим решениям VDI. По сути, VDI является запасным «силовым» методом, позволяющим добиться работы виртуализации конечных пользователей там, где предпочтительные методы оказались недостаточны.