Programovanie

Najlepšie postupy Devops: 5 metód, ktoré by ste si mali osvojiť

Devops je teraz dôležitý v mnohých technologických organizáciách kvôli dvom zdanlivo protichodným misiám a kultúram, ktoré sa musia spojiť:

  • Agilné vývojové tímy postupujú rýchlo, aby splnili obchodné požiadavky a implementovali zmeny aplikácií.
  • Operačné tímy tvrdo pracujú na tom, aby udržali výkonnosť systémov, zaistili zabezpečenie výpočtových prostredí a spravovali výpočtové prostriedky.

Agilné tímy často považujú operačné tímy za pomalé a rigidné, zatiaľ čo systémoví inžinieri považujú agilných vývojárov za nepodporujúcich operačné potreby a bezohľadnosť, keď nasadenie aplikácií spôsobí problémy s produkciou.

Toto sú zovšeobecnenia, ale tieto dve disciplíny majú často odlišnú motiváciu, terminológiu a nástroje - a toto nesprávne nastavenie môže spôsobiť obchodné problémy. Napríklad, ako sa začínajúce podniky zväčšujú, musia vyvinúť operačné postupy na zabezpečenie stability pri minimálnom dopade na ich rýchlosť a svižnosť. Pre veľké podniky musia nájsť spôsoby, ako rýchlejšie dodať aplikácie orientované na zákazníka a vylepšenia interných pracovných tokov bez toho, aby bola ohrozená spoľahlivosť alebo vylúčenie z dodržiavania predpisov.

Devops sa zameriava na riešenie týchto konfliktov s kultúrou, súborom prevádzkových princípov a objavujúcou sa sadou najlepších postupov, ktoré umožňujú rýchlosť nasadenia aplikácií a stabilitu ich fungovania s menším počtom konfliktov a kompromisov. To sa do veľkej miery deje poskytovaním postupov, ktoré automatizujú operačné kroky a štandardizujú konfigurácie:

  • Pre vývojové tímy tieto postupy štandardizujú a automatizujú kroky od vývoja kódu po testovanie, zabezpečenie a spustenie aplikácií vo viacerých prostrediach.
  • Pokiaľ ide o operácie, postupy riadia automatizáciu pri konfigurácii a nasadzovaní infraštruktúry, monitorovaní v niekoľkých doménach a rýchlejšom riešení problémov s produkciou.

Medzi postupy Devops patria:

  • Stratégie riadenia verzií a vetvenia.
  • Potrubie pre nepretržitú integráciu a nepretržité doručovanie (CI / CD).
  • Kontajnery, ktoré štandardizujú a izolujú runtime prostredia aplikácií.
  • Infraštruktúra ako kód (IAC), ktorá umožňuje skriptovanie vrstvy infraštruktúry.
  • Monitorovanie vývojových potrubí a stavu spustených aplikácií.

Devops začína postupmi a nástrojmi používanými pri vydávaní softvéru na výpočet prostredí so základnými postupmi, ktoré existujú už celé desaťročia. Zahŕňajú kontrolu verzie na správu zmien kódu v tíme vývojárov, rozvetvenie kódovej základne na podporu rôznych vývojových aktivít a verzie softvéru na označovanie verzií pred ich zavedením do rôznych prostredí.

Hlavné rozdiely pre vývojové tímy spočívajú v tom, že tieto nástroje sa ľahšie používajú a lepšie integrujú do iných technológií, ktoré automatizujú vytváranie a nasadzovanie aplikácií. Existuje tiež viac štandardizovaných stratégií rozvetvenia a zlúčenia kódu, ktoré sa ľahšie spravujú pomocou moderných systémov riadenia verzií.

Napríklad veľa organizácií používa Git (vrátane verzií GitHub a BitBucket) a ďalšie nástroje na správu verzií, ktoré ponúkajú aplikácie pre viacerých klientov, API na integráciu a nástroje príkazového riadku na správu častejších alebo zložitejších postupov. V súčasnosti väčšina vývojárov používa vo svojich projektoch aspoň jednu technológiu riadenia verzií, takže implementácia štandardov už nie je taká ťažká ako predtým.

Organizácie, ktoré používajú tieto nástroje, môžu prijať odvetvové stratégie, ako je Gitflow, ktoré štandardizujú odvetvia pre výrobu, testovanie a vývoj a ustanovujú postupy pre vývoj nových funkcií alebo výrobných opráv. Tieto stratégie vetvenia umožňujú tímom spolupracovať na rôznych typoch vývojových potrieb a zaviesť iba kód, ktorý je testovaný a nasaditeľný do produkčných pobočiek. Tímy potom pomocou označovania verzií označia všetky verzie zdrojového kódu a ďalších súborov, ktoré sú súčasťou vydania softvéru.

Väčšina organizácií, ktoré požadujú podporu používateľov po produkčných vydaniach, a ďalšie, ktoré sú v začiatkoch vývoja svojich postupov vývoja, sa často riadia tradičnými postupmi správy vydaní, ktoré podporujú konštrukcie ako hlavné a vedľajšie vydania. Sofistikovanejšie tímy vyvíjajúce aplikácie, ktoré vyžadujú menšiu podporu používateľov, môžu trénovať nepretržité nasadenie, keď existuje automatizácia, ktorá kontinuálne integruje a dodáva zmeny kódu do produkčných prostredí.

Na umožnenie častejších vydaní sa tímy zameriavajú na automatizáciu krokov od kontroly kódu po dodanie plne testovaných aplikácií do cieľových výpočtových prostredí. Kontinuálna integrácia (CI) je automatizácia na zostavenie a integráciu všetkých softvérových komponentov tak, aby boli v nasaditeľnom balíku. Nástroje na nepretržité nasadenie (CD) spravujú premenné špecifické pre dané prostredie a automatizujú tlačenie aplikácií do vývojových, testovacích, produkčných a iných výpočtových prostredí. Tieto nástroje spolu tvoria kanál CI / CD.

Aby bol CI / CD efektívnym automatizačným procesom, je potrebné zaviesť nepretržité testovanie, aby sa zabezpečilo, že nový kód nebude spôsobovať chyby a iné problémy. Testy jednotiek implementované v potrubí nepretržitej integrácie zaisťujú, že potvrdený kód neporušuje žiadne existujúce testy jednotiek. Ďalšie testy, ktoré hľadajú problémy so zabezpečením na úrovni kódu a štruktúru kódu, je možné implementovať aj v integračnom kroku. Automatizované funkcie a výkon, ktoré si vyžadujú runtime prostredia, sa často automatizujú ako súčasť potrubí na nepretržité doručovanie.

Táto automatizácia riadi mnoho prospešných zmien v správaní a praxi, ktoré umožňujú tímom vykonávať zmeny častejšie a bezpečnejšie. Vedie tímy k častejšiemu prihlasovaniu a testovaniu kódu, čo umožňuje rýchlejšie nájsť a vyriešiť chyby. Postupy manuálneho nasadenia sú náchylné na chyby, čo automatizácia vo veľkej miere eliminuje. Automatizácia tiež zaberá väčšinu režijných nákladov pri posúvaní nových funkcií používateľom a umožňuje tímom nasadiť častejšie.

Ak CI / CD poskytuje automatizáciu poskytovania aplikácií, potom sú obaly balíkom operačného prostredia aplikácie. Vývojári môžu určiť operačný systém, požiadavky na aplikácie a konfiguračné požiadavky ako kontajner na spustenie aplikácií v izolovanej vrstve zdieľajúcej operačný systém hostiteľa. Docker a Kubernetes sú kontajnerové technológie, ktoré pomáhajú vývojárom konzistentným spôsobom definovať ich aplikačné prostredia.

S kanálmi CI / CD na integráciu a nasadením kódu a so štandardizovanými kontajnermi, ktoré izolujú výpočtové potreby každej aplikácie, majú vývojári nástroje na výrobu aplikačných služieb bez veľkej réžie. Vývojové tímy potom majú väčšie možnosti na preloženie obchodných požiadaviek do mikroslužieb, ktoré je možné nasadiť, škálovať a využiť pre rôzne obchodné potreby.

Pretože automatizácia integrácie a doručovania kódov a kontajnerizácia aplikácií riadia doručovanie aplikácií, ďalšie vývojové postupy pomáhajú automatizovať a štandardizovať infraštruktúru a cloudové služby.

Automatizácia a správa infraštruktúry boli kedysi náročné. Len čo bola vybraná architektúra, operatívni inžinieri prešli na rôzne komponenty infraštruktúry, aby ich vytvorili a nakonfigurovali podľa požiadaviek. Nástroje na konfiguráciu a správu majetku používané na zachytenie týchto architektúr vyžadovali kombináciu automatizovaných a manuálnych krokov a často boli zastarané alebo v nich chýbali dôležité informácie. Výpočtové prostredia boli tiež rigidné a hoci existovali nejaké nástroje na automatizáciu škálovacích prostredí, často boli izolované pre konkrétny typ infraštruktúry, vyžadovali rôzne zručnosti pri implementácii automatizácie a na určenie, či a ako, mali prístup iba k podmnožine prevádzkových údajov. v mierke.

Dnešné cloudové prostredia ponúkajú používateľské rozhrania, ktoré zjednodušujú prácu inžinierom. Inžinieri môžu pomocou týchto nástrojov nastaviť virtuálne súkromné ​​siete, nakonfigurovať skupiny zabezpečenia a potom spustiť výpočtové, úložné a ďalšie požadované služby.

Tím Devops to však posúva o krok ďalej. Namiesto použitia webových rozhraní a ručnej konfigurácie výpočtových prostriedkov automatizujú proces pomocou kódu. Nástroje Infraštruktúra ako kód (IaC) umožňujú operačným technikom skriptovať a automatizovať nastavenie a správu infraštruktúry. Konfigurácie, ktoré umožňujú škálovanie prostredí hore a dole, môžu byť tiež vložené do týchto skriptov. Chef, Puppet, Ansible a Salt sú štyri konkurenčné technológie, ktoré pomáhajú implementovať operačné tímy pri implementácii IaC.

Výrobný proces je taký dobrý ako schopnosť monitorovať, varovať a zotaviť sa z problémov. To isté platí pre monitorovanie devops a užívateľskú skúsenosť so spúšťaním aplikácií a služieb. Pretože organizácie investujú do automatizácie, kontajnerizácie, štandardizácie a nasadenia aplikácií, je osvedčeným postupom súbežná investícia do monitorovania.

Popremýšľajte nad monitorovaním na niekoľkých úrovniach. Na najnižšej úrovni je monitorovanie infraštruktúry, ktoré umožňuje rozpoznávanie a reakcie, keď výpočtové zdroje nie sú zdravé alebo nedosahujú dostatočnú výkonnosť. Cloudové prostredia dnes ponúkajú možnosti monitorovania, varovania a používania elastických cloudových schopností na reagovanie na problémy s infraštruktúrou.

Ďalšia vrstva pozostáva z nástrojov na sledovanie a zachytávanie metrík okolo automatizácie devops. Tieto nástroje sa stávajú kritickejšími s nárastom počtu vývojárov a nasaditeľných služieb. Tieto nástroje poskytujú výstrahy pri zlyhaní zostavenia a kontrolné nástroje, ktoré pomáhajú diagnostikovať problémy.

Nakoniec existujú nástroje, ktoré monitorujú dobu prevádzky, výkon a ďalšie metriky behu aplikácie. Tieto monitorovacie nástroje často testujú rozhrania API a tiež vykonávajú úplné testy prehľadávača buď na jednom koncovom bode, alebo vo viacerých krokoch. Tieto monitory sú prvou obranou, ktorá upozorňuje vývojové tímy, keď API alebo aplikácie fungujú mimo prijateľných úrovní služieb.

Existuje veľa postupov devops a všetkým trvá určitý čas, kým dospejú a integrujú sa. Ich implementácia nemá predpísanú postupnosť ani tvrdé odporúčania, do akej automatizácie treba investovať.

Organizácie by sa napriek tomu mali najskôr usilovať o zosúladenie kultúry a zmýšľania okolo princípov devops a potom rozpoznať, ktoré postupy sú najlepšie v súlade s obchodnými potrebami. Napríklad organizácie, ktoré už majú nízky výkon aplikácií, sa môžu rozhodnúť implementovať najskôr monitorovanie, ktoré pomôže rýchlejšie vyriešiť problémy a ľahšie identifikuje základné príčiny. Ostatné organizácie, ktoré začínajú s migráciou do cloudu, sa môžu rozhodnúť nasadiť infraštruktúru ako kód, zatiaľ čo tie, ktoré vytvárajú štandardné architektúry vývoja aplikácií, môžu investovať do potrubí CI / CD.

Technológovia by si mali uvedomiť, že implementácia automatizácie stojí určité náklady a že nie každá organizácia vyžaduje neustále nasadenie. Osvedčeným postupom je zabezpečiť, aby sa prvé uspokojili obchodné potreby, a zosúladiť vývoj automatizácie s oblasťami s vysokým opakovaním, v ktorých je manuálne úsilie náchylné na chyby.

Súvisiace video: Nárast devopsov v podniku

$config[zx-auto] not found$config[zx-overlay] not found