Vlastnosti prostredia DevOps

DevOps nie je exaktne zdokumentovaná metodika. Dá sa však povedať, že v dobrom DevOps prostredí sa veľmi často vyskytujú nasledovné vlastnosti:

Spolupráca a komunikácia (Collaboration and communication)

Namiesto vzájomného sa obviňovania pri neúspechu musia jednotlivé tímy pôsobiť ako jednotný celok. Počas celého životného cyklu aplikácie nielen vývoj a prevádzka, ale aj testovanie, kvalita, manažment, podpora a ostatné tímy musia spolupracovať.

Spätná väzba (Feedback)

Aktívna komunikácia so zákazníkom je kľúčová – a to s externým aj interným zákazníkom! Jedným z cieľov DevOps je schopnosť organizácie pružne reagovať a rýchlo realizovať zmeny. Pri dodávaní softvéru tento cieľ vyžaduje, aby mala organizácia rýchlu spätnú väzbu a následne bola schopná reagovať a rýchlo sa z toho poučiť. Je preto potrebné vytvoriť komunikačné kanály, aby k nej všetky zainteresované strany mali prístup a mohli na spätnú väzbu reagovať. Toto planí na všetky zúčastnené strany ako je zákazník, dodávateľ, ale aj interne v tíme, ba dokonca cez nástroje. Napríklad, je dôležité, aby developer mal rýchlu spätnú väzbu (v minútach), že jeho kód neprešiel záťažovými testami v testovacom prostredí.

Automatizácia (Automation)

Kľúčová, nie však jediná, charakteristika DevOps prostredia je automatizácia. Pre zabezpečenie kvality, rýchlosti a vysokého množstva požiadaviek (meniaceho sa kódu) je potrebná vysoká miera podpory nástrojmi. Vo vývoji, testovaní, nasadzovaní… Všetky tieto kroky je potrebné automatizovať, ale tiež ako jeden celok pre end-to-end vývoj a nasadenie.

Verzionovanie (Version Control)

Všetko musí byť uložené v systéme / repozitári, ktorý riadi verzionovanie. Tu nehovoríme len o ukladaní zdrojového kódu, ale o všetkom, čo súvisí s IT systémami (testy, skripty na správu databáz, build skripty, skripty na vytváranie prostredí, skripty na deployment, ostatné artefakty, knižnice, dokumentácia a podobne). Tento princíp umožňuje bezprecedentnú úroveň kontroly nad všetkými časťami prevádzkovaného systému.

Priebežná integrácia (Continuous Integration)

V súlade s Agile kultúrou sa Continuous integration prirodzene vyskytuje aj v DevOps kultúre.

Continuous Integration – je praktika pri vývoji softvéru, kedy vývojári odovzdávajú a integrujú výsledky svojej práce pomerne často – denne, prípadne častejšie. Následne je kód validovaný cez automatizovaný build unit, integračné a akceptačné testovanie. Takýto postup umožní skôr identifikovať prípadné chyby a nedostatky.

Priebežná dodávanie (Continuous Delivery)

Continuous Delivery posúva Continuous Integration na ďalšiu úroveň. Je to metodika, pomocou ktorej dokážeme zabezpečiť, že softvér je počas celého svojho životného cyklu kedykoľvek v nasaditeľnom, čiže je v „releasable“ stave. Pomocou Continuos delivery môžeme softvér kedykoľvek na požiadanie nasadiť (push the button / manual).

Priebežné nasadzovanie (Continuous Deployment)

Aký by to malo zmysel, keby kvalitný kód (aplikácia) ostali iba v DML (Definitive Media Library – repozitár, úložisko nasaditeľných verzií). Plynulé nasadzovanie je neoddeliteľnou súčasťou DevOps a je charakterizované častejšími a jednoduchšími releasmi, ktoré sa po úspešnom absolvovaní všetkých testov automatizovane dostávajú do produkčného prostredia.

devops_cd_cd

Deployment pipeline

Automatizované spracovanie zmien cez všetky kroky hodnotového toku a to od bodu keď „je napísaný kód“ až po „nasadenie do prevádzky“.

Nepretržité testovanie (Continuous Testing)

Nepretržité testovanie s využitím vysokého stupňa automatizácie je nevyhnutnou súčasťou DevOps. Nie je to náhrada zabezpečenia kvality. V prostredí DevOps je do testovania zapojený každý, a každá časť hodnotového toku (Value Stream). Vývojári nielen testujú svoj kód, ale sa podieľajú na integračných testoch, odporúčajú testovacie metódy, definujú a pripravujú testovacie prostredie. Prevádzka (Ops) monitoruje testovacie prostredie, stará sa o jeho konfiguráciu, podieľa sa na ďalších testoch. Táto spolupráca spolu s automatizáciou prinášajú úsporu času, zvýšenie kvality a znižujú sa náklady potrebné na testovanie.

Nepretržitý monitoring a spätná väzba (Continuous Monitoring and Feedback)

Častejšie releasy a viac kódu predstavuje vyššie riziko pre produkčné prostredie. Server monitoring, Application Performance Monitoring a Spätná väzba od zákazníka (Continuous customer feedback) prináša možnosti, ako znížiť toto riziko. Cieľom je byť schopný identifikovať, vyhodnotiť a iniciovať riešenie prípadného výpadku, alebo chyby. A tak ako testovanie, aj monitoring musí byť aplikovaný počas celého životného cyklu aplikácie. Od vývoja až po prevádzku.

Okrem technických meraní nové technológie umožňujú zbierať informácie o správaní sa zákazníka, prípadne identifikovať chyby priamo počas používania aplikácie. Tieto informácie sú cenným zdrojom pri samotných riešeniach, zlepšovaní aplikácie či zákazníckej spokojnosti. Táto nepretržitá spätná väzba je neodmysliteľnou súčasťou DevOps, umožňujúca organizácii byť viac pružnou a schopnou reagovať na potreby zákazníka.

Neustále zlepšovanie (Continual improvement)

V skutočnom Lean prostredí, implementácia procesov nie je jednorazová záležitosť, ale sa jedná o priebežný proces. Organizácia musí mať zavedený proces, ktorý identifikuje možné zlepšenia, vyhodnocuje ich, stará sa o ich prípadnú implementáciu a vie sa z týchto zlepšení poučiť. Nie je ani tak podstatné, či je zlepšovanie formalizované, centrálne riadené, alebo vykonávané len na úrovni tímov. Dôležité je zabezpečiť neustále zlepšovanie.

Infraštruktúra ako kód (Infrastructure as Code)

Infraštruktúra ako kód je jedna z hlavných schopností DevOps, ktorá umožňuje organizácii riadiť mieru a rýchlosť, s akou sú prostredia vytvárané a konfigurované tak, aby umožnili plynulé nasadzovanie. Vnímanie infraštruktúry ako kódu je vnímanie softvérovo definovaného prostredia (typické pre cloud a virtualizáciu). 

Chcete sa dozvedieť viac o DevOps?