Kontejnerizácia


Dnes okolo nás počujeme veľa populárnych slov, ako je Docker, kontajnerizácia, Kubernetes alebo microservices. Čo znamenajú všetky tieto pojmy?

Kontajner je spustená aplikácia spolu so všetkým, čo k behu potrebuje. Preto obsahuje kód aplikácie spolu s runtime prostredím a systémovými knižnicami tak, že môže bežať kdekoľvek.

Docker je kontajnerizačné prostredie. Umožňuje nám vytvárať, spúšťať, spravovať a prenášať kontajnery.

Kubernetes je orchestračný nástroj. To nám umožňuje pripojiť niekoľko serverov s Dockerom, aby sa správali ako "jeden veľký Docker" a pridáva k ním mnoho zaujímavých funkcií.

Mikroslužby sú druh architektúry aplikácií, kde sú samotné funkcionality aplikácie rozdelené na nezávislé aplikácie, často prevádzkované v kontajneroch.

Prečo používať tieto technológie? Aké problémy riešia?

Či si to mnohí vývojári nechcú priznať, tak ľavý stĺpec častokrát odráža skutočný stav vyvíjaných aplikácií. V pravom stĺpci je ideálny stav, ako by mal vývoj aplikácií vyzerať.

Problémy mnohých aplikácií

  • Dlhá údržba aplikácie (min 15 rokov), pomalé alebo dokonca nemožné zmeny.
  • Jedna chyba môže znehybniť celú aplikáciu a je ťažké ju nájsť.
  • Aktualizácie operačného systému alebo prostredia môžu negatívne ovplyvniť fungovanie aplikácie.
  • Škálovanie hore - jeden veľký server.
  • Vývojár musí riešiť kompatibilitu prostredia, v ktorých aplikácia beží.
  • Na každom stroji musíme mať špeciálne prispôsobené prostredie alebo kód.
  • Jeden tím, ktorý musí spolupracovať na každom kroku.
  • Komplexná alebo žiadna dokumentácia – komplexné učenie nového programátora.
  • Snehová guľa – nabaľujúce sa funkcie.
  • Pevne daná technológia a jej verzia.
  • Počas aktualizácie je potrebné upraviť celú aplikáciu.
  • Pri nasadzovaní paralelnej verzie sa vyžaduje nový server.
 

Stav, ktorý chceme

  • Rýchle a interaktívne zmeny, nasadenie nových funkcií a technológií.
  • Chyba zhadzuje len jednu malú časť, a zvyšok aplikácie funguje bez problémov.
  • Kontajnerizácia zaručuje konzistentné prostredie aj po aktualizáciách.
  • Škálovanie vonku - pridávame kontajnerizáciu.
  • Je nám jedno, kde aplikácia beží, bude vždy kompatibilná s užívateľským prostredím.
  • Kontajner bude rovnaký na všetkých zariadeniach a jeho správanie tiež.
  • Samostatné tímy/vývojári.
  • Samostatné aplikácie sú jednoduché a to aj na pochopenie - rýchle učenie.
  • Možné revolúcie pre jednotlivé aplikácie.
  • Sloboda vo výbere, každá časť môže používať svoje vlastné technológie a ich verziu nezávisle.
  • Pri nasadzovaní paralelnej verzie postačuje nový kontajner.
  • Efektívne využívanie zdrojov a znižovanie nákladov.

Majú vôbec nejaké nevýhody?

Áno, prechod z tradičného vývojového prostredia na tieto moderné trendy vás bude stáť určité úsilie, radi vám s tým pomôžeme.

Schéma – trojvrstvová monolitická aplikácia na fyzickom stroji alebo VPS x kontajneri trojvrstvovej aplikácie v architektúre mikroslužby.