A virtualizáción túl a konténeres szállítmányozás is példátlan ütemben fejlődik. Ebben a blogbejegyzésben a virtualizáció alapjaival foglalkozunk, és bevezetjük Önt a konténereken alapuló szállítás világába, áttekintjük a virtuális gépek és a konténerek közötti különbséget, végül pedig beszélünk a konténerek és a tárolás kapcsolatáról.

A virtualizáció alapjai
A virtualizáció a fizikai hardvertől elvonatkoztatott, szimulált számítástechnikai környezet létrehozása. Lehetővé teszi, hogy a hardver- és szoftverkomponensekből több virtuális példányt hozzon létre. Ezek a példányok többnyire lehetnek hagyományos értelemben vett számítógépek, és lehetnek alkalmazások, kiszolgálók vagy hálózati konfigurációk is.
A hipervizor egy olyan számítógépes szoftver, amely virtuális gépeket hoz létre és futtat. Ez egy könnyű szoftverréteg, amely a fizikai hardver és a virtualizált környezet között helyezkedik el. A hipervizor a közvetítő, aki az infrastruktúra nyersanyagaiból kivonja az erőforrásokat, és a különböző számítási példányokhoz irányítja azokat.
A virtuális gépek és a konténerek
A virtualizáció lehetővé teszi, hogy a számítógépek úgynevezett virtuális gépeket (Virtual Machine – VM) hozzanak létre. Ezek egy hipervizorszoftveren futnak biztosítva, hogy több operációs rendszer (OS) osztozhasson ugyanazon a mögöttes fizikai hardveren, és egymástól elszigetelten működjenek. A hypervisor virtualizálja az alapul szolgáló hardvert, és minden VM saját operációs rendszert futtat. A népszerű VM-szolgáltatók közé tartozik többek között a VMware, a Microsoft Hyper-V, a Virtual Box, és a Xen.
A konténerek szintén a szoftveresen definiált számítástechnika példányai, azonban egy megosztott host operációs rendszeren futnak. A szoftvert hordozható, futtatható egységekbe csomagolják, minden olyan függőséggel együtt, amely a bárhol, például szervereken, laptopokon és felhőkben való futtatáshoz szükséges. A népszerű konténereszközök közé tartozik többek között az LXC (Linux Containers), a Docker, és a Kubernetes.
Monolitikus és mikroszolgáltatási architektúra
A monolitikus architektúra a szoftverprogramok hagyományos modellje. Egységesen épül fel, amely önálló és más alkalmazásoktól független. A monolitikus architektúrával történő fejlesztés során a fő előny a fejlesztés gyorsasága, mivel az alkalmazás nagyon egyszerű módon egyetlen kódbázisra épül.
A konténerek használatával az alkalmazások a legkisebb összetevőkre vagy “szolgáltatásokra” bonthatók, amelyek egyetlen célt szolgálnak, és ezek a szolgáltatások egymástól függetlenül fejleszthetők és telepíthetők. A mikroszolgáltatások nem csökkentik a komplexitást, de láthatóvá és könnyebben kezelhetővé teszik azáltal, hogy a feladatokat kisebb, egymástól függetlenül működő, az egészhez hozzájáruló folyamatokra bontják.
Tegyük fel például, hogy van egy olyan alkalmazása, amely biztosítja az ügyfelek számára, hogy termékeket vásároljanak. Lehet egy keresősáv, egy kosár, egy vásárlás gomb stb. Mindegyik “szolgáltatás” élhet a saját konténerében, így ha a keresősáv a nagy terhelés miatt meghibásodik, az nem teszi működésképtelenné a többi egységet.

Anélkül, hogy az összes operációs rendszer kódját magunkkal kellene cipelnünk, a konténerek könnyebbek (megabájtok, szemben a VM-ek gigabájtjaival) és gyorsabban indulnak, mint a VM-ek. A konténerekkel kétszer-háromszor annyi alkalmazás futtatható egyetlen kiszolgálón, mint a VM-ekkel. Már csak ez alapján is azt lehet állítani, hogy a konténereké a jövő.
A virtuális gépek és a konténerek felhasználási esetei
Mind a VM-ek, mind a konténerek rendelkeznek előnyökkel és hátrányokkal, így a végső döntés a felhasználó egyedi igényeitől függ.
A VM-ek jobb választásnak bizonyulnak az olyan alkalmazások futtatásához, amelyek az operációs rendszer összes erőforrását és funkcióját igénylik, ha több alkalmazást kell futtatni a szervereken, vagy sokféle operációs rendszert kell kezelni. Ha van egy meglévő monolitikus alkalmazása, amelyet nem kell mikroszolgáltatásokká refaktorálnia, a VM-ek továbbra is jól szolgálják a felhasználási esetet.
A konténerek jobb választásnak bizonyulnak, ha a legnagyobb prioritás a minimális számú szerveren futó alkalmazások vagy szolgáltatások számának maximalizálása, és ha maximális hordozhatóságra van szükség. Ha Ön új alkalmazást fejleszt, és a skálázhatóság és hordozhatóság érdekében mikroszolgáltatási architektúrát szeretne használni, a konténerek jelentik a megfelelő megoldást. A konténerek kimagasló hatékonyságúak, ha mikroszolgáltatási architektúrán alapuló felhő-natív alkalmazásfejlesztésről van szó.
A konténerek klaszteres implementálása külső tárolót igényel

A konténerek előnye, hogy a terheléstől függően gyorsan fel- vagy leállíthatók. A Pod konténereket és tárolókat tartalmaz. Egy fürtben, amikor a terhelés csökken, a Podok a terhelés csökkenése, a folyamatok összeomlás vagy más okok miatt kieshetnek. Ekkor az alkalmazás állapotát rögzíteni kell, hogy az új példányok (új Podok) induláskor megkapják az aktuális állapotot. A tartós tárolás akkor is megőrzi az adatokat, amikor az eszköz ki van kapcsolva. Ezért az alkalmazásnak a Podon kívül kell tárolnia az állapotadatait.
Bár eredetileg azt feltételezték, hogy a konténerek nem igényelnek tartós tárolást, a növekvő megvalósítások bebizonyították, hogy a konténeres alkalmazásoknál szükség van valamilyen folytonosságra. Ha például egy alkalmazás egy részét tároló konténer megszűnik, könnyebb újra létrehozni az adott konténert (helyi vagy távoli) a meglévő adatokkal, mint újra létrehozni vagy másolni azokat egy másik helyről.
A Pod létrehozásakor megadhatja a külső tárolót állandóként, lényegében a külső kötetet a konténerbe szerelve. A Podban futó konténer a külső tárolóhoz transzparens módon fér hozzá, mint bármely más helyi tárolóhoz.
A CSI összekapcsolja a konténereket a tárolási termékekkel
A CSI (Container Storage Interface) egy olyan szabvány, amely tetszőleges blokk- és fájltároló rendszereket tesz elérhetővé a konténeres munkaterhelések számára a CO (Container Orchestration) rendszereken, például a Kubernetes, Mesos, Docker vagy Cloud Foundry rendszereken. A konténer-orchestrálás a konténerizált munkaterhelések és szolgáltatások futtatásához szükséges üzemeltetési erőfeszítések nagy részének automatizálása. Ez magában foglalja a szoftvercsapatoknak a konténerek életciklusának kezeléséhez szükséges dolgok széles körét, beleértve a rendelkezésre bocsátást, a telepítést, a skálázást, a hálózatépítést, a terheléselosztást és még sok mást. A tárolószolgáltatók egy CSI bővítményt biztosítanak, hogy az több konténer-összerendezési rendszerben is működjön.
Következtetés
Röviden, a VM-ek segítségével a vállalatok a lehető legtöbbet hozhatják ki infrastrukturális erőforrásaikból azáltal, hogy a korlátozott mennyiségű hardverből és szoftverből kiszorítható gépek számát bővítik. A konténerek a mikroszolgáltatások és a DevOps-gyakorlatok lehetővé tételével segítenek a vállalatoknak a fejlesztési erőforrások maximális kihasználásában. A fürtarchitektúrában külső tároló szükséges az alkalmazás állapotának és erőforrásainak megosztásához. A CSI pedig közvetítőként működik a konténerek és a tárolók között.
Forrás: qsan.com