Wirtualizacja jako Standardowy Wzorzec
Wirtualizacja jako koncepcja korporacyjna jest niemal tak stara jak samo biznesowe przetwarzanie obliczeniowe. Wartość abstrakcji obliczeniowej od surowego sprzętu została dostrzeżona bardzo wcześnie i niemal od razu, gdy komputery nabyły wystarczającą moc do zarządzania procesem abstrakcji, rozpoczęto prace nad implementacją wirtualizacji bardzo podobną do tej, jaką znamy dziś.
Najwcześniejsze powszechnie przyjęte prace nad wirtualizacją rozpoczęły się w 1964 roku wraz z systemem operacyjnym IBM CP-40 dla mainframe'a IBM System/360. Był to pierwszy prawdziwy krok w kierunku komercyjnej wirtualizacji, a kod i projekt z tej wczesnej platformy wirtualizacyjnej stanowi podstawę dzisiejszej platformy IBM VM, używanej nieprzerwanie od 1972 roku jako warstwa wirtualizacji dla rodzin mainframe'ów IBM przez kolejne dziesięciolecia. Od czasu, gdy IBM po raz pierwszy wprowadził wirtualizację, widzieliśmy, jak systemy korporacyjne adoptują ten wzorzec abstrakcji sprzętowej niemal powszechnie. Wiele systemów obliczeniowych na dużą skalę, minikomputerów i mainframe'ów, przeszło na wirtualizację w latach 70., a większość pozostałych systemów korporacyjnych zrobiła to – w miarę dostępności mocy i technologii – w latach 80. i 90.
Jedynym znaczącym wyjątkiem od wirtualizacji w obliczeniach korporacyjnych była platforma Intel IA32 (znana jako x86), której brakowało zaawansowanych zasobów sprzętowych niezbędnych do efektywnej implementacji wirtualizacji aż do nadejścia rozszerzonej platformy AMD64 64-bitowej, i to tylko z określoną nową technologią. Po jej wprowadzeniu ta sama wysoko wydajna i wysoce bezpieczna wirtualizacja stała się dostępna na wszystkich głównych platformach obliczeniowych dla biznesu.
Ponieważ tanie platformy x86 były pozbawione sensownej wirtualizacji (poza ogólnie mało wydajną wirtualizacją programową i niszowymi platformami parawirtualizacyjnymi o wysokiej wydajności) aż do połowy lat 2000., wirtualizacja była praktycznie niedostępna dla zdecydowanej większości małych i średnich firm. Sprawiło to, że wiele osób dedykowanych przestrzeni MŚP nie zdawało sobie sprawy, że wirtualizacja jest dobrze ugruntowanym, dojrzałym zestawem technologicznym, który dawno temu ustanowił się jako de facto wzorzec dla serwerowego przetwarzania biznesowego. Wykorzystanie abstrakcji sprzętowej jest niemal wszechobecne w obliczeniach korporacyjnych, a wiele z największych, najbardziej stabilnych platform nie ma opcji – przynajmniej żadnej oficjalnie wspieranej – dla uruchamiania systemów na "gołym metalu".
Istnieją specyficzne nisze, gdzie unikanie abstrakcji sprzętowej przez wirtualizację nie jest zalecane, ale są one niezwykle rzadkie, szczególnie na rynku MŚP. Typowe systemy wymagające braku wirtualizacji to systemy wrażliwe na opóźnienia (takie jak platformy handlowe o niskich opóźnieniach) oraz wieloserwerowe połączone obciążenia robocze, jak klastry obliczeniowe HPC, gdzie głównym celem jest wydajność ponad stabilność i użyteczność. Żaden z nich nie jest typowy dla MŚP.
Wirtualizacja oferuje wiele zalet. Często, w sektorze MŚP, gdzie wirtualizacja jest mniej oczekiwana, zakłada się, że celem wirtualizacji jest konsolidacja, przy której mogą wystąpić ogromne oszczędności kosztowe, lub zapewnienie nowych sposobów na wysoką dostępność. Obie te opcje są świetne i mogą pomóc konkretnym organizacjom i sytuacjom, ale żadna z nich nie jest podstawowym uzasadnieniem dla wirtualizacji. Konsolidację i HA możemy osiągnąć w inny sposób, jeśli to konieczne. Wirtualizacja po prostu oferuje nam doskonały zakres opcji w tych konkretnych obszarach.
Wiele zastosowań wirtualizacji wynika z ekosystemu, np. potencjalne obniżenie kosztów licencjonowania. Tego rodzaju zalety nie są nieodłącznymi zaletami wirtualizacji, ale istnieją i nie można ich pominąć w rzeczywistej ocenie. Nie wszystkie korzyści dotyczą wszystkich hypervisorów lub platform wirtualizacyjnych, ale prawie wszystkie mają powszechne zastosowanie. Abstrakcja sprzętowa to koncepcja, a nie implementacja, więc sposób jej wykorzystania będzie się różnić. Konceptualnie, abstrakcja sprzętowa – czy to na warstwie storage'u, warstwie obliczeniowej itp. – jest bardzo ważna, ponieważ ułatwia zarządzanie, poprawia niezawodność i przyspiesza rozwój.
Poniżej przedstawiono niektóre korzyści z wirtualizacji. Ważne jest, aby zauważyć, że poza konkretnymi kwestiami, takimi jak konsolidacja i wysoka dostępność, prawie wszystkie te korzyści dotyczą nie tylko wirtualizacji na jednym węźle sprzętowym, ale dla pojedynczego obciążenia roboczego na tym węźle.
- Zmniejszony nakład pracy ludzkiej i wpływ związany ze zmianami sprzętu, awariami, modyfikacjami, rozbudową itp.
- Enkapsulacja storage'u dla uproszczonego procesu tworzenia kopii zapasowych i przywracania, nawet przy różnych docelowych platformach sprzętowych
- Tworzenie snapshotów całego systemu dla ochrony zarządzania zmianami
- Łatwość archiwizacji po wycofaniu lub likwidacji
- Lepsze możliwości monitorowania, dodanie zarządzania out-of-band nawet na platformach sprzętowych, które nie oferują tego natywnie
- Agnostycyzm sprzętowy zapewniający brak uzależnienia od dostawcy, ponieważ systemy operacyjne traktują hypervisor jako sprzęt, a nie sam sprzęt
- Łatwa segmentacja obciążeń roboczych
- Łatwa konsolidacja przy zachowaniu segmentacji obciążeń roboczych
- Znacznie lepsze wykorzystanie zasobów
- Abstrakcja sprzętowa tworzy znacznie realną szansę na poprawę wydajności i stabilności systemu przy jednoczesnym obniżeniu wymagań wobec systemu operacyjnego i twórców sterowników dla klienckich systemów operacyjnych
- Uproszczone wdrażanie nowych i różnorodnych obciążeń roboczych
- Proste przejście z jednoplatformowego do wieloplatformowego środowiska hostingowego, co umożliwia dodanie opcji takich jak wdrożenia chmurowe lub systemy platformy wysokiej dostępności
- Ponowne wdrażanie obciążeń roboczych umożliwiające łatwe fizyczne skalowanie
W dzisiejszych środowiskach obliczeniowych obciążenia robocze po stronie serwera powinny być powszechnie wirtualizowane z tych powodów. Korzyści z wirtualizacji są ogromne, a wady – nieliczne i błahe. Dwa typowe scenariusze, w których wirtualizacji nadal należy unikać, to sytuacje, gdy wymagany jest specjalistyczny sprzęt, który musi być używany bezpośrednio na serwerze (co jest dziś bardzo rzadkie, ale nadal się zdarza), oraz niezwykle niskoopoźnieniowe systemy, gdzie opóźnienia poniżej milisekundy są krytyczne. Drugi z nich jest typowy tylko w ekstremalnie niszowych sytuacjach biznesowych, takich jak systemy transakcji inwestycyjnych o niskich opóźnieniach. Systemy z takimi wymaganiami będą miały także niesamowite wymagania dotyczące sieci i lokalizacji geograficznej, jak niskoopóźnieniowy Infiniband z włóknem optycznym do parkietu handlowego w odległości mniejszej niż osiem kilometrów.
Niektórzy zwrócą uwagę, że klastry obliczeniowe o wysokiej wydajności nie korzystają z wirtualizacji, ale jest to szara strefa, ponieważ każda forma klastrowania jest w istocie formą wirtualizacji. Po prostu jest to wirtualizacja na poziomie "super-systemu", a nie stricte na poziomie systemu.
Można bezpiecznie założyć, że w każdym scenariuszu, w którym znalazłbyś się i w którym nie powinieneś używać wirtualizacji, będziesz wiedział to bez cienia wątpliwości i będziesz w stanie empirycznie wykazać, dlaczego wirtualizacja jest fizycznie lub praktycznie niemożliwa. W pozostałych przypadkach – wirtualizuj. Wirtualizuj, jeśli masz tylko jeden serwer fizyczny, jedno fizyczne obciążenie robocze i tylko jednego użytkownika. Wirtualizuj, jeśli jesteś firmą z listy Fortune 100 z najbardziej wymagającymi obciążeniami. I wirtualizuj, jeśli jesteś kimkolwiek pomiędzy. Rozmiar nie jest czynnikiem w wirtualizacji; wirtualizujemy z chęci posiadania bardziej efektywnego i stabilnego środowiska obliczeniowego zarówno dziś, jak i w przyszłości.
