DevOps vodnik za začetnike

Kakšen je pomen DevOps, kaj pomeni za IT strokovnjake, opis metod, ogrodij in orodij.

DevOps vodnik za začetnike

Veliko se je zgodilo, odkar se je izraz DevOps uveljavil v svetu IT. Ker je velik del ekosistema odprtokoden, je pomembno ponovno razmisliti, zakaj se je začel in kaj to pomeni za kariero v IT.

Kaj je DevOps

Čeprav ni enotne definicije, menim, da je DevOps tehnološki okvir, ki omogoča sodelovanje med razvojnimi in operativnimi ekipami za hitrejšo uvedbo kode v proizvodna okolja z možnostjo ponavljanja in avtomatizacije. Preostanek tega članka bomo porabili za razpakiranje te trditve.

Beseda »DevOps« je kombinacija besed »razvoj« in »operacije«. DevOps pomaga povečati hitrost dostave aplikacij in storitev. To organizacijam omogoča, da učinkovito služijo svojim strankam in postanejo bolj konkurenčne na trgu. Preprosto povedano, DevOps je usklajevanje med razvojem in IT operacijami z učinkovitejšo komunikacijo in sodelovanjem.

DevOps vključuje kulturo, kjer je sodelovanje med razvojnimi, operativnimi in poslovnimi ekipami ključnega pomena. Ne gre le za orodja, saj DevOps v organizaciji nenehno koristi tudi strankam. Orodja so poleg ljudi in procesov eden od njenih stebrov. DevOps povečuje sposobnost organizacij za zagotavljanje visokokakovostnih rešitev v najkrajšem možnem času. DevOps tudi avtomatizira vse procese, od gradnje do uvajanja, aplikacije ali izdelka.

Razprava o DevOps se osredotoča na odnos med razvijalci, ljudmi, ki pišejo programsko opremo za preživetje, in operaterji, odgovornimi za vzdrževanje te programske opreme.

Izzivi za razvojno ekipo

Razvijalci so ponavadi navdušeni in željni implementacije novih pristopov in tehnologij za reševanje organizacijskih problemov. Vendar se soočajo tudi z določenimi težavami:

  • Konkurenčni trg ustvarja velik pritisk za pravočasno dobavo izdelka.
  • Skrbeti morajo za upravljanje kode, pripravljene za proizvodnjo, in uvajanje novih funkcij.
  • Cikel izdaje je lahko dolg, zato mora razvojna ekipa narediti več predpostavk, preden uvede aplikacije. V tem scenariju je potrebno več časa za razrešitev težav, ki se pojavijo med razmestitvijo v produkcijsko ali testno okolje.

Izzivi, s katerimi se sooča operativna ekipa

Operativne ekipe so se v preteklosti osredotočale na stabilnost in zanesljivost storitev IT. Zato operativne ekipe iščejo stabilnost s spremembami virov, tehnologij ali pristopov. Njihove naloge vključujejo:

  • Upravljajte dodeljevanje virov, ko se povpraševanje poveča.
  • Upravljajte s spremembami oblikovanja ali prilagajanja, ki so potrebne za uporabo v proizvodnem okolju.
  • Diagnosticirajte in razrešite produkcijske težave po samostojnem uvajanju aplikacij.

Kako DevOps rešuje težave pri razvoju in delovanju

Namesto uvedbe velikega števila funkcij aplikacije hkrati, podjetja poskušajo ugotoviti, ali lahko svojim strankam uvedejo majhno število funkcij z nizom ponovitev izdaje. Ta pristop ima številne prednosti, kot so boljša kakovost programske opreme, hitrejše povratne informacije strank itd. To pa zagotavlja visoko zadovoljstvo strank. Za doseganje teh ciljev morajo podjetja:

  • Zmanjšajte stopnjo napak pri izdajanju novih izdaj
  • Povečajte pogostost uvajanja
  • Dosezite hitrejši povprečni čas za obnovitev v primeru izdaje nove aplikacije.
  • Zmanjšajte čas za popravke

DevOps opravlja vse te naloge in pomaga zagotoviti neprekinjeno dostavo. Organizacije uporabljajo DevOps za doseganje stopenj produktivnosti, ki so bile še pred nekaj leti nepredstavljive. Izvedejo desetine, stotine in celo tisoče uvajanj na dan, hkrati pa zagotavljajo zanesljivost, stabilnost in varnost svetovnega razreda. (Več o velikostih serij in njihov vpliv na dostavo programske opreme).

DevOps poskuša rešiti različne težave, ki izhajajo iz preteklih metodologij, vključno z:

  • Izolacija dela med razvojnimi in operativnimi ekipami
  • Testiranje in uvajanje sta ločeni fazi, ki se pojavita po načrtovanju in gradnji ter zahtevata več časa kot cikli gradnje.
  • Preveč časa, porabljenega za testiranje, uvajanje in načrtovanje, namesto da bi se osredotočili na gradnjo osnovnih poslovnih storitev
  • Ročna uvedba kode vodi do napak v proizvodnji
  • Razlike v razporedih razvojnih in operativnih ekip, ki povzročajo dodatne zamude

DevOps vodnik za začetnike

Soočenje med DevOps, Agile in tradicionalnim IT

DevOps se pogosto obravnava v povezavi z drugimi praksami IT, zlasti Agile in Waterfall IT.

Agile je nabor načel, vrednot in praks za izdelavo programske opreme. Torej, če imate na primer idejo, ki jo želite preoblikovati v programsko opremo, lahko uporabite načela in vrednote Agile. Toda ta programska oprema se lahko izvaja samo v razvojnem ali testnem okolju. Potrebujete preprost in varen način, da svojo programsko opremo hitro in ponavljajoče premaknete v proizvodnjo, in pot je prek orodij in tehnik DevOps. Agilni razvoj programske opreme se osredotoča na razvojne procese, DevOps pa je odgovoren za razvoj in uvajanje na najbolj varen in zanesljiv način.

Primerjava tradicionalnega modela slapa z DevOps je dober način za razumevanje prednosti, ki jih prinaša DevOps. Naslednji primer predvideva, da bo aplikacija zaživela čez štiri tedne, razvoj je 85-odstotno zaključen, aplikacija bo zaživela in postopek nakupa strežnikov za pošiljanje kode se je pravkar začel.

Tradicionalni postopki
Procesi v DevOps

Po oddaji naročila za nove strežnike razvojna ekipa dela na testiranju. Delovna skupina dela na obsežni dokumentaciji, ki jo potrebujejo podjetja za uvedbo infrastrukture.
Ko je oddano naročilo za nove strežnike, razvojne in operativne ekipe sodelujejo pri postopkih in dokumentaciji za namestitev novih strežnikov. To vam omogoča, da bolje razumete svoje infrastrukturne zahteve.

Informacije o samodejnem preklopu, redundanci, lokacijah podatkovnih centrov in zahtevah glede shranjevanja so napačno predstavljene, ker ni prispevka razvojne skupine, ki ima globoko znanje o domeni.
Podrobnosti o samodejnem preklopu, redundanci, obnovitvi po katastrofi, lokacijah podatkovnih centrov in zahtevah za shranjevanje so znane in pravilne zaradi prispevkov razvojne skupine.

Operativna ekipa nima pojma o napredku razvojne ekipe. Razvija tudi načrt spremljanja, ki temelji na lastnih zamislih.

Operativna ekipa je v celoti seznanjena z napredkom razvojne ekipe. Sodeluje tudi z razvojno ekipo in skupaj razvijajo načrt spremljanja, ki ustreza IT in poslovnim potrebam. Uporabljajo tudi orodja za spremljanje delovanja aplikacij (APM).

Preizkus obremenitve, izveden pred zagonom aplikacije, povzroči zrušitev aplikacije, kar zakasni njen zagon.
Obremenitveni preizkus, izveden pred zagonom aplikacije, povzroči slabo delovanje. Razvojna ekipa hitro odpravi ozka grla in aplikacija se pravočasno zažene.

Življenjski cikel DevOps

DevOps vključuje sprejetje določenih splošno sprejetih praks.

Neprekinjeno načrtovanje

Neprekinjeno načrtovanje se opira na načela vitkosti, da začnemo z majhnimi, tako da identificiramo vire in rezultate, potrebne za preizkušanje vrednosti podjetja ali vizije, nenehno prilagajanje, merjenje napredka, učenje iz potreb strank, spreminjanje smeri, kot je potrebno, da se prilagodi agilnosti, in ponovno izumljanje poslovnega načrta.

Skupni razvoj

Sodelovalni razvojni proces omogoča podjetjem, razvojnim skupinam in skupinam za testiranje, razpršenim po različnih časovnih pasovih, neprekinjeno zagotavljanje kakovostne programske opreme. To vključuje razvoj na več platformah, podporo za medjezično programiranje, ustvarjanje uporabniške zgodbe, razvoj idej in upravljanje življenjskega cikla. Skupni razvoj vključuje proces in prakso nenehne integracije, ki spodbuja pogosto integracijo kode in avtomatizirane gradnje. S pogostim uvajanjem kode v aplikacijo se težave pri integraciji odkrijejo zgodaj v življenjskem ciklu (ko jih je lažje odpraviti), skupni napor pri integraciji pa se zmanjša z nenehnimi povratnimi informacijami, saj projekt kaže stalen in viden napredek.

Neprekinjeno testiranje

Neprekinjeno testiranje zmanjša stroške testiranja, saj pomaga razvojnim ekipam uravnotežiti hitrost in kakovost. Prav tako odpravlja ozka grla pri testiranju z virtualizacijo storitev in omogoča preprosto ustvarjanje virtualiziranih testnih okolij, ki jih je mogoče preprosto deliti, namestiti in posodobiti, ko se sistemi spreminjajo. Te zmožnosti zmanjšajo stroške zagotavljanja in vzdrževanja testnih okolij ter skrajšajo čase preskusnih ciklov, kar omogoča, da se testiranje integracije izvede prej v življenjskem ciklu.

Neprekinjeno izdajanje in uvajanje

Te tehnike s seboj prinašajo temeljno prakso: neprekinjeno izdajanje in uvajanje. To zagotavlja neprekinjen cevovod, ki avtomatizira ključne procese. Zmanjšuje ročne korake, čakalne dobe virov in predelavo, tako da omogoča uvajanje s pritiskom na gumb, kar ima za posledico več izdaj, manj napak in popolno preglednost.

Avtomatizacija ima ključno vlogo pri zagotavljanju stabilne in zanesljive izdaje programske opreme. Eden največjih izzivov je avtomatizirati ročne procese, kot so gradnja, regresija, uvajanje in ustvarjanje infrastrukture. To zahteva nadzor nad različico izvorne kode; scenariji testiranja in uvajanja; podatki o konfiguraciji infrastrukture in aplikacij; ter knjižnice in pakete, od katerih je aplikacija odvisna. Drug pomemben dejavnik je zmožnost poizvedovanja o stanju vseh okolij.

Stalno spremljanje

Nenehno spremljanje zagotavlja poročanje na ravni podjetja, ki pomaga razvojnim ekipam razumeti razpoložljivost in zmogljivost aplikacij v produkcijskih okoljih, preden so uvedene v produkcijo. Zgodnje povratne informacije, ki jih zagotavlja stalno spremljanje, so ključne za zmanjšanje stroškov napak in usmerjanje projektov v pravo smer. Ta praksa pogosto vključuje orodja za spremljanje, ki običajno razkrijejo meritve, povezane z zmogljivostjo aplikacije.

Stalne povratne informacije in optimizacija

Stalne povratne informacije in optimizacija zagotavljajo vizualno predstavitev toka strank in natančno določajo problematična področja. Povratne informacije se lahko vključijo v predprodajne in poprodajne faze, da povečate vrednost in zagotovite, da je še več transakcij uspešno opravljenih. Vse to zagotavlja takojšnjo vizualizacijo temeljnega vzroka težav strank, ki vplivajo na njihovo vedenje in vpliv na poslovanje.

DevOps vodnik za začetnike

Prednosti DevOps

DevOps lahko pomaga ustvariti okolje, kjer razvijalci in operacije delujejo kot ekipa za doseganje skupnih ciljev. Pomemben mejnik v tem procesu je implementacija stalne integracije in stalne dostave (CI/CD). Te tehnike bodo ekipam omogočile hitrejše trženje programske opreme z manj hrošči.

Pomembne prednosti DevOps so:

  • Predvidljivost: DevOps ponuja znatno nižjo stopnjo napak za nove izdaje.
  • Vzdržljivost: DevOps omogoča preprosto obnovitev, če nova izdaja ne uspe ali aplikacija ne deluje.
  • Ponovljivost: nadzor nad različico gradnje ali kode vam omogoča, da po potrebi obnovite prejšnje različice.
  • Višja kakovost: obravnava infrastrukturnih težav izboljša kakovost razvoja aplikacij.
  • Čas do trga: Optimizacija dostave programske opreme skrajša čas do trga za 50 %.
  • Zmanjšanje tveganja: implementacija varnosti v življenjski cikel programske opreme zmanjša število napak v celotnem življenjskem ciklu.
  • Stroškovna učinkovitost: Prizadevanje za stroškovno učinkovitost pri razvoju programske opreme privlači višje vodstvo.
  • Stabilnost: sistem programske opreme je bolj stabilen, varen in spremembe je mogoče revidirati.
  • Razčlenitev večje kodne baze na obvladljive dele: DevOps temelji na agilnih razvojnih metodah, ki vam omogočajo razčlenitev velike kodne baze na manjše, obvladljive dele.

Načela DevOps

Sprejetje DevOps je povzročilo več načel, ki so se razvila (in se še naprej razvijajo). Večina ponudnikov rešitev je razvila lastne modifikacije različnih tehnik. Vsa ta načela temeljijo na celostnem pristopu k DevOps in jih lahko uporabljajo organizacije vseh velikosti.

Razvijajte in testirajte v produkcijskem okolju

Ideja je omogočiti skupinam za razvoj in zagotavljanje kakovosti (QA) razvoj in testiranje sistemov, ki se obnašajo kot produkcijski sistemi, tako da lahko vidijo, kako se aplikacija obnaša in deluje, dolgo preden je pripravljena za uvajanje.

Aplikacijo je treba povezati s proizvodnimi sistemi čim prej v njenem življenjskem ciklu, da se odpravijo tri glavne možne težave. Prvič, omogoča testiranje aplikacije v okolju, ki je blizu resničnemu okolju. Drugič, omogoča vam, da vnaprej preizkusite in potrdite postopke dostave aplikacij. Tretjič, omogoča operacijski ekipi, da zgodaj v življenjskem ciklu preizkusi, kako se bo njihovo okolje obnašalo, ko bodo aplikacije uvedene, kar jim omogoča, da ustvarijo zelo prilagojeno okolje, osredotočeno na aplikacijo.

Razmestite s ponovljivimi, zanesljivimi procesi

To načelo omogoča razvojnim in operativnim ekipam, da podpirajo agilne procese razvoja programske opreme skozi celoten življenjski cikel programske opreme. Avtomatizacija je ključnega pomena za ustvarjanje ponavljajočih se, zanesljivih in ponovljivih procesov. Zato mora organizacija ustvariti dobavni cevovod, ki omogoča neprekinjeno, avtomatizirano uvajanje in testiranje. Pogosta uvedba prav tako omogoča ekipam, da preizkusijo postopke uvajanja, s čimer se zmanjša tveganje za napake pri uvajanju med izdajami v živo.

Spremljanje in preverjanje kakovosti dela

Organizacije so dobre pri spremljanju aplikacij v proizvodnji, ker imajo orodja, ki zajemajo meritve in ključne kazalnike uspešnosti (KPI) v realnem času. To načelo premakne spremljanje zgodaj v življenjski cikel, kar zagotavlja, da samodejno testiranje nadzira funkcionalne in nefunkcionalne lastnosti aplikacije zgodaj v procesu. Kadarkoli se aplikacija testira in uvaja, je treba pregledati in analizirati metrike kakovosti. Orodja za spremljanje zagotavljajo zgodnje opozarjanje na težave pri delovanju in kakovosti, ki se lahko pojavijo med proizvodnjo. Ti kazalniki morajo biti zbrani v obliki, ki je dostopna in razumljiva vsem deležnikom.

Izboljšanje povratnih zank

Eden od ciljev procesov DevOps je omogočiti organizacijam, da se hitreje odzivajo in izvajajo spremembe. Pri dobavi programske opreme ta cilj zahteva, da organizacija zgodaj prejme povratne informacije in se nato hitro nauči iz vsakega sprejetega ukrepa. To načelo od organizacij zahteva, da ustvarijo komunikacijske kanale, ki zainteresiranim stranem omogočajo dostop in interakcijo na način povratne informacije. Razvoj je mogoče doseči s prilagoditvijo vaših projektnih načrtov ali prednostnih nalog. Proizvodnja lahko deluje tako, da izboljša proizvodno okolje.

dev

  • Načrtovanje: Kanboard, Wekan in druge alternative Trello; GitLab, Tuleap, Redmine in druge alternative JIRA; Mattermost, Roit.im, IRC in druge Slack alternative.
  • Pisanje kode: Git, Gerrit, Bugzilla; Jenkins in druga odprtokodna orodja za CI/CD
  • Montaža: Apache Maven, Gradle, Apache Ant, Packer
  • Preizkusi: JUnit, Cucumber, Selenium, Apache JMeter

Ops

  • Izdaja, uvedba, operacije: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper itd., Netflix Archaius, Terraform
  • Spremljanje: Grafana, Prometheus, Nagios, InfluxDB, Fluentd in drugi, zajeti v tem priročniku

(*Operacijska orodja so bila oštevilčena po vrstnem redu uporabe s strani operativnih skupin, vendar njihova orodja prekrivajo faze življenjskega cikla orodij za izdajo in uvajanje. Zaradi lažje berljivosti je bilo oštevilčenje odstranjeno.)

Na koncu

DevOps je vse bolj priljubljena metodologija, katere cilj je združiti razvijalce in operacije v eno enoto. Je edinstven, drugačen od tradicionalnih operacij IT in dopolnjuje Agile (vendar ni tako prilagodljiv).

DevOps vodnik za začetnike

Poiščite podrobnosti o tem, kako pridobiti iskan poklic od začetka ali navzgor v smislu spretnosti in plače z obiskovanjem plačljivih spletnih tečajev SkillFactory:

več tečajev

Koristno

Vir: www.habr.com

Dodaj komentar