Čím ďalej, tým častejšie sa vo svojej práci stretávame s požiadavkami na prevádzku aplikácií v kontajneroch. Nie je to len požiadavka vývojárov, ktorí majú radi všetko nové, ale aj potreba IT prevádzky mať jednotnú platformu, ktorá poskytuje čo najviac priestoru vývojárom pri zachovaní prevádzkových parametrov, najmä bezpečnosti a dostupnosti. Vďaka kontajnerom je spokojný aj „biznis“, pretože nasadenie požadovaných zmien v aplikáciách trvá výrazne kratšiu dobu.

Takýto ideálny scenár však v praxi naráža na niekoľko prekážok. Jednou z nich je nekoordinované nasadenie kontajnerovej platformy. Obvykle s kontajnermi prichádzajú vývojári. A je to pochopiteľné, pretože nainštalovať si Docker a začať tvoriť kontajnery s aplikáciami je veľmi jednoduché a „kontajnerizáciou“ im odpadnú problémy, s ktorými sa doteraz stretávali. Svoju prácu (nové aplikácie alebo ich úpravy) sú schopní odovzdať formou kódu vrátane prostredia, a to v kontajneri, ktorý je prakticky nezávislý na okolitom svete. Toto riešenie má veľké výhody v podobe prenosnosti medzi rôznymi runtime prostrediami (firemná infraštruktúra, verejný cloud alebo počítač kolegu) a jasne popísanými závislosťami. Lenže existencia kontajnera nestačí, je nutné ho niekde prevádzkovať, a to už je úloha pre ľudí z IT prevádzky.

Zdanlivo správne riešenie

Na základe zadania vývojárov začne IT prevádzka budovať platformu na prevádzku kontajnerov. Keď si ohmatajú Docker a zamyslia sa nad požiadavkami na túto platformu, musí zákonite dospieť k rozhodnutiu, že je potrebné postaviť platformu, ktorá bude vedieť koordinovať beh veľkého množstva kontajnerov, riešiť ich štartovanie, distribúciu medzi rôznymi servermi a škálovanie aplikácií. A tak siahnu po Kubernetes, platforme na orchestráciu kontajnerov, ktorá je presne vyvíjaná na riešenie týchto požiadaviek.

Vzniká tak vysoko dostupná, orchestrovateľná platforma na prevádzku kontajnerov, závislostí medzi nimi, ich správou a organizácií. Kontajnerizovaných aplikácií pribúda, platforma rastie a stáva sa z nej dôležitá súčasť firemného prostredia. A objavujú sa ďalšie požiadavky – na strane IT prevádzky rastie potreba štandardného kontajnerového vybavenia, ako sú verzie programovacích jazykov alebo nastavenie a zaistenie bezpečnosti, monitoring platformy a škálovanie. Na strane vývojárov sú to požiadavky na automatizáciu CI / CD procesov do platformy. Spoločným menovateľom sú ale rastúce nároky na prácnosť na oboch týchto frontoch. Vývojári chcú rýchlejšie vyvíjať a meniť prostredie, IT prevádzka nestíha ich požiadavky zapracovávať a zároveň udržiavať celú platformu aktuálnou a bezpečnou. Navyše zmeny v nástrojoch na správu kontajnerov, Kubernetes a ďalších komponentoch prebiehajú veľmi rýchlo a zvyšujú nároky na znalosti i nasadenie pracovníkov IT prevádzky. Celá platforma sa začína nafukovať, jej komplexita rastie, rovnako ako jej závislosť na niekoľkých ľuďoch s vysokou odbornosťou. To môže byť nebezpečné.

A tu výrazne rastie riziko, že jedného dňa prestane niečo fungovať a človek s odbornou znalosťou nebude v dosahu. V lepšom prípade ho niekto aspoň čiastočne zastúpi, v horšom prípade chyba zasiahne „biznis“.

Mýty a fakty

Nespočetne organizácií si pri hľadaní vhodného riešenia kontajnerovej platformy prešlo rovnakou cestou. A tak plne v súlade s princípom otvorenosti poučme sa z doterajších omylov a riaďme sa overenými postupmi. Medzi tie najviac diskutované omyly patrí aj dojem, že komunitné, nepodporované verzie technológií či produktov sú zadarmo. Áno, to síce sú, ale vo výsledku vyjde implementácia výrazne drahšie ako technológie od prevereného, ​​spoľahlivého partnera. Dôvod je jednoduchý – komunitné verzia sa veľmi rýchlo menia, je potreba často vykonávať zmeny v prostredí a aktualizovať. Nie je na koho sa obrátiť, keď je potreba, a je tu viac práce s obsahom. Oproti tomu v produktizovanej verzii je už všetko pripravené na nasadenie do produkcie vrátane vždy dostupnej technickej aj vzdelávacej podpory partnera.

Oplatí sa zamyslieť aj nad tým, nakoľko je zvažovaná platforma kompatibilná s inými technológiami. Možnosť voľby a prípadné zmeny použitých nástrojov a využitie všetkého, čo je nielen dnes, ale bude aj v budúcnosti k dispozícii, je úplne zásadné.

Stretávame sa aj s názorom, že stačí „mať“ len kontajnery, bez komplexnejšieho prístupu v podobe spolupráce a integrácie medzi vývojármi a IT odborníkmi z prevádzky. Napríklad Openshift toto umožňuje, ale ako z praxe vieme, vzájomná závislosť vývoja softvéru a IT prevádzky je nepopierateľná, a tak skôr či neskôr vás potreba DevOps prístupu doženie. Začnite ju radšej uplatňovať hneď od začiatku. Aj tu sú dôvody jednoduché, len kontajnery s Kubernetes alebo podobné technológie nestačia. Ich použitie nepokryje reálne požiadavky na vývoj a prevádzku aplikácií. CI / CD, Jenkins, Maven, Java, audit, SDN, security, multitenancy – to je len časť tém, ktoré v reálnej prevádzke budete riešiť a iba sofistikovaná platforma vám ich pomôže efektívne orchestrovať. Zároveň pre vývojárov aplikácií sú zaujímavé nové postupy a technológie ako serverless, AI / ML, sprostredkovanie služieb a API ďalším vývojárom a podobne. V takom prípade sa hodí podpora OpenShiftu na jednoduchú inštaláciu a prácu s týmito technológiami buď s podporou Red Hatu alebo komunít okolo týchto technológií.

OpenShift spája všetky tieto aspekty a požiadavky na prevádzku aplikácií v kontajneroch do jedného celku tak, aby uľahčil prácu nielen obom svetom – vývojárom a IT prevádzke, ale predovšetkým umožnil balansovať prevádzku, jednoducho spravovať kontajnery, koordinovať všetky procesy a zároveň mať kontrolu nad celou infraštruktúrou a jej prostriedkami.

Autor: Radek Vokal, senior engineer manager, Red Hat

Značky: