Konténer vagy virtuális gép erőforrás szerint

Konténer vagy virtuális gép? CPU és RAM alapján érdemes dönteni
A 1b.hu szakmai szemlélete a megfelelő erőforrás-architektúra kiválasztásához
A modern informatikai rendszerek fejlesztése és üzemeltetése során egyre gyakrabban merül fel a kérdés, hogy adott szolgáltatást konténerben vagy teljes értékű virtuális gépen érdemes-e futtatni. A döntés sokszor első pillantásra technológiai ízlés kérdésének tűnik, valójában azonban mélyen beágyazódik az adott alkalmazás erőforrásigényeibe, valamint a skálázhatóság, rendelkezésre állás és biztonság szempontjaiba. A 1b.hu környezetében – ahol a szerverpark optimalizáltsága, energiahatékonysága és a felhasználói igények pontos kiszolgálása elsődleges – a kérdés nem teoretikus, hanem napi szintű, gyakorlati jelentőséggel bír.
A konténerizáció egyre népszerűbb megközelítés, hiszen gyors, rugalmas és kis erőforrás-igényű megoldásokat kínál. Egy konténer a host rendszer kernelét használja, így nem szükséges számára külön operációs rendszer példány, mint egy virtuális gép esetében. Ez a megközelítés rendkívül hatékony, ha az adott szolgáltatás stateless, könnyű és gyorsan újraindítható. Ilyen eset lehet például egy egyszerű API, proxy, cache vagy olyan kiszolgáló komponens, amelynek nincsen hosszú életciklusa, és nem tárol közvetlenül adatot. A 1b.hu több, mikroszolgáltatás-alapú rendszerében is konténerek látják el ezeket a funkciókat, jellemzően korlátozott CPU- és memóriahasználat mellett. Ezek a konténerek akár néhány száz milliszekundum alatt is újraindulhatnak, és hibakezelés szempontjából is sokkal agilisebbek, mint a klasszikus virtuális gépek.
Más a helyzet, ha az alkalmazás állapotot kezel, adatbázisokat működtet, vagy speciális kernel modulokat igényel. Ilyen környezetben már nem elég a konténerizált működés nyújtotta gyorsaság és könnyedség, mert a rendszer egészének stabilitása és kiszámíthatósága sokkal fontosabb. Egy konténer például nem képes megfelelően biztosítani a dedikált erőforrásokat egy komolyabb háttérrendszer számára, ahol például négy vagy több processzormag folyamatos használata, és legalább 8 GB memória stabil rendelkezésre állása szükséges. Ráadásul, ha egy alkalmazás olyan funkciókat használ, mint például ZFS, SELinux vagy bármilyen kernel-szintű hálózati beavatkozás, azt konténerben nem, vagy csak komoly kompromisszumokkal lehet megvalósítani. A 1b.hu ilyen esetekre mindig virtuális gépet alkalmaz, különösen, ha az SLA alapján garantált teljesítményt, elszigeteltséget és kiszámíthatóságot kell biztosítani.
A döntés tehát elsősorban nem a technológiai divatok mentén dől el, hanem annak alapján, hogyan viselkedik az adott szolgáltatás a való életben. Egy jól megírt, könnyű alkalmazás remekül skálázható konténerként, amíg nem lépi át az erőforrás-korlátokat, és nem igényel hosszú távú állapotkezelést vagy speciális kernel-hozzáférést. Ezzel szemben egy komplex adatkezelő rendszer, amely napi szinten több tízezer tranzakciót dolgoz fel, és garantált rendelkezésre állást követel meg, csakis jól izolált, erőforrás-szinten biztosított virtuális környezetben működtethető megbízhatóan.
A 1b.hu architektúrai döntéseiben mindig szerepet kap a teljes rendszerterhelés hosszú távú előrejelzése is. Nemcsak azt vizsgáljuk, hogy az alkalmazás ma mennyi CPU-t és memóriát igényel, hanem azt is, hogyan skálázódik terhelés alatt, és mi történik, ha több példány fut párhuzamosan. Az is lényeges, hogy milyen gyorsan kell újraindulnia egy szolgáltatásnak egy esetleges hibát követően, valamint hogy az erőforrások túlhasználata esetén hogyan reagál a rendszer: szétosztja a terhelést, leáll, vagy teljesen új példányokat kell indítani. Ezekre a kérdésekre más-más válaszokat ad egy konténerizált és egy virtualizált architektúra.
Nem szabad megfeledkezni arról sem, hogy a megfelelő döntés nemcsak technikai, hanem gazdasági kérdés is. Egy túlméretezett virtuális gép feleslegesen égeti a szerverpark erőforrásait, míg egy túlterhelt konténer kiszámíthatatlanná teheti a teljes rendszert. A 1b.hu egyik alapelve, hogy az adott szolgáltatáshoz pontosan illeszkedő környezetet biztosítunk: se nem túl nagyot, se nem túl kicsit, hanem célzottan azt, amire ténylegesen szükség van.
Az összkép tehát világos. A konténer és a virtuális gép nem egymás riválisai, hanem különböző eszközök különböző célokra. Aki jól ismeri az alkalmazás viselkedését és pontosan látja annak erőforrásigényeit, az képes lesz meghozni a helyes döntést. A 1b.hu számára ez a szemlélet alapértelmezett: nem választunk eszközt technológiai divat alapján, hanem az alapján, mi szolgálja legjobban az adott rendszer stabilitását, teljesítményét és hosszú távú fenntarthatóságát.