Virtualizáció
A virtualizáció egy olyan technológia, amely lehetővé teszi egy számítógépes rendszer vagy fizikai infrastruktúra virtuális létrehozását a hipervizor használatával. A hypervisor egy absztrakciós réteg amely az operációs rendszer és a virtuális gép között helyezkedik el, és emulálja a mögöttes fizikai hardvererőforrásokat, beleértve a CPU-t, a RAM-ot, a tárolási hálózati interfészt és más hardvererőforrásokat.
A virtual machine (VM) vagy virtuális szerver, olyan számítógépes erőforrás, amely emulálja az alapul szolgáló számítógépes hardvert. Ez egy virtuális környezet, amely a hypervisor felett fut, saját memóriával, CPU-val, tárolóval, USB-vel, hálózati interfészekkel és egyéb erőforrásokkal, amelyek a fizikai hardvertől elvonatkoztatnak. A virtuális gépnek saját operációs rendszere van, a Guest OS, amely a host géptől függetlenül fut.

1.Ábra. Virtual Machine architecture
A hipervizorok két kategóriába sorolhatók:
- 1-es típusú vagy csupasz fém hipervizorok
- 2-es típusú vagy hosztolt hipervizorok
A különbség a két hipervizor tipus között:
Az 1-es típusú hipervizorokat, a bare-metal hipervisorokat, közvetlenül a rendszer hardverére telepítik, és operációs rendszerként működnek. Mivel közvetlen hozzáférésük van az alap számítógépes hardverhez anélkül, hogy az erőforrásokat bármely operációs rendszerrel megosztanák, az 1-es típusú hipervizorok tekinthetők a leghatékonyabbnak és a legalkalmasabbnak vállalati környezetben. Az 1-es típusú hipervizorokra példa a VMware ESXi, a KVM, a Citrix XenServer vagy a Microsoft HyperV.
A 2-es típusú vagy hosztolt hipervizorok az operációs rendszer tetején futnak és nem lehet ezeket közvetlenül hardverre telepíteni. Mivel a host gép operációs rendszerére támaszkodnak, igy „hosted hypervisornak” is nevezik őket. A 2-es típusú hipervizorokat a kliens oldalon használják, népszerűek adatközpontokban lévő virtuális szerverek futtatására, valamint a szoftverfejlesztők és programozók által alkalmazások és operációs rendszerek tesztelésére. A 2-es típusú hipervizorokra példa az Oracle VirtualBox és a VMWare Workstation.
Konténerizáció
A Konténerizáció egy virtualizációs technológia, amely konténereket használ alkalmazások csomagolására és szállítására. A konténerek könnyű, hordozható, elszigetelt egységek, amelyek az alkalmazás futtatásához szükséges összes összetevőt tartalmazzák: könyvtárakat, binárisokat, függőségeket, keretrendszereket stb. Az összes követelmény egyetlen szabványos egységben történő összecsomagolása lehetővé teszi a konténerek megbízható futtatását bármilyen számítási környezetben, legyen szó Linuxról, MacOS-ról, Windowsról vagy olyan architektúrákról, mint a felhő vagy a bare-metal platformok. A virtuális gépekkel ellentétben a konténerek nem futnak hipervizoron. Ehelyett egy konténer motoron (container engine) futnak, és megosztják a host gép OS kerneljét és erőforrásait. Ezenkívül a konténerek nem tartalmaznak operációs rendszer image-ket, és ez könnyebbé és hordozhatóbbá teszi őket a virtuális gépekhez képest.
Az ismertebb konténeres szolgáltatók: Docker, AWS Fargate, LXC, Java konténerek.

2.Ábra. Container architecture
Virtualizáció vs. Konténerizáció
A virtualizáció lehetővé teszi virtuális gépek (VM-ek) létrehozását az alapként szolgáló hardvererőforrásokon egy absztrakciós réteg felhasználatával. Ez az absztrakciós réteg a hipervizor. Egyazon fizikai gépen több virtuális gép (VM) hozható létre és indítható el, amelyek mindegyike más operációs rendszert futtat. A virtuális gépek ugyanazokat az erőforrásokat (memóriát, tárhelyet és processzorokat) osztják meg a host rendszeren, amelyen futnak.
A konténerizáció a virtualizáció egy olyan formája, ahol egy alkalmazás a kódjával, a könyvtáraival, a dependenciáival és minden mással együtt van csomagolva, ami szükséges, hogy egy konténerként ismert egységben futhasson. A konténer egy könnyű és hordozható egység, amely minden számítástechnikai platformon fut. A konténerek erőforrás kimélőbbek és jobban méretezhetők, mint a virtuális gépek. A virtuális gépekkel ellentétben ugyanazt az OS kernelt használják, mint a host gép, és nincs hardver erőforrás absztrakció. A konténerek a kulcsfontosságúak a mikroszolgáltatási architektúrában, és a Continuous Integration and Continuous Delivery (CI/CD) szerves részét képezik.
Mind a virtualizáció és a konténerizáció költséghatékony, és alkalmas az erőforrások elkülönítésére, ami ideális az alkalmazások és mikroszolgáltatások futtatásához. A kettő azonban néhány szempontból különbözik.
A virtuális gépekhez operációs rendszer telepítése szükséges az alkalmazások futtatásához és hosztolásához, ami miatt a virtuális gépek nagy lemezterületet foglalnak.
A konténerek nem rendelkeznek guest operációs rendszerrel. Ehelyett ugyanazon a kernelen futnak, mint a host gép operációs rendszere. Ennek eredményeként a konténerek kis helyigényűek, és általában néhány megabájt helyet foglalnak el, ami hordozhatóbbá és erőforrás hatékonyabbá teszi őket, mint a virtuális gépek.
Mivel a konténerek nem rendelkeznek guest operációs rendszerrel, hanem ugyanazon a kernelen futnak, mint a host gép operációs rendszere a konténerek allplikáció izolációja nem éri el a virtuális gépekét. Ez olyan helyen jelenthet gondot ahol fontos a virtualizált applikációk magas szintű védelme, izoláltsága.
A virtuális gépek a számítógép hardverének összes hardverrétege virtualizált a hipervizor által, ami megkönnyíti a mögöttes erőforrások absztrakcióját. Ez nagy erőforrás igényű, mivel az erőforrásokat a host gép operációs rendszerével is megosztják.
A konténerek minimális többletköltséggel járnak, mivel a hardvererőforrások nem virtualizálódnak. A konténerek szabványosítást biztosítanak az alkalmazások futásának módjára.
A konténeres alkalmazások konzisztensen futnak, legyen szó akár bare-metal szerverről, virtuális gépről vagy felhő környezetről. Ennek eredményeként a szoftverfejlesztők konténerekre támaszkodnak a modern alkalmazásokat alkotó mikroszolgáltatások csomagolásához.
Virtuális gépek esetén az alkalmazások hibákat vagy következetlenségeket tapasztalhatnak, amikor egyik virtuális gépről a másikra portolják át a dependency-k és a könyvtárak ütközése miatt. Ezért van, hogy a konténerek az élen járnak a mikroszolgáltatások és alkalmazások bevezetésében.

