DevOps vodič za početnike

Koja je važnost DevOps-a, što on znači za IT profesionalce, opis metoda, okvira i alata.

DevOps vodič za početnike

Puno se toga dogodilo otkako je termin DevOps zavladao u IT svijetu. Uz veliki dio ekosustava otvorenog koda, važno je ponovno razmotriti zašto je počelo i što to znači za karijeru u IT-u.

Što je DevOps

Iako ne postoji jedinstvena definicija, vjerujem da je DevOps tehnološki okvir koji omogućuje suradnju između razvojnih i operativnih timova za bržu implementaciju koda u proizvodna okruženja uz mogućnost ponavljanja i automatizacije. Ostatak ovog članka potrošit ćemo na raspakiranje ove tvrdnje.

Riječ "DevOps" kombinacija je riječi "razvoj" i "operacije". DevOps pomaže povećati brzinu isporuke aplikacija i usluga. To omogućuje organizacijama da učinkovito služe svojim klijentima i postanu konkurentnije na tržištu. Jednostavno rečeno, DevOps je usklađivanje između razvoja i IT operacija s učinkovitijom komunikacijom i suradnjom.

DevOps uključuje kulturu u kojoj se suradnja između razvojnih, operativnih i poslovnih timova smatra kritičnom. Ne radi se samo o alatima, budući da DevOps u organizaciji kontinuirano koristi i korisnicima. Alati su jedan od njegovih stupova, uz ljude i procese. DevOps povećava sposobnost organizacija da isporuče visokokvalitetna rješenja u najkraćem mogućem vremenu. DevOps također automatizira sve procese, od izgradnje do implementacije, aplikacije ili proizvoda.

DevOps rasprava usredotočena je na odnos između programera, ljudi koji pišu softver za život i operatera odgovornih za održavanje tog softvera.

Izazovi za razvojni tim

Programeri su skloni biti entuzijastični i željni implementacije novih pristupa i tehnologija za rješavanje organizacijskih problema. Međutim, oni se također suočavaju s određenim problemima:

  • Konkurentno tržište stvara veliki pritisak da se proizvod isporuči na vrijeme.
  • Moraju voditi računa o upravljanju kodom spremnim za proizvodnju i uvođenju novih značajki.
  • Ciklus izdavanja može biti dug, tako da razvojni tim mora napraviti nekoliko pretpostavki prije implementacije aplikacija. U ovom scenariju potrebno je više vremena za rješavanje problema koji se pojave tijekom postavljanja u proizvodno ili testno okruženje.

Izazovi s kojima se suočava operativni tim

Operativni timovi kroz povijest su bili usredotočeni na stabilnost i pouzdanost IT usluga. Zato operativni timovi traže stabilnost kroz promjene u resursima, tehnologijama ili pristupima. Njihovi zadaci uključuju:

  • Upravljajte raspodjelom resursa kako potražnja raste.
  • Rukujte promjenama dizajna ili prilagodbe potrebnim za korištenje u proizvodnom okruženju.
  • Dijagnosticirajte i riješite proizvodne probleme nakon samostalne implementacije aplikacija.

Kako DevOps rješava razvojne i operativne probleme

Umjesto da uvedu veliki broj značajki aplikacije odjednom, tvrtke pokušavaju vidjeti mogu li uvesti mali broj značajki svojim klijentima kroz niz iteracija izdanja. Ovaj pristup ima brojne prednosti, kao što su bolja kvaliteta softvera, brže povratne informacije od korisnika itd. To zauzvrat osigurava visoko zadovoljstvo kupaca. Kako bi postigle ove ciljeve, tvrtke su dužne:

  • Smanjite stopu neuspjeha prilikom izdavanja novih izdanja
  • Povećajte učestalost implementacije
  • Postignite brže prosječno vrijeme oporavka u slučaju izdavanja nove aplikacije.
  • Smanjite vrijeme za ispravke

DevOps obavlja sve ove zadatke i pomaže u osiguravanju neprekinute isporuke. Organizacije koriste DevOps za postizanje razina produktivnosti koje su bile nezamislive prije samo nekoliko godina. Izvode desetke, stotine, pa čak i tisuće implementacija dnevno dok isporučuju pouzdanost, stabilnost i sigurnost svjetske klase. (Saznajte više o veličinama serije i njihov utjecaj na isporuku softvera).

DevOps pokušava riješiti razne probleme koji proizlaze iz prošlih metodologija, uključujući:

  • Izolacija rada između razvojnih i operativnih timova
  • Testiranje i implementacija odvojene su faze koje se odvijaju nakon projektiranja i izgradnje i zahtijevaju više vremena nego ciklusi izgradnje.
  • Pretjerano vrijeme potrošeno na testiranje, implementaciju i dizajn umjesto fokusiranja na izgradnju osnovnih poslovnih usluga
  • Ručna implementacija koda dovodi do pogrešaka u proizvodnji
  • Razlike u rasporedima razvojnih i operativnih timova uzrokuju dodatna kašnjenja

DevOps vodič za početnike

Sučeljavanje DevOps-a, Agile-a i tradicionalnog IT-a

DevOps se često spominje u odnosu na druge IT prakse, posebice Agile i Waterfall IT.

Agile je skup načela, vrijednosti i praksi za proizvodnju softvera. Tako, na primjer, ako imate ideju koju želite transformirati u softver, možete koristiti Agile principe i vrijednosti. Ali ovaj softver može raditi samo u razvojnom ili testnom okruženju. Potreban vam je jednostavan, siguran način za brzo i ponovljivo premještanje softvera u proizvodnju, a to je kroz DevOps alate i tehnike. Agilni razvoj softvera fokusiran je na razvojne procese, a DevOps je odgovoran za razvoj i implementaciju na najsigurniji i najpouzdaniji način.

Usporedba tradicionalnog modela vodopada s DevOpsom dobar je način za razumijevanje prednosti koje DevOps donosi. Sljedeći primjer pretpostavlja da će aplikacija biti aktivna za četiri tjedna, razvoj je 85% dovršen, aplikacija će biti aktivna, a proces kupnje poslužitelja za isporuku koda je upravo započeo.

Tradicionalni procesi
Procesi u DevOps-u

Nakon narudžbe novih poslužitelja, razvojni tim radi na testiranju. Radna skupina radi na opsežnoj dokumentaciji koja je potrebna tvrtkama za postavljanje infrastrukture.
Nakon što se postavi narudžba za nove poslužitelje, razvojni i operativni timovi rade zajedno na procesima i papirologiji za instalaciju novih poslužitelja. To vam omogućuje bolje razumijevanje vaših infrastrukturnih zahtjeva.

Informacije o prelasku, redundanciji, lokacijama podatkovnih centara i zahtjevima za pohranu krivo su prikazane jer nema ulaza od razvojnog tima koji ima duboko znanje o domeni.
Pojedinosti o prelasku nakon kvara, redundanciji, oporavku od katastrofe, lokacijama podatkovnih centara i zahtjevima za pohranu su poznati i točni zahvaljujući doprinosu razvojnog tima.

Operativni tim nema pojma o napretku razvojnog tima. Ona također razvija plan praćenja na temelju vlastitih ideja.

Operativni tim u potpunosti je svjestan napretka razvojnog tima. Ona također komunicira s razvojnim timom i oni zajedno rade na razvoju plana praćenja koji zadovoljava IT i poslovne potrebe. Također koriste alate za praćenje performansi aplikacija (APM).

Test opterećenja proveden prije pokretanja aplikacije uzrokuje pad aplikacije, odgađajući njezino pokretanje.
Test opterećenja proveden prije pokretanja aplikacije rezultira lošom izvedbom. Razvojni tim brzo rješava uska grla i aplikacija se pokreće na vrijeme.

DevOps životni ciklus

DevOps uključuje usvajanje određenih općeprihvaćenih praksi.

Kontinuirano planiranje

Kontinuirano planiranje oslanja se na načela vitkosti kako bi se započelo s malim identificiranjem resursa i rezultata potrebnih za testiranje vrijednosti poslovanja ili vizije, kontinuirano prilagođavanje, mjerenje napretka, učenje iz potreba kupaca, promjena smjera prema potrebi kako bi se prilagodila agilnosti i ponovno osmišljavanje poslovnog plana.

Zajednički razvoj

Proces suradničkog razvoja omogućuje tvrtkama, razvojnim timovima i timovima za testiranje raspoređenim u različitim vremenskim zonama da kontinuirano isporučuju kvalitetan softver. To uključuje razvoj na više platformi, podršku za višejezično programiranje, stvaranje korisničkih priča, razvoj ideja i upravljanje životnim ciklusom. Suradnički razvoj uključuje proces i praksu kontinuirane integracije, koja promiče čestu integraciju koda i automatiziranu izgradnju. Čestim postavljanjem koda u aplikaciju, problemi s integracijom prepoznaju se rano u životnom ciklusu (kada ih je lakše popraviti), a sveukupni napori na integraciji smanjeni su kontinuiranim povratnim informacijama jer projekt pokazuje stalan i vidljiv napredak.

Kontinuirano testiranje

Kontinuirano testiranje smanjuje troškove testiranja pomažući razvojnim timovima da uravnoteže brzinu i kvalitetu. Također uklanja uska grla testiranja putem virtualizacije usluge i olakšava stvaranje virtualiziranih testnih okruženja koja se mogu lako dijeliti, implementirati i ažurirati kako se sustavi mijenjaju. Ove mogućnosti smanjuju troškove pružanja i održavanja testnih okruženja i skraćuju vremena ciklusa testiranja, omogućujući da se testiranje integracije izvede ranije u životnom ciklusu.

Kontinuirano izdavanje i implementacija

Ove tehnike sa sobom donose temeljnu praksu: kontinuirano izdavanje i implementacija. To je osigurano kontinuiranim cjevovodom koji automatizira ključne procese. Smanjuje ručne korake, vrijeme čekanja resursa i preradu omogućavanjem implementacije pritiskom na gumb, što rezultira s više izdanja, manje pogrešaka i potpunom transparentnošću.

Automatizacija igra ključnu ulogu u osiguravanju stabilnog i pouzdanog izdanja softvera. Jedan od najvećih izazova je preuzeti ručne procese kao što su izgradnja, regresija, implementacija i stvaranje infrastrukture te ih automatizirati. Ovo zahtijeva kontrolu verzije izvornog koda; scenariji testiranja i implementacije; podaci o konfiguraciji infrastrukture i aplikacija; te knjižnice i pakete o kojima ovisi aplikacija. Drugi važan čimbenik je mogućnost ispitivanja stanja svih okruženja.

Kontinuirano praćenje

Kontinuirani nadzor pruža izvješćivanje na nivou poduzeća koje pomaže razvojnim timovima razumjeti dostupnost i izvedbu aplikacija u proizvodnim okruženjima prije nego što se implementiraju u proizvodnju. Rane povratne informacije dobivene kontinuiranim praćenjem ključne su za smanjenje troškova pogrešaka i usmjeravanje projekata u pravom smjeru. Ova praksa često uključuje alate za praćenje koji obično otkrivaju metrike povezane s izvedbom aplikacije.

Stalne povratne informacije i optimizacija

Kontinuirane povratne informacije i optimizacija daju vizualni prikaz protoka kupaca i određuju problematična područja. Povratne informacije mogu se uključiti iu fazi prije i nakon prodaje kako bi se povećala vrijednost i osiguralo da se još više transakcija uspješno završi. Sve to pruža trenutnu vizualizaciju temeljnog uzroka problema kupaca koji utječu na njihovo ponašanje i učinak na poslovanje.

DevOps vodič za početnike

Prednosti DevOps-a

DevOps može pomoći u stvaranju okruženja u kojem programeri i operacije rade kao tim za postizanje zajedničkih ciljeva. Važna prekretnica u ovom procesu je implementacija kontinuirane integracije i kontinuirane isporuke (CI/CD). Ove tehnike omogućit će timovima da brže plasiraju softver na tržište s manje grešaka.

Važne prednosti DevOps-a su:

  • Predvidljivost: DevOps nudi značajno nižu stopu neuspjeha za nova izdanja.
  • Pogodnost održavanja: DevOps omogućuje jednostavan oporavak ako novo izdanje ne uspije ili aplikacija padne.
  • Mogućnost ponovljivosti: kontrola verzije međuverzije ili koda omogućuje vam vraćanje ranijih verzija prema potrebi.
  • Viša kvaliteta: Rješavanje problema s infrastrukturom poboljšava kvalitetu razvoja aplikacija.
  • Vrijeme izlaska na tržište: Optimiziranje isporuke softvera smanjuje vrijeme izlaska na tržište za 50%.
  • Smanjenje rizika: Implementacija sigurnosti u životnom ciklusu softvera smanjuje broj nedostataka tijekom životnog ciklusa.
  • Troškovna učinkovitost: Težnja za troškovnom učinkovitošću u razvoju softvera privlači viši menadžment.
  • Stabilnost: softverski sustav je stabilniji, sigurniji i promjene se mogu revidirati.
  • Rastavljanje veće baze koda na dijelove kojima se može upravljati: DevOps se temelji na agilnim razvojnim metodama, što vam omogućuje rastavljanje velike baze koda na manje dijelove kojima se može upravljati.

DevOps principi

Usvajanjem DevOps-a nastalo je nekoliko načela koja su se razvila (i nastavljaju se razvijati). Većina pružatelja rješenja razvila je vlastite modifikacije različitih tehnika. Sva ova načela temelje se na holističkom pristupu DevOps-u i mogu ih koristiti organizacije bilo koje veličine.

Razvijajte i testirajte u okruženju sličnom proizvodnji

Ideja je omogućiti timovima za razvoj i osiguranje kvalitete (QA) da razviju i testiraju sustave koji se ponašaju kao proizvodni sustavi kako bi mogli vidjeti kako se aplikacija ponaša i radi mnogo prije nego što je spremna za implementaciju.

Aplikaciju bi trebalo povezati s proizvodnim sustavima što je ranije moguće u njenom životnom ciklusu kako bi se riješila tri glavna potencijalna problema. Prvo, omogućuje vam testiranje aplikacije u okruženju bliskom stvarnom okruženju. Drugo, omogućuje vam testiranje i provjeru valjanosti procesa isporuke aplikacija unaprijed. Treće, omogućuje operativnom timu da rano u životnom ciklusu testira kako će se njihovo okruženje ponašati kada se aplikacije implementiraju, čime im se omogućuje stvaranje visoko prilagođenog okruženja usmjerenog na aplikacije.

Implementirajte s ponovljivim, pouzdanim procesima

Ovo načelo omogućuje razvojnim i operativnim timovima da podržavaju agilne procese razvoja softvera tijekom cijelog životnog ciklusa softvera. Automatizacija je ključna za stvaranje iterativnih, pouzdanih i ponovljivih procesa. Stoga organizacija mora stvoriti cjevovod isporuke koji omogućuje kontinuiranu, automatiziranu implementaciju i testiranje. Česta implementacija također omogućuje timovima da testiraju procese implementacije, čime se smanjuje rizik od neuspjeha implementacije tijekom izdanja uživo.

Praćenje i provjera kvalitete rada

Organizacije su dobre u praćenju aplikacija u proizvodnji jer imaju alate koji bilježe metriku i ključne pokazatelje učinka (KPI) u stvarnom vremenu. Ovo načelo pomiče nadzor u ranu fazu životnog ciklusa, osiguravajući da automatizirano testiranje prati funkcionalne i nefunkcionalne atribute aplikacije rano u procesu. Kad god se aplikacija testira i implementira, metrika kvalitete mora se ispitati i analizirati. Alati za praćenje pružaju rano upozorenje o operativnim i kvalitetnim problemima koji se mogu pojaviti tijekom proizvodnje. Ovi pokazatelji moraju biti prikupljeni u obliku koji je dostupan i razumljiv svim dionicima.

Poboljšanje povratnih informacija

Jedan od ciljeva DevOps procesa je omogućiti organizacijama da brže reagiraju i uvedu promjene. U isporuci softvera, ovaj cilj zahtijeva od organizacije rano primanje povratnih informacija i zatim brzo učenje iz svake poduzete akcije. Ovo načelo zahtijeva od organizacija stvaranje komunikacijskih kanala koji omogućuju dionicima pristup i interakciju na način povratne informacije. Razvoj se može izvesti prilagodbom vaših projektnih planova ili prioriteta. Proizvodnja može djelovati poboljšavajući proizvodno okruženje.

dev

  • Planiranje: Kanboard, Wekan i druge Trello alternative; GitLab, Tuleap, Redmine i druge JIRA alternative; Mattermost, Roit.im, IRC i druge Slack alternative.
  • Pisanje koda: Git, Gerrit, Bugzilla; Jenkins i drugi alati otvorenog koda za CI/CD
  • montaža: Apache Maven, Gradle, Apache Ant, Packer
  • testovi: JUnit, Cucumber, Selenium, Apache JMeter

Ops

  • Izdanje, implementacija, operacije: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper itd., Netflix Archaius, Terraform
  • Praćenje: Grafana, Prometheus, Nagios, InfluxDB, Fluentd i drugi obuhvaćeni ovim vodičem

(*Operacijski alati su numerirani prema redoslijedu korištenja od strane operativnih timova, ali njihovi alati preklapaju se sa fazama životnog ciklusa alata za izdavanje i implementaciju. Radi lakšeg čitanja, numeriranje je uklonjeno.)

U zaključku

DevOps je sve popularnija metodologija koja ima za cilj spojiti programere i operacije u jednu cjelinu. Jedinstven je, razlikuje se od tradicionalnih IT operacija i nadopunjuje Agile (ali nije toliko fleksibilan).

DevOps vodič za početnike

Saznajte pojedinosti o tome kako doći do tražene profesije od nule ili Level Up u smislu vještina i plaće pohađanjem plaćenih online tečajeva SkillFactoryja:

više tečajeva

Полезное

Izvor: www.habr.com

Dodajte komentar