Słowniczek pojęć – wirtualizacja, konteneryzacja, cloud computing

Pojęcia związane z wirtualizacją Wirtualizacja (VM, Virtual Machine) Domyślnie system operacyjny jest instalowany na maszynie fizyczniej, na jej dysku twardym. Wirtualizacja polega na uruchomieniu i funkcjonowaniu systemu operacyjnego w pamięci podręcznej, dzięki temu na jednej maszynie fizycznej i w obrębie jednego hosta, można uruchomić jednocześnie dowolną ilość różnych systemów (zwanych gośćmi). Oprogramowanie, które steruje wirtualizacją […]

Pojęcia związane z wirtualizacją

Wirtualizacja (VM, Virtual Machine)

Domyślnie system operacyjny jest instalowany na maszynie fizyczniej, na jej dysku twardym. Wirtualizacja polega na uruchomieniu i funkcjonowaniu systemu operacyjnego w pamięci podręcznej, dzięki temu na jednej maszynie fizycznej i w obrębie jednego hosta, można uruchomić jednocześnie dowolną ilość różnych systemów (zwanych gośćmi). Oprogramowanie, które steruje wirtualizacją nazywamy hipernadzorcą.

Host

Hostem określa się fizyczne urządzenie (np. komputer, router) podłączone do sieci komputerowej, posiadające własny adres IP i wyposażone w system, który potrafi uczestniczyć w wymianie danych za pomocą protokołu TCP/IP. W obrębie jednego hosta może współistnieć wiele usług. W nomenklaturze wirtualizacji, kiedy używamy określenia “host” lub “system operacyjny hosta” mamy na myśli właśnie bazową maszynę lub jej system operacyjny.

Hipernadzorca (hypervisor)

Zadaniem hipernadzorcy jest połączenie oprogramowania i sprzętu w celu tworzenia, wykonywania i zarządzania maszynami wirtualnymi. Komputer, na którym działa hipernadzorca, jest zwany gospodarzem, a każda maszyna wirtualna na hoście jest nazywana gościem. Hipernadzorca zapewnia gościom wirtualną platformę operacyjną, umożliwiając wielu systemom operacyjnym współdzielenie zwirtualizowanych zasobów na tym samym hoście. Wyróżniamy hipernadzorców typu 1 (natywny, ang. bare metal hypervisor) i typu 2 (hostowany).

Hypervisor type 1

To taki rodzaj hipernadzorcy, który uruchamia się bezpośrednio na fizycznym serwerze mając styczny dostęp do zasobów sprzętowych bez pośredniczenia systemu operacyjnego. W tym modelu hypervizor zastępuje system operacyjny, przez co jest bardziej wydajniejszy. Wśród hipernadzorców typu 1 najpopularniejszymi są VMware vSphere, KVM, Xen (XenServer) oraz Red Hat Enterprise Virtualization (RHEV).

Hypervisor type 2

Hipernadzorca typu 2, w przeciwieństwie do poprzedniego, jest ładowany wewnątrz systemu operacyjnego (hostowany w systemie operacyjnym hosta) w ten sam sposób jak wszystkie inne zainstalowane tam aplikacje, w praktyce może to oznaczać wolniejsze działanie. Popularnymi hipernadzorcami tego typu są Virtualbox, VMware Workstation, QEMU, Microsoft Hyper-V.

KVM (Kernel-based Virtual Machine)

KVM to technologia wirtualizacji typu Open Source, która zmienia jądro Linuksa w hipernadzorcę typu 1. KVM uruchamia aplikacje z prędkością szybszą niż inne, komercyjne hiperwizory. Działa tak, jakby system operacyjny maszyny wirtualnej operował bezpośrednio na maszynie hosta. Kolejną przewagą KVM jest dostęp do kodu źródłowego i elastyczność w integracji z dowolnym oprogramowaniem. Jak sama nazwa wskazuje, KVM jest oparte na jądrze Linuksa, dlatego obsługuje tylko Linuksa jako system operacyjny hosta.

Vagrant (open source)

Kiedy ilość systemów wirtualnych jest bardzo duża, pojawia się naturalna potrzeba do łatwiejszego i zautomatyzowanego zarządzania nimi, do tego właśnie służy Vagrant. Vagrant automatyzuje proces tworzenia, konfiguracji i udostępniania maszyn wirtualnych. Poza podstawowymi środowiskami do wirtualizacji (VirtualBox, Hyper-V, VMware), Vagrant może także integrować się z Dockerem (konteneryzacja) oraz AWS-em (cloud computing).

 


Pojęcia związane z konteneryzacją

Konteneryzacja (patrz kontener)

Konteneryzacja jest alternatywą dla wirtualizacji, wyróżnia się ona tym, że kontenery współdzielą system (w tym biblioteki) oraz jego zasoby. A zatem wirtualizacji poddawane są tylko i wyłącznie niezbędne procesy dla samej aplikacji. Daje to duże korzyści w postaci niewielkiego zużycia zasobów sprzętowych, co przekłada się na efektywniejsze ich wykorzystanie. Kontenery z natury są krótkotrwałe (efemeryczne), to znaczy stan kontenera nie jest zapisywany w momencie jego zniszczenia. Ze słowem Konteneryzacja nieodłącznie wiąże się Docker, który spopularyzował “erę kontenerów”, stąd bardzo często obrazy kontenerowe są właśnie obrazami Dockerowymi.

Kontener

Kontener (aplikacja kontenerowa) to przenośny, zminimalizowany obraz systemu lub aplikacji zawierający wyłącznie niezbędne komponenty do wykonania konkretnego zadania. Największą przewagą kontenera jest jego mobilność (przenoszenie i powielanie), niskie zużycie zasobów oraz szybkość uruchomienia i działania.

Docker (open source)

Docker jest najpopularniejszą aplikacją działającą w modelu klient-server, odpowiadającą za tworzenie, zarządzanie i niszczenie kontenerów. Docker pozwala umieścić program oraz jego zależności (biblioteki, pliki konfiguracyjne, lokalne bazy danych itp.) w lekkim, przenośnym, wirtualnym kontenerze. Taki kontener można potem uruchomić na prawie każdym serwerze z systemem Linux. Docker – zgodnie z ideą konteneryzacji – uwspólnia część bibliotek z systemu operacyjnego jednocześnie zarządzając limitowaniem zasobów oraz izolacją procesów (wykorzystując namespaces).

Orkiestracja

Orkiestracją (w konteneryzacji) nazywamy ideę narzędzia do zarządzania wielokontenerowym, skalującym się środowiskiem. Orkiestratory tworzą warstwę abstrakcji nad kontenerami. Pozwala to na przykład na zarządzanie autoskalowaniem kontenerów, propagację zmian w obrazie na wszystkie węzły, czy tworzenie idei serwisu, który może być wyposażony w wewnętrzny load-balancing. Do najpopularniejszych orkiestratorów kontenerów należą: Kubernetes (bardzo aktywnie rozwijany), Docker Swarm (tworzony przez zespół Docker-a), oraz Apache Mesos (Mesos potrafi orkiestrować zasoby skonteneryzowane, jak i nieskonteneryzowane).

Kubernetes (open source)

Kubernetes jest najpopularniejszą platformą służącą do orkiestracji kontenerów. Oferuje szeroką  gamę funkcjonalności obejmującą m. in. automatyzację, bezpieczeństwo oraz load-balancing. Z Kubernetesem łączą się pojęcia Node, Pot, Replication controller, Service oraz Namespace.

Openshift (Red Hat)

OpenShift jest platformą (Platform as a service) dostarczaną przez Red Hat i przeznaczoną  do budowania i uruchamiania aplikacji kontenerowych przez developerów. Pod nazwą OpenShift kryje się Kubernets działający na dystrybucji Red Hat Enterprise Linux. OpenShift nieco rozszerza możliwości Kubernetesa wprowadzając m. in. nowe pojęcie “projekt” (rozwinięcie dla namespaces) oraz wsparcie dla cyklu życia aplikacji.

 


Pojęcia związane z Cloud-Computing

AWS (Amazon Web Services)

Amazon Web Services jest największą i najpopularniejszą na świecie chmurą obliczeniową. AWS to zbiór około 110 (stan na styczeń 2021) różnego rodzaju usług informatycznych udostępnianych w chmurze. Ponieważ opłaty są naliczane tylko za wykorzystane w danym okresie zasoby, umożliwiając tym samym niezwykle łatwe powiększanie i pomniejszanie infrastruktury, jest o wiele korzystniejsze od posiadania własnej przestrzeni serwerowej ze stałą liczbą utrzymywanych zasobów. Za pomocą usług AWS można realizować m.in. hosting baz danych, usługi dostarczania różnego rodzaju treści, czy mocy obliczeniowej.

Amazon EC2 (Elastic Cloud Computing)

Amazon EC2 jest jedną z najpopularniejszych usług w chmurze AWS oferującą wirtualny klaster komputerów z możliwością skalowania rozmiarów zasobów w zależności od potrzeb w danym czasie (np. wzmożona ilość zapytań do bazy danych). Usługi są naliczane tylko za wykorzystany czas z dokładnością do jednej sekundy. W ramach EC2 dostępne są usługi realizujące zadania load-balancingu, automatycznego skalowania, zapory sieciowej itp.

Amazon S3 (Simple Storage Service)

Jest to kolejna z najpopularniejszych usług Amazona, tym razem służąca do przechowywania plików udostępnianych protokołem HTTP. Amazon S3 jest rodzajem obiektowej pamięci masowej oferującej bardzo wysoką  dostępność danych, wydajność i skalowalność. Może być używana do przechowywania dowolnej ilości i wielkości różnych danych, takich jak pliki multimedialne, statyczne strony internetowe, archiwa i kopie zapasowe, pliki aplikacji itp. Jedynym limitem jest rozmiar pojedynczego pliku nieprzekraczający 5TB.

AWS Marketplace

AWS Marketplace jest to katalog oprogramowania dostarczanego przez zewnętrznych dostawców (niezależnych od Amazon), dystrybuowanego w formie gotowych obrazów (Amazon Machine Image (AMI), lub Software as a Service). AWS Marketplace jest rodzajem sklepu, za pomocą którego można wyszukiwać, filtrować i kupować oprogramowanie, które zostanie uruchomione na konkretnej (wybranej przez użytkownika) usłudze AWS (najczęściej Amazon EC2). AWS Marketplace zawiera tysiące list oprogramowania pogrupowanych w kategoriach, takich jak zabezpieczenia, internet rzeczy, uczenie maszynowe, analiza biznesowa, bazy danych i DevOps. Na platformie AWS Marketplace można znaleźć także nasze produkty takie jak system operacyjny EuroLinux czy baza danych EuroDB (oraz obrazy AMI z modułami dodatkowymi).

Microsoft Azure

Platforma i infrastruktura z gatunku chmur obliczeniowych (cloud computing) stworzona przez firmę Microsoft. Umożliwia tworzeniae, wdrażaniae i zarządzaniae aplikacjami i usługami za pośrednictwem globalnej sieci centrów danych firmy Microsoft. Microsoft Azure i Google Cloud Platform są konkurencją dla Amazon Web Services.

OpenStack (open source)

OpenStack to oprogramowanie z gatunku chmur obliczeniowych (cloud computing) dostarczane w modelu Infrastructure as a Service (IaaS). OpenStack kontroluje duże pule zasobów obliczeniowych, pamięci masowej, oraz sieci w całym centrum danych, które z kolei wszystkie są dostarczane i zarządzane za pośrednictwem interfejsów API ze wspólnymi mechanizmami uwierzytelniania lub poprzez pulpit nawigacyjny (pomagający administratorom zarządzać, a użytkownikom udostępniać zasoby). OpenStack oferuje wsparcie dla wirtualizacji i koneneryzacji, zawiera także funkcjonalności dodatkowe, jak orkiestracja (integracja z Kubernetesem), zarządzanie usterkami, czy zarządzanie usługami wewnątrz innych serwisów.

Autorzy

Artykuły na blogu są pisane przez osoby z zespołu EuroLinux. 80% treści zawdzięczamy naszym developerom, pozostałą część przygotowuje dział sprzedaży lub marketingu. Dokładamy starań, żeby treści były jak najlepsze merytorycznie i językowo, ale nie jesteśmy nieomylni. Jeśli zauważysz coś wartego poprawienia lub wyjaśnienia, będziemy wdzięczni za wiadomość.