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.