Virtualizare Matrioșka - Modele de integrare a întreprinderii

IT iubește virtualizarea lucrurilor, urmând vechea regulă conform căreia în informatică fiecare problemă poate fi rezolvată doar cu încă un nivel de indirectare. Cloud computing se bazează pe virtualizarea resurselor de calcul - nu este nevoie să știți pe ce mașină fizică rulează aplicația dvs. și puteți obține altele noi printr-un clic pe un buton. Înainte ca cloud-ul să fie un cuvânt cheie, totuși, VMware și alții au virtualizat mașini la nivel de sistem de operare. Recent (în termeni de buzz, nu de tehnologie), containerele aduc un alt nivel de virtualizare ușoară a resurselor de calcul. Și să nu uităm de mașina virtuală Java, care pretinde și un nivel de virtualizare. Ce ar trebui să facem cu toate aceste niveluri de virtualizare?
Ce este virtualizarea?
Virtualizarea transformă resursele fizice în resurse logice, care sunt mai flexibile și adesea disponibile la cerere. Gândiți-vă la aceasta ca la o mașină de închiriat, spre deosebire de a deține o mașină: puteți închiria un decapotabil pe vreme frumoasă, o tracțiune integrală în timpul iernii și un vagon (proprietate) pentru transportul lucrurilor. Și îi plătești pentru ei doar atunci când ai nevoie de ei. Cumpărarea tuturor acestor mașini ar fi extrem de ineficientă, mai ales când le folosești rar (de fapt dețin un vagon și un decapotabil, așa că știu). Realizarea virtuală a lucrurilor vă permite să creați noi instanțe de ceva din resurse existente - cum ar fi închirierea unei mașini dintr-o piscină mare. În lumea software-ului avem câteva flexibilități adăugate: putem instanția diferite sisteme de operare, cum ar fi Windows sau Linux, pe același hardware și un hipervizor sau putem transforma o mașină fizică mare în mai multe mașini virtuale mici. Aici analogia mașinii de închiriat se epuizează: transformarea vagoanelor în decapotabile este mult mai grea și o singură mașină nu poate fi segmentată în două motociclete.
Niveluri de virtualizare
Virtualizarea la nivel de sistem de operare există de mult timp. Un hipervizor gestionează și abstractizează hardware-ul mașinii, astfel încât să puteți crea noi instanțe ale sistemului de operare de diferite arome și dimensiuni pe un set fix de hardware fizic. Aceasta este o veste veche în lumea mainframe-ului, precum VMware oferă acest lucru de ceva timp pe platformele x86, reducând timpii și costurile de implementare a mașinilor, în timp ce crește utilizarea resurselor.
Majoritatea giganților de pe internet nu folosesc hipervizorii pe plan intern, totuși, deoarece poartă o anumită cheltuială în intervalul 5-15% și costă o sumă bună de licențiere a banilor dacă utilizați un produs comercial. Dacă aveți 100 de mașini, probabil că nu este mare lucru, dar dacă aveți 100.000 de mașini, veți dori ceva diferit. Majoritatea norilor publici folosesc hipervizori, de ex. KVM pentru Google Compute Engine sau Xen pentru Amazon EC2, deoarece trebuie să accepte mai mulți furnizori și versiuni de sisteme de operare.
Infrastructurile de calcul mari de astăzi folosesc adesea containere, de obicei bazate pe tehnologia Linux LXC: mai multe containere rulează pe o singură instanță de sistem de operare și, astfel, transportă mai puține cheltuieli generale decât instanțele OS separate. De obicei, oferă, de asemenea, mai puțină izolare între instanțe - ceva de luat în considerare dacă afacerea dvs. necesită conformitate PCI sau altele asemenea. Infrastructurile mari utilizează de obicei software de gestionare a clusterelor, cum ar fi Mesos sau Kubernetes, pentru a aloca volumul de lucru pe un număr mare de containere. Am făcut asta la Google în urmă cu mulți ani la scară largă.