एक मानक Pattern के रूप में Virtualization
Virtualization एक enterprise concept के रूप में लगभग उतनी ही पुरानी है जितनी business computing स्वयं है। Computing को bare hardware से abstract करने के मूल्य को बहुत जल्दी पहचाना गया था और जैसे ही computers में abstraction process को manage करने की शक्ति आई, virtualization को implement करने का काम शुरू हो गया, जैसा कि हम आज जानते हैं।
Virtualization पर आमतौर पर स्वीकृत सबसे प्रारंभिक कार्य 1964 में IBM System/360 mainframe के लिए IBM CP-40 operating system developers के साथ शुरू हुआ। यह commercial virtualization में पहला वास्तविक प्रवेश था और इस प्रारंभिक virtualization platform का code और design आज IBM VM platform में descend हो गया है जिसे दशकों से IBM mainframe families के लिए virtualization layer के रूप में 1972 से लगातार उपयोग किया जाता रहा है। IBM द्वारा virtualization को पहली बार पेश किए जाने के बाद से, हमने enterprise systems को इस hardware abstraction के pattern को लगभग सार्वभौमिक रूप से adopt करते देखा है। कई बड़े पैमाने पर computing systems, minicomputers और mainframes, 1970 के दशक के दौरान virtualization की ओर चले गए और बाकी सभी enterprise systems ने 1980 और 1990 के दशक के दौरान ऐसा किया, जैसे-जैसे शक्ति और technology उनके लिए उपलब्ध होती गई।
Enterprise computing के लिए virtualization का एकमात्र उल्लेखनीय holdout Intel IA32 (उर्फ x86) platform था जिसमें extended AMD64 64-bit platform के आने तक प्रभावी virtualization implement करने के लिए आवश्यक advanced hardware resources की कमी थी और तब भी केवल specific नई technology के साथ। एक बार यह पेश हो जाने के बाद business computing के सभी प्रमुख platforms पर uniformly वही high performance, highly secure virtualization उपलब्ध हो गई।
क्योंकि low cost x86 platforms में mid-2000s तक meaningful virtualization (generally low performance software virtualization और niche high performance paravirtualization platforms के बाहर) की कमी थी, इसने virtualization को छोटे और मध्यम businesses के विशाल बहुमत के लिए लगभग पूरी तरह से table से बाहर कर दिया। इससे SMB space के लिए dedicated कई लोग यह नहीं जान पाए कि virtualization एक अच्छी तरह से स्थापित, परिपक्व technology set है जिसने बहुत पहले ही business server computing के de facto pattern के रूप में खुद को स्थापित कर लिया था। Hardware abstraction का उपयोग enterprise computing में लगभग सर्वव्यापी है और कई सबसे बड़े, सबसे स्थिर platforms के लिए systems को "bare metal" चलाने का कोई विकल्प नहीं है, कम से कम कोई officially supported विकल्प नहीं है।
कुछ specific niches हैं जहां virtualization के माध्यम से hardware abstraction से बचने की सलाह नहीं दी जाती है लेकिन ये अत्यंत दुर्लभ हैं, विशेष रूप से SMB market में। Virtualized न होने की आवश्यकता वाले सामान्य systems में latency sensitive systems (जैसे low latency trading platforms) और multi-server combined workloads जैसे HPC compute clusters शामिल हैं जहां primary goal stability और utility से ऊपर performance है। इनमें से कोई भी SMB के लिए सामान्य नहीं है।
Virtualization कई advantages प्रदान करता है। अक्सर, SMB में जहां virtualization कम expected है, यह माना जाता है कि virtualization का लक्ष्य consolidation है जहां बड़े पैमाने पर लागत बचत हो सकती है या high availability प्रदान करने के नए तरीके प्रदान करना है। ये दोनों ही बेहतरीन options हैं जो specific organizations और situations में मदद कर सकते हैं लेकिन virtualization के लिए underlying justification नहीं है। हम यदि आवश्यक हो तो अन्य माध्यमों से consolidate और HA achieve कर सकते हैं। Virtualization केवल हमें उन specific areas में options की एक बड़ी range प्रदान करता है।
Virtualization के कई उपयोग ecosystem के artifacts हैं जैसे licensing costs में संभावित कमी। इस प्रकार के advantages virtualization के intrinsic advantages नहीं हैं लेकिन exist करते हैं और real world evaluation में नजरअंदाज नहीं किए जा सकते। सभी benefits सभी hypervisors या virtualization platforms पर लागू नहीं होते लेकिन लगभग सभी across the board लागू होते हैं। Hardware abstraction एक concept है, implementation नहीं, इसलिए इसे कैसे leverage किया जाए यह अलग-अलग होगा। Conceptually, चाहे storage layer पर हो, computing layer पर हो, आदि पर hardware को abstract करना बहुत महत्वपूर्ण है क्योंकि यह management को आसान बनाता है, reliability में सुधार करता है और development को तेज करता है।
यहां virtualization के कुछ लाभ हैं। यह ध्यान रखना महत्वपूर्ण है कि consolidation और high availability जैसी specific चीजों के बाहर ये लगभग सभी benefits न केवल single hardware node पर virtualizing के लिए बल्कि उस node पर single workload के लिए भी लागू होते हैं।
- Hardware changes, breaks, modifications, expansion आदि से जुड़े human effort और impact में कमी।
- Simplified backup / restore process के लिए Storage encapsulation, disparate hardware targets के साथ भी।
- Change management protection के लिए पूरे system का Snapshotting।
- Retirement या decommission पर archiving में आसानी।
- बेहतर monitoring capabilities, उन hardware platforms पर भी out of band management जोड़ना जो natively यह प्रदान नहीं करते।
- Hardware agnosticism कोई vendor lock-in नहीं प्रदान करता क्योंकि operating systems मानते हैं कि hypervisor ही hardware है, न कि hardware स्वयं।
- आसान workload segmentation।
- Workload segmentation बनाए रखते हुए आसान consolidation।
- Resource utilization में काफी सुधार।
- Hardware abstraction client operating systems के लिए operating system और driver writers पर demands कम करते हुए improved system performance और stability के लिए एक significantly realized opportunity बनाता है।
- नए और विविध workloads की Simplified deployment।
- Single platform से multi-platform hosting environments में आसान transition जो तब cloud deployments या high availability platform systems जैसे options जोड़ने की अनुमति देता है।
- आसान physical scaling की अनुमति देने के लिए workloads का Redeployment।
आज के computing environments में, server-side workloads को इन कारणों से universally virtualized होना चाहिए। Virtualization के benefits extreme हैं जबकि downsides कम और trivial हैं। दो सामान्य scenarios जहां virtualization से अभी भी बचने की आवश्यकता है, वे हैं जब specialty hardware है जिसे directly server पर उपयोग करना होगा (यह आज बहुत दुर्लभ हो गया है, लेकिन अभी भी समय-समय पर exist करता है) और अत्यंत low latency systems जहां sub-millisecond latencies महत्वपूर्ण हैं। इनमें से दूसरा केवल extremely niche business situations में आम है जैसे low latency investment trading systems। इन requirements वाले systems में भी अविश्वसनीय networking और geolocational requirements होंगी जैसे trading floor से पांच miles से कम fiber के साथ low-latency Infiniband।
कुछ लोग इंगित करेंगे कि high performance computing clusters virtualization का उपयोग नहीं करते, लेकिन यह एक grey area है क्योंकि clustering का कोई भी रूप वास्तव में virtualization का एक रूप है। यह केवल इतना है कि यह strictly system level पर होने के बजाय "super-system" level का virtualization है।
यह मानना सुरक्षित है कि किसी भी scenario में जिसमें आप खुद को पा सकते हैं जहां आपको virtualization का उपयोग नहीं करना चाहिए, आप इसे बिना किसी संदेह के जानेंगे और empirically demonstrate कर पाएंगे कि virtualization physically या practically क्यों असंभव है। अन्य सभी मामलों के लिए, virtualize करें। Virtualize करें यदि आपके पास केवल एक physical server और एक physical workload और सिर्फ एक user है। Virtualize करें यदि आप सबसे demanding workloads के साथ Fortune 100 हैं। और virtualize करें यदि आप इन दोनों के बीच कोई भी हैं। Size virtualization में कोई factor नहीं है; हम एक अधिक प्रभावी और stable computing environment की इच्छा से virtualize करते हैं, आज भी और भविष्य में भी।
