Konténerizáció
Manapság rengeteg divatos kifejezést hallhatunk, például Docker, konténerizáció, Kubernetes vagy mikroszolgáltatások. Mit jelentenek ezek a kifejezések?
A konténer egy futó alkalmazás és minden, ami a futtatásához szükséges. Ez a futtatókörnyezettel és a rendszerkönyvtárakkal együtt az alkalmazás kódját is tartalmazza, így bárhol futtatható.
A Docker egy konténerizációs környezet. Lehetővé teszi a konténerek létrehozását, indítását, kezelését és átvitelét.
A Kubernetes egy orchestrációs eszköz. Lehetővé teszi, hogy több szervert kombináljunk a Dockerrel, amelyek így "egy nagy Dockerként" működnek, továbbá számos érdekes funkcióval bővíti őket.
A mikroszolgáltatások az alkalmazásarchitektúra egy olyan típusa, amelyben az alkalmazás részleges funkcionalitását független, gyakran konténerekben futó alkalmazásokra osztják fel.
Miért ajánlott e technológiák használata? Milyen problémákat old meg?
Bár sok fejlesztő nem akarja beismerni, a bal oldali oszlop gyakran tükrözi a fejlesztett alkalmazások valós állapotát. A jobb oldali oszlopban az alkalmazásfejlesztés ideális állapota látható.
Számos alkalmazás problémái
- Az alkalmazás hosszú karbantartása (min. 15 év), lassú vagy lehetetlen változtatások.
- Egyetlen hiba egy egész alkalmazást megbéníthat, és nehéz megtalálni.
- Az operációs rendszer vagy a környezet frissítései negatívan befolyásolhatják az alkalmazás működését.
- Felfelé skálázás - egy nagy szerver.
- A fejlesztőnek foglalkoznia kell azon környezetek kölcsönös kompatibilitásával, amelyekben az alkalmazás fut.
- Minden gépen speciálisan erre a célra kialakított környezetre vagy kódra van szükségünk.
- Egy csapat, amelynek minden lépésnél együtt kell működnie.
- Bonyolult vagy semmilyen dokumentáció - nehéz betanítani egy új programozót.
- Hólabda - bővülő funkció.
- Rögzített technológia és annak változatai.
- Frissítéskor a teljes alkalmazást módosítani kell.
- Párhuzamos verzió telepítésekor új szerverre van szükség.
Preferált állapot
- Gyors és interaktív változtatások, új funkciók és technológiák bevezetése.
- A hiba csak egy kis részt dob le, míg az alkalmazás többi része gond nélkül működik.
- A konténerizáció a frissítések után is konzisztens környezetet biztosít.
- Skálázás kifelé - konténerizáció hozzáadása.
- Nem érdekel minket, hogy hol fut az alkalmazás, az mindig kompatibilis lesz a felhasználói környezettel.
- A konténer minden eszközön ugyanolyan lesz, és a viselkedése is ugyanaz lesz.
- Független csapatok/fejlesztők.
- A részalkalmazások egyszerűek és könnyen érthetők - gyorsan megtanulhatók.
- Az egyes alkalmazások lehetséges forradalmai.
- A választás szabadsága, minden rész önállóan használhatja a saját technológiáit és verzióit.
- A párhuzamos verzió telepítésekor elegendő egy új konténer.
- Hatékony erőforrás-felhasználás és költségcsökkentés.
Van egyáltalán bármilyen hátránya?
Igen, a hagyományos fejlesztési környezetekről ezekre a modern trendekre való áttérés némi erőfeszítést igényel, mi azonban szívesen segítünk ebben.
Séma - háromrétegű monolitikus alkalmazás egy fizikai gépen vagy VPS-en x háromrétegű alkalmazáskonténer mikroszolgáltatási architektúrában.