DevOps vodič za početnike

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

DevOps vodič za početnike

Mnogo toga se dogodilo otkako je termin DevOps zavladao u IT svijetu. Sa velikim dijelom otvorenog koda ekosistema, važno je preispitati zašto je ovo počelo i šta to znači za karijeru u IT-u.

Šta je DevOps?

Iako ne postoji jedinstvena definicija, vjerujem da je DevOps tehnološki okvir koji omogućava suradnju između razvojnih timova i operativnih timova za brže implementiranje koda u proizvodna okruženja uz mogućnost repliciranja i automatizacije. Ostatak članka ćemo potrošiti na raspakivanje ove izjave.

Riječ "DevOps" je kombinacija riječi "razvoj" (razvoj) i "operacije" (operacije). DevOps pomaže da se ubrza isporuka aplikacija i usluga. Ovo omogućava organizacijama da efikasno služe svojim klijentima i postanu konkurentnije na tržištu. Jednostavno rečeno, DevOps se odnosi na usklađivanje razvoja i IT operacija, uz bolju komunikaciju i saradnju.

DevOps predviđa kulturu u kojoj se saradnja između razvojnih timova, operatera i poslovnih timova smatra kritičnom. Ne radi se samo o alatima, jer DevOps u organizaciji dosljedno isporučuje vrijednost i klijentima. Alati su jedan od njegovih stubova, zajedno sa ljudima i procesima. DevOps povećava sposobnost organizacija da isporuče visokokvalitetna rješenja u najkraćem mogućem roku. DevOps također automatizira sve procese, od izgradnje do implementacije, aplikacije ili proizvoda.

DevOps diskusija se fokusira 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 imaju tendenciju da budu entuzijastični i voljni da implementiraju nove pristupe i tehnologije za rešavanje organizacionih problema. Međutim, suočavaju se i sa određenim problemima:

  • Konkurentno tržište stvara veliki pritisak da se proizvod isporuči na vrijeme.
  • Oni moraju voditi računa o upravljanju kodom spremnim za proizvodnju i implementaciji novih funkcija.
  • Ciklus izdanja može biti dug, tako da razvojni tim mora napraviti nekoliko pretpostavki prije postavljanja aplikacija. U ovom scenariju, potrebno je više vremena za rješavanje problema koji nastanu tokom postavljanja u proizvodno ili testno okruženje.

Izazovi sa kojima se suočava operativna grupa

Operativne grupe su se istorijski fokusirale na stabilnost i pouzdanost IT usluga. Zato operativni timovi traže stabilnost kroz promjene u resursima, tehnologijama ili pristupima. Njihovi zadaci uključuju:

  • Upravljajte alokacijom resursa kako potražnja raste.
  • Rukovanje promjenama u dizajnu ili prilagodbama koje su potrebne za primjenu na proizvodno okruženje.
  • Dijagnosticirajte i riješite probleme vezane za proizvodnju nakon aplikacija koje se samostalno postavljaju.

Kako DevOps rješava razvojne i operativne probleme

Umjesto da uvedu veliki broj funkcija aplikacije odjednom, kompanije pokušavaju vidjeti mogu li svojim klijentima uvesti mali broj funkcija kroz niz iteracija izdanja. Ovaj pristup ima niz prednosti kao što su bolji kvalitet softvera, brža povratna informacija od kupaca itd. To, zauzvrat, osigurava visok stepen zadovoljstva kupaca. Da bi ostvarile ove ciljeve, kompanije moraju:

  • Smanjite stopu neuspjeha za nova izdanja
  • Povećajte učestalost implementacije
  • Ostvarite brže srednje vrijeme do oporavka u slučaju novog izdanja aplikacije.
  • Smanjite vrijeme za ispravke

DevOps se brine za sve ove zadatke i pomaže u osiguravanju besprijekorne isporuke. Organizacije koriste DevOps za postizanje nivoa performansi koji je bio nezamisliv prije samo nekoliko godina. Oni izvode desetine, stotine, pa čak i hiljade implementacija dnevno, istovremeno pružajući pouzdanost, stabilnost i sigurnost svjetske klase. (Saznajte više o veličinama partija i njihov uticaj na isporuku softvera).

DevOps pokušava riješiti različite probleme koji su rezultat prošlih metodologija, uključujući:

  • Izolacija rada razvojnih timova i operatera
  • Testiranje i implementacija kao zasebne faze nakon dizajna i izgradnje koje traju duže od ciklusa izgradnje.
  • Previše vremena utrošeno na testiranje, implementaciju i dizajniranje umjesto da se fokusirate na izgradnju osnovnih poslovnih usluga
  • Ručno postavljanje koda dovodi do grešaka u proizvodnji
  • Razlike u rasporedu razvojnih i operativnih timova dovode do dodatnih kašnjenja

DevOps vodič za početnike

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

DevOps se često raspravlja u vezi sa drugim IT praksama, posebno agilnom i vodopadnom IT infrastrukturom.

Agile je skup principa, vrijednosti i metoda za proizvodnju softvera. Tako, na primjer, ako imate ideju koju želite pretvoriti u softver, možete koristiti Agile principe i vrijednosti. Ali ovaj softver može raditi samo u razvojnom ili testnom okruženju. Želite jednostavan, siguran način za brzo i ponovljivo prebacivanje softvera u proizvodnju, a put je kroz DevOps alate i prakse. Agilni razvoj softvera fokusira se na razvojne procese, a DevOps je odgovoran za razvoj i implementaciju na najsigurniji i najpouzdaniji mogući način.

Poređenje tradicionalnog modela vodopada sa DevOps-om je dobar način da se razumiju prednosti koje DevOps donosi. Sljedeći primjer pretpostavlja da će aplikacija biti pokrenuta za četiri sedmice, razvoj je 85% završen, aplikacija će biti aktivna, a proces kupovine servera za slanje koda je upravo počeo.

Tradicionalni procesi
Procesi u DevOps-u

Nakon naručivanja novih servera, razvojni tim radi na testiranju. Fokus grupa radi na obimnoj dokumentaciji koja je preduzećima potrebna za postavljanje infrastrukture.
Nakon naručivanja novih servera, razvojni i operativni timovi zajedno rade na procesima i toku rada za instaliranje novih servera. Ovo vam omogućava da bolje razumete zahteve infrastrukture.

Iskrivljenim informacijama o prelasku na grešku, redundantnosti, lokaciji podatkovnog centra i zahtjevima za pohranu nedostaje unos od razvojnog tima koji ima duboko znanje o aplikaciji.
Detaljne informacije o prelasku na greške, redundantnosti, oporavku od katastrofe, lokacijama centara podataka i zahtjevima za skladištenje su poznate i tačne zahvaljujući doprinosu razvojnog tima.

Radna grupa nema pojma o napretku razvojnog tima. Ona takođe razvija plan praćenja zasnovan na sopstvenim idejama.

Radna grupa je potpuno svjesna napretka koji je napravio razvojni tim. Ona također komunicira sa razvojnim timom i oni zajedno razvijaju plan praćenja koji zadovoljava IT i poslovne potrebe. Oni također koriste alate za praćenje performansi aplikacija (APM).

Test opterećenja obavljen prije pokretanja aplikacije uzrokuje pad aplikacije, odgađajući njeno pokretanje.
Test opterećenja obavljen prije pokretanja aplikacije rezultira degradacijom performansi. Razvojni tim brzo otklanja uska grla i aplikacija se pokreće na vrijeme.

DevOps životni ciklus

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

Kontinuirano planiranje

Kontinuirano planiranje zasniva se na principima naglog za početak malog identificiranjem resursa i rezultata potrebnih za testiranje poslovne vrijednosti ili vizije, kontinuirano prilagođavanje, mjerenje napretka, razumijevanje potreba kupaca, promjenu smjera prema potrebi za prilagođavanje agilnosti i ažuriranje poslovnog plana.

Zajednički razvoj

Proces kolaborativnog razvoja omogućava preduzećima, razvojnim timovima i testnim timovima u više vremenskih zona da kontinuirano isporučuju kvalitetan softver. Ovo uključuje razvoj na više platformi, podršku za višejezično programiranje, kreiranje korisničke priče, ideje i upravljanje životnim ciklusom. Kolaborativni razvoj uključuje proces i praksu kontinuirane integracije, koja podstiče čestu integraciju koda i automatizovane gradnje. Čestim ubacivanjem koda u aplikaciju, problemi integracije se otkrivaju u ranoj fazi životnog ciklusa (kada ih je lakše popraviti), a ukupni napori integracije se smanjuju kontinuiranim povratnim informacijama jer projekat pokazuje kontinuiran i vidljiv napredak.

Kontinuirano testiranje

Kontinuirano testiranje smanjuje troškove testiranja pomažući razvojnim timovima da uravnoteže brzinu i kvalitet. Takođe uklanja uska grla testa kroz virtuelizaciju usluga i olakšava kreiranje virtuelizovanih testnih okruženja koja se mogu lako deliti, implementirati i nadograditi kako se sistem menja. Ove mogućnosti smanjuju troškove obezbjeđivanja i održavanja testnih okruženja, kao i skraćuju vrijeme testnog ciklusa, omogućavajući integracijsko testiranje da se izvrši rano u životnom ciklusu.

Kontinuirano izdavanje i implementacija

Ove metodologije nose sa sobom jednu od osnovnih praksi: kontinuirano oslobađanje i implementaciju. Ovo obezbeđuje kontinuirani cevovod koji automatizuje ključne procese. Smanjuje ručne korake, vrijeme čekanja na resurse i preradu omogućavanjem implementacije pomoću gumba za više izdanja, manje grešaka i potpunu transparentnost.

Automatizacija igra ključnu ulogu u osiguravanju stabilnog i pouzdanog izdavanja softvera. Jedan od najvećih izazova je preuzeti ručne procese poput izgradnje, regresije, implementacije i infrastrukture i automatizirati ih. Ovo zahtijeva kontrolu verzije izvornog koda; scenariji testiranja i implementacije; infrastruktura aplikacija i podaci o konfiguraciji; kao i biblioteke i pakete o kojima aplikacija zavisi. Još jedan važan faktor je mogućnost ispitivanja statusa svih okruženja.

Kontinuirano praćenje

Kontinuirano praćenje pruža izvještavanje na nivou preduzeća koje pomaže razvojnim timovima da razumiju dostupnost i performanse aplikacija u proizvodnom okruženju prije nego što se implementiraju u proizvodnju. Rana povratna informacija koju pruža kontinuirano praćenje je ključna za smanjenje troškova grešaka i održavanje projekata u pravom smjeru. Ova praksa često uključuje alate za praćenje, koji imaju tendenciju da otkriju metriku koja se odnosi na performanse aplikacije.

Stalne povratne informacije i optimizacija

Neprekidne povratne informacije i optimizacija pružaju vizualni prikaz toka kupaca i preciziraju problematična područja. Povratne informacije mogu biti uključene iu fazi prije prodaje iu postprodukcijskoj fazi kako bi se maksimizirala vrijednost i osiguralo da se još više transakcija uspješno završi. Sve ovo pruža neposrednu vidljivost u osnovni uzrok problema kupaca koji utiču na njihovo ponašanje i uticaj na poslovanje.

DevOps vodič za početnike

Prednosti DevOps-a

DevOps može pomoći u stvaranju okruženja u kojem programeri i operateri rade kao tim kako bi postigli zajedničke ciljeve. Važna prekretnica u ovom procesu je uvođenje kontinuirane integracije i kontinuirane isporuke (CI/CD). Ove tehnike će omogućiti timovima da brže plasiraju softver na tržište sa manje grešaka.

Važne prednosti DevOps-a su:

  • Predvidljivost: DevOps nudi znatno nižu stopu neuspjeha za nova izdanja.
  • Održavanje: DevOps omogućava lak oporavak u slučaju kvarova u novom izdanju ili gašenja aplikacije.
  • Reproducibilnost: Sistem kontrole verzija za sklop ili kod omogućava vam da po potrebi vratite ranije verzije.
  • Viši kvalitet: Rješavanje infrastrukturnih problema poboljšava kvalitetu razvoja aplikacija.
  • Vrijeme izlaska na tržište: Optimizacija isporuke softvera smanjuje vrijeme izlaska na tržište za 50%.
  • Smanjenje rizika: Osiguranje sigurnosti u životnom ciklusu softvera smanjuje broj kvarova tokom životnog ciklusa.
  • Isplativost: Težnja za troškovnom efikasnošću u razvoju softvera privlači više rukovodstvo.
  • Stabilnost: Softverski sistem je stabilniji, sigurniji i promjene se mogu testirati.
  • Veća kodna baza je podijeljena na dijelove kojima se može upravljati: DevOps je zasnovan na agilnim razvojnim praksama koje vam omogućavaju da razbijete veliku bazu koda na manje dijelove kojima se može upravljati.

DevOps principi

Usvajanje DevOps-a iznjedrilo je nekoliko principa koji su evoluirali (i nastavljaju da se razvijaju). Većina dobavljača rješenja razvila je vlastite modifikacije različitih metodologija. Svi ovi principi su zasnovani na holističkom pristupu DevOps-u, a organizacije svih veličina mogu ih koristiti.

Razvijte i testirajte u okruženju nalik proizvodnom

Poenta je omogućiti timovima za razvoj i osiguranje kvaliteta (QA) da razvijaju i testiraju sisteme koji se ponašaju kao proizvodni sistemi kako bi mogli vidjeti kako se aplikacija ponaša i radi dobro prije nego što bude spremna za implementaciju. .

Aplikaciju treba povezati s proizvodnim sistemima što je ranije moguće u životnom ciklusu kako bi se riješila tri glavna potencijalna problema. Prvo, omogućava vam da testirate aplikaciju u okruženju bliskom stvarnom okruženju. Drugo, omogućava vam da unaprijed testirate i potvrdite procese isporuke aplikacija. Treće, to omogućava operativnom timu da testira rano u životnom ciklusu kako će se njihovo okruženje ponašati kada se aplikacije implementiraju, čime im se omogućava da kreiraju okruženje koje je vrlo prilagodljivo aplikaciji.

Primena sa reproduktivnim, pouzdanim procesima

Ovaj princip omogućava razvojnim i operativnim timovima da održavaju agilne procese razvoja softvera tokom čitavog životnog ciklusa. Automatizacija je kritična za stvaranje iterativnih, pouzdanih i ponovljivih procesa. Stoga, organizacija mora kreirati cevovod isporuke koji omogućava kontinuirano, automatizirano postavljanje i testiranje. Česta implementacija također omogućava timovima da testiraju procese implementacije, čime se smanjuje rizik od neuspjeha implementacije tokom stvarnih izdanja.

Praćenje i provera kvaliteta rada

Organizacije su dobre u praćenju proizvodnih aplikacija jer imaju alate koji bilježe metriku i ključne indikatore učinka (KPI) u realnom vremenu. Ovaj princip pomiče praćenje rano u životnom ciklusu, osiguravajući da automatizirano testiranje prati funkcionalne i nefunkcionalne atribute aplikacije u ranoj fazi procesa. Kad god se aplikacija testira i implementira, metrika kvaliteta se mora ispitati i analizirati. Alati za praćenje pružaju rano upozorenje o problemima performansi i kvaliteta koji mogu nastati tokom proizvodnje. Ovi indikatori treba da budu prikupljeni u formatu koji je dostupan i razumljiv svim zainteresovanim stranama.

Poboljšanje povratnih petlji

Jedan od ciljeva DevOps procesa je omogućiti organizacijama da odgovore i brže izvrše promjene. Prilikom isporuke softvera, ovaj cilj zahtijeva od organizacije da rano dobije povratne informacije, a zatim brzo uči iz svake poduzete akcije. Ovaj princip zahtijeva od organizacija da kreiraju komunikacijske kanale koji omogućavaju zainteresovanim stranama pristup i interakciju na bazi povratnih informacija. Razvoj se može obaviti prilagođavanjem njihovih projektnih planova ili prioriteta. Proizvodnja može djelovati poboljšanjem radnog okruženja.

Dev

  • planiranje: Kanboard, Wekan i druge Trello alternative GitLab, Tuleap, Redmine i druge JIRA alternative Mattermost, Roit.im, IRC i druge alternative za Slack.
  • Pisanje koda: Git, Gerrit, Bugzilla; Jenkins i drugi CI/CD alati otvorenog koda
  • Skupština: Apache Maven, Gradle, Apache Ant, Packer
  • Ispitivanja: JUnit, krastavac, selen, Apache JMeter

Ops

  • Izdavanje, implementacija, operacije: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, itd., Netflix Archaius, Terraform
  • Nadgledanje: Grafana, Prometheus, Nagios, InfluxDB, Fluentd i još mnogo toga obuhvaćeno u ovom vodiču

(* Alati za operacije su numerisani redoslijedom kako ih koriste komande operacija, ali njihov alat se preklapa sa fazama životnog ciklusa alata za izdavanje i implementaciju. Numeracija je uklonjena radi čitljivosti.)

U zaključku

DevOps je sve popularnija metodologija koja ima za cilj spojiti programere i operatere. Jedinstven je, razlikuje se od tradicionalnih IT operacija i komplementaran je Agile-u (ali ne toliko fleksibilan).

DevOps vodič za početnike

Saznajte detalje o tome kako da dobijete traženu profesiju od nule ili na viši nivo u smislu vještina i plate tako što ćete završiti SkillFactory plaćene online kurseve:

više kurseva

Korisno

izvor: www.habr.com

Dodajte komentar