نقطه تصمیم: 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 ادامه GUI ترمینالهای “صفحه سبز” قدیمی هستند که از “روزهای قدیم” رایانهها استفاده میشد. در روزهای قدیم ترمینالها اغلب ترمینالهای VT100 متصل سریال بودند و امروز از شبکه TCP/IP و پروتکلهای قادر به حمل گرافیک استفاده میکنیم، اما مفهوم همان است: بسیاری از کاربران روی یک سرور.
با VDI همان اهداف را انجام میدهیم اما با دادن تمام منابع خودشان به هر کاربر این کار را انجام میدهیم. سیستم عامل آنها کاملاً مخصوص خودشان است، با هیچکس به اشتراک گذاشته نمیشود. این به معنای این است که تمام سربار مدیریت حافظه، مدیریت CPU، جداول فرآیند، کپیهای کتابخانهها و غیره برای هر کاربر فردی وجود دارد. این سربار زیادی است. تمام منابعی را که یک دسکتاپ گرافیکی خاموش نیاز دارد فقط برای بوت شدن و منتظر ماندن برای کاربر در نظر بگیرید - میتواند کاملاً قابل توجه باشد. سیستم عاملهای Windows جدیدتر در حال لاغرتر و کارآمدتر شدن بودهاند، احتمالاً برای اینکه روی زیرساختهای VDI قابل استفادهتر باشند، اما سربار همچنان عامل مهمی است. VDI واقعاً ممکن نبود تا زمانی که مجازیسازی آن را به واقعیت تبدیل کرد، بنابراین از هر نظر عملی این یک استفاده جدید از فناوری است و اغلب سوءتفاهم میشود.
آنچه اکنون با آن روبرو هستیم، هنگام تصمیمگیری برای یک زیرساخت محاسباتی از راه دور، انتخاب بین این دو ایده معماری است. البته باید توجه داشت که این دو میتوانند به راحتی با هم همزیستی داشته باشند و اغلب مناسب خواهد بود که این کار انجام شود. در فروشگاههای کوچکتر، در واقع بسیار آسان خواهد بود که هر دو روی همان پلتفرم فیزیکی همزیستی داشته باشند. عوامل زیادی اینجا وجود دارد که باید در نظر بگیریم و این فرآیند تصمیمگیری میتواند در واقع کاملاً پیچیده باشد.
یکی از بزرگترین عواملی که باید در نظر بگیریم سازگاری نرمافزار است. این بزرگترین محرک حرکت به سمت VDI به جای terminal services است. در دنیای Windows غیرمعمول نیست که برنامهها به چیزهایی مانند امضای سیستم عامل دسکتاپ (امتناع از اجرا روی نسخههای سیستم عامل سرور)، محیطهای تککاربره، داشتن امتیازات سطح مدیر توسط کاربران، اجرای کاربران با حسابهای خاص یا نیازهای کتابخانهای نیاز داشته باشند که اغلب با سایر بستهها تعارض خواهند داشت. به خاطر این مشکلات، بسیاری از شرکتها به VDI روی میآورند تا نحوه کار دسکتاپهای فردی را که این مشکلات به راحتی نادیده گرفته میشدند تقلید کنند زیرا هر کاربر در یک محیط مجزا اجرا میکرد. VDI همین کارایی را به دنیای دسترسی از راه دور میآورد و اجازه میدهد برنامههای مشکلدار در صورت نیاز مراقبت شوند. ایزولهسازی سیستم عامل یک لایه حفاظت اضافه میکند.
این عامل محرک اساساً خارج از دنیای Windows وجود ندارد و اساساً دلیل اینکه VDI در هیچ محیط دیگری جا نیفتاده است همین است. در حالی که با Linux یا FreeBSD به راحتی قابل دستیابی است، VDI در آن موارد هدف یا ارزش کمی دارد.
یک نگرانی عمده با VDI سربار شدید لازم برای مدیریت بسیاری از سیستمهای عامل اضافی هر کدام با فرآیندها، ذخیرهسازی و حافظه تکراری خود است. در روزهای اولیه این باعث میشد VDI باورنکردنی ناکارآمد باشد. اخیراً، اما، سیستمهای VDI پیشرفته، عمدتاً متمرکز بر پلتفرمهای مجازیسازی و ذخیرهسازی، بسیاری از این مشکلات را با حذف تکراری حافظه و ذخیرهسازی، استفاده از فایلهای بوت اصلی مشترک و سایر تکنیکها رفع کردهاند. در واقع، برخلاف اکثر فرضیات، حتی ممکن است که VDI از terminal services سنتی برای Windows بهتر عمل کند به خاطر اینکه پلتفرم هایپروایزر قادر است مدیریت حافظه و تعویض وظیفه را حتی کارآمدتر از خود Windows انجام دهد (پدیدهای که اولین بار در اوایل دهه ۲۰۰۰ مشاهده شد وقتی که در بعضی موارد 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 شود و تنها زمانی به راهحلهای پیچیدهتر و پرهزینهتر VDI روی آورده شود که terminal services ثابت کند قادر به رفع الزامات فنی سناریو نیست. از هر نظر عملی، VDI یک روش brute force پشتیبان برای کار کردن مجازیسازی کاربر نهایی است در جایی که روشهای ترجیحی کوتاه بودهاند.