Kontenery kontra wirtualne maszyny: różnice i podobieństwa

Na pierwszy rzut mogłoby się wydawać, że kontenery i wirtualne maszyny pełnią w systemach obliczeniowych tę samą rolę i realizują podobne zadania. Jeśli jednak przyjrzeć się bliżej obu technologiom to widać, że istotnie się różnią.

To tak jakby ktoś porównywał ze sobą śrubokręt i młotek i użalał się, że ten pierwszy może i przybije gwóźdź, ale lepiej wychodzi mu przykręcanie śrub. Tak samo jest z kontenerami i wirtualnymi maszynami. Obie technologie wspierają podobne funkcjonalności, ale z racji specyficznych właściwości każda z nich nadaje się lepiej do wykonywania określonych czynności.

Porównując ze sobą obie technologie należy brać pod uwagę jeszcze jeden czynnik: dojrzałość każdej z nich. Pierwsze komercyjne narzędzia do wirtualizowania serwerów na sprzętowej platformie x86 powstały na początku tego wieku, chociaż sama idea zrodziła się dużo wcześniej. Wszystko zaczęło się wtedy, gdy VMware zaprezentował w 2000 roku swoje pierwsze narzędzia realizujace takie zadanie - GSX i ESX. Od tego czasu firma przejęła ponad 20 producentów specjalizujących się w projektowaniu takich narzędzi i następnie znacznie je udoskonaliła.

Z kontenerami sprawa ma się nieco inaczej. Chociaż sama koncepcja kontenerów powstała również wiele lat temu, to została ona na dobre rozwinięta dopiero w ostatnich latach, podczas gdy wirtualne maszyny złapały wiatr w żagle wcześniej.

Porównując obie technologie można się skoncentrować na trzech problemach i sprawdzeniu, jak z każdym z nich radzą sobie kontenery i wirtualne maszyny. Są to takie obszary, jak obsługiwanie sieci, monitorowanie stanu pamięci i podatność systemu IT na rozrastanie się.

Sieć

Niektórzy wyrażają pogląd, że technologia VM w większym stopniu wspiera funkcjonalności sieciowe. Wydaje się to być prawdą. Technologia kontenerów sprawuje się słabiej w tym obszarze i obsługa sieci nie jest jej silną stroną. Wiedział o tym Docker, który w zeszłym roku przejął firmę SocketPlane. Jest ona bowiem twórcą szeregu narzędzi do zarządzania kontenerami, wykorzystującymi do tego celu w większym stopniu sieci komputerowe. I tak powstało narzędzie Docker 1.9. Nie jest ono co prawda doskonałe, ale jak już wspomniano wcześniej, potrzeba jeszcze trochę czasu na to, aby technologia kontenerów dorównała w tym względzie technologii VM.

Monitorowanie pamięci

Panuje opinia, że kontrolowanie stanu pamięci (chodzi o jej zawieszanie oraz odwieszanie) nie jest silną stroną technologii kontenerów i technologia VM radzi sobie z tym problemem dużo lepiej. Jest to chyba prawda. Narzędzia zarządzające kontenerami (szczególnie te oferowane przez firmę Docker) zostały zaprojektowane z myślą o tym, że będą obsługiwać aplikacje typu “stateless, czyli takie, które nie podtrzymują stałego połączenia z klientem w przeciwieństwie do aplikacji typu „stateful”, które podtrzymują połączenie i przechowują informacje o stanie klienta. Dlatego ich twórcy nie przywiązywali do tego problemu dużego znaczenia. W efekcie zarządzanie stanem pamięci zeszło na drugi plan.

Docker wprowadził funkcjonalności zarządzające stanem pamięci dopiero niedawno, oferując rozwiązanie oznaczone symbolem Docker v1.9, które wspiera mechanizm Flocker. Umożliwia on zarządzanie całymi wolumenami kontenerów, kontrolując cały czas stan pamięci i przenosząc go razem z całymi zasobami (a więc danym) między hostami.

Podatność systemu na rozrastanie się

Wydaje się iż środowiska IT oparte na kontenerach mają większą tendencję do rozrastania się – niekiedy niekontrolowanego - od środowisk opartych na wirtualnych maszynach. A niekontrolowane, żywiołowe rozrastanie się każdego organizmu wywołuje negatywne skojarzenia, w przeciwieństwie do kontrolowanego, zrównoważonego rozwoju.

Podzielenie systemu IT na mniejsze monolityczne bloki (czytaj usługi i aplikacje) ma zalety. Sprzyja szybszemu wdrażaniu zmian w obrębie każdego bloku. Warto jednak pamiętać, że każda zmiana wiąże się z ryzykiem. Gdy jednak obejmuje tylko jeden obszar, dużo łatwiej wrócić do oryginalnego stanu. Ryzyko przy wprowadzaniu zmian do jednego obszaru jest też zdecydowanie mniejsze, na wypadek gdyby zmiana zburzyła pracę całego systemu IT.

Mówiąc o technologii VM trzeba powiedzieć, że musiało minąć trochę czasu, zanim VMware opracował narzędzia klasy “enterprise”, czyli takie które są zdolne zarządzać wszystkimi zasobami i systemem informatycznym. Wydaje się, że w przypadku kontenerów proces ten będzie przebiegać szybciej biorąc pod uwagę fakt, że wiele schematów zarządzania stosowanych przez narzędzia VM będzie można w łatwy sposób przenieść do środowisk bazujących na kontenerach.

Rozwiązania takie są już zresztą dostępne. Ma je np. w swojej ofercie Docker (platforma zarządzania Universal Control Plane). Warto jeszcze wspomnieć o firmach Kubernetes i Rancher, które specjalizują się w również w projektowaniu narzędzi zarządzających kontenerami ze szczególnym uwzględnieniem tzw. orkiestracji całego środowiska.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200