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.