ДевОпс Увод за почетнике

DevOps je termin koji se često koristi, ali mnogi ljudi ga različito tumače.

Razumevanje i definisanje tačnog značenja DevOps-a može biti kompleksno. Zbog toga je korisno poznavati osnovne koncepte povezane sa DevOps-om, kao i njegovu istoriju razvoja, kako bi se stekao sveobuhvatan uvid.

Poreklo DevOps-a

DevOps je odličan primer agilnog razvoja softvera. Ideja o DevOps-u proizašla je iz potrebe da se prati ubrzani razvoj softvera, što je postignuto agilnim metodama. Tokom poslednje decenije, značajan napredak u agilnoj kulturi i praksi ukazao je na potrebu za celovitijim pristupom celokupnom životnom ciklusu isporuke softvera.

Možda se pitate šta je zapravo agilni razvoj softvera?

Agilni razvoj je širok pojam koji obuhvata nekoliko iterativnih i inkrementalnih metodologija razvoja softvera. Popularne agilne metodologije uključuju Scrum, Kanban, Scaled Agile Framework® (SAFe®), Lean Development i Extreme Programming (XP).

Iako sve ove agilne metodologije dele iste osnovne vrednosti i viziju, svaka od njih ima jedinstven pristup. Sve ove metodologije podrazumevaju iteracije i kontinuirane povratne informacije radi uspešnog usavršavanja i isporuke skalabilnog softvera. Takođe, obuhvataju stalno planiranje, kontinuirano testiranje, kontinuiranu integraciju i druge neprekidne procese, kako za projekat, tako i za sam softver.

Za razliku od tradicionalnih procesa u stilu vodopada, ove agilne metodologije su fleksibilne i prilagodljive. Jedna od ključnih prednosti agilnih metodologija jeste fokus na osnaživanju ljudi kroz saradnju i zajedničko donošenje brzih odluka.

Slika od Segue

Ideali DevOps-a primenjuju proširenu praksu agilnog razvoja kako bi se poboljšao protok promena u softveru kroz faze izgradnje, validacije, implementacije i isporuke. Ovo omogućava multifunkcionalnom timu da preuzme potpunu odgovornost za softverski proizvod – od samog dizajna do proizvodnje.

Izazovi koje rešava DevOps

Proces implementacije – Distribuirane aplikacije često zahtevaju implementaciju binarnih i konfiguracionih datoteka na više servera. Situacija se dodatno komplikuje kada se radi o velikom broju servera. Izazovno je shvatiti šta, kako i gde treba rasporediti. Kakav je rezultat toga?

Dugo čekanje da se artefakti prebace u naredno okruženje usporava sve procese, uključujući testiranje i izlazak na tržište.

DevOps omogućava programerima softvera i veb-aplikacija, kao i IT operaterima, da primene procese kroz besprekornu saradnju. To omogućava da se proveri šta funkcioniše, a zatim unapredi proces automatizacijom za kontinuirani razvoj i omogući učestaliji razvoj.

DevOps ciljevi

Poboljšava saradnju između svih učesnika u projektu, od planiranja do isporuke, i automatizuje procese isporuke sa ciljem da se:

  • Poveća učestalost raspoređivanja
  • Skrati vreme potrebno za plasiranje krajnjeg proizvoda
  • Smanji stopa neuspešnosti novih izdanja
  • Skrati vreme između popravki
  • Poboljša vreme potrebno za oporavak

Uobičajeni DevOps scenario

Pre započinjanja novog softverskog projekta, ceo tim se sastaje. Tim čine programeri, testeri, operativni stručnjaci i podrška. Zajedno prave plan za kreiranje potpuno funkcionalnog softvera koji je spreman za implementaciju.

Svakodnevno se postavlja novi kod čim ga programeri završe. Automatska procedura testiranja obezbeđuje da je kod spreman za implementaciju. Nakon što kod dobije potvrdu od automatizovanog testiranja, implementira se na manji broj korisnika. Kod se prati u kratkom periodu da bi se osiguralo da nema nepredviđenih problema i da je stabilan. Zatim se novi kod implementira na sve korisnike kada se konačnim praćenjem utvrdi da je stabilan. Značajan deo koraka nakon planiranja i razvoja obavlja se bez ljudske intervencije.

Različite faze zrelosti DevOps-a

Postoji više faza zrelosti DevOps-a. Evo ključnih faza koje je važno znati.

Razvoj vodopadom

Pre kontinuirane integracije, razvojni timovi su pisali velike količine koda, koje su zatim spajali različiti timovi za objavljivanje. Verzije koda su se toliko razlikovale da su često bile potrebne brojne promene.

Unos ovih brojnih izmena trajao je i po nekoliko meseci. Ovaj proces nije bio efikasan.

Kontinuirana integracija

Kontinuirana integracija je praksa brzog integrisanja novorazvijenog koda sa glavnim kodom koji treba da bude objavljen. Kada je u pitanju objavljivanje koda, kontinuirani razvoj pomaže da se uštedi dosta vremena.

DevOps nije uveo ovaj termin. Kontinuirana integracija je agilna inženjerska praksa koja potiče iz metodologije ekstremnog programiranja. DevOps je prihvatio ovu praksu jer je potrebna automatizacija kada je u pitanju uspešna implementacija kontinuirane integracije. Kontinuirana integracija je često prvi korak ka zrelosti DevOps-a.

Sa DevOps aspekta, kontinuirana integracija obuhvata korake kao što su provera koda, kompajliranje u upotrebljiv kod i izvršavanje određenih testova validacije.

Kontinuirana isporuka

Kontinuirana isporuka je nadogradnja na kontinuiranu integraciju i sledeća faza u DevOps-u.

Kontinuirana isporuka omogućava dodatnu automatizaciju i testiranje, tako da se kod ne samo brzo spaja sa glavnom linijom koda, već je i skoro spreman za implementaciju bez ljudske intervencije.

Praksa je održavanje baze koda u stanju koje je gotovo spremno za implementaciju.

Kontinuirana implementacija

Kontinuirana implementacija je napredni korak u odnosu na kontinuiranu isporuku. Ova praksa omogućava implementaciju svih promena u produkciju bez ljudske intervencije.

Tim koji radi na kontinuiranom razvoju nikada ne implementira kod bez prethodnog testiranja. Sav novokreirani kod prolazi kroz automatizovano testiranje pre nego što uđe u produkcionu fazu. Kod se prvo implementira na mali broj korisnika, a automatizovana povratna sprega prati kvalitet i upotrebu pre nego što kod pređe na sledeći nivo.

Mali broj kompanija, poput Netflix-a, Etsy-a, Amazona, Pinterest-a, Flicker-a, IMVU-a, Google-a, itd., kontinuirano razvijaju svoje procese.

Vrednost

DevOps je fokusiran na razvoj kulture saradnje i poboljšanje efikasnosti kroz automatizaciju pomoću različitih DevOps alata. Za implementaciju DevOps-a za svoje softversko rešenje, potrebno je kombinovati kulturu i alate.

DevOps kultura

DevOps je specifična kultura koja pomaže da se poboljša saradnja, smanji haos, bolje upravlja zajedničkim odgovornostima, implementira automatizacija, poboljša kvalitet, ceni povratna informacija i poveća automatizacija.

Agilne metode su oduvek bile efikasan način isporuke softvera. Kada je reč o merenju napretka, agilni razvojni timovi to čine u smislu funkcionalnog softvera. Agilni metod DevOps kulture omogućava vlasnicima proizvoda, programerima, testerima i UX dizajnerima da blisko sarađuju sa istim ciljem na umu.

DevOps alati

DevOps alati obuhvataju alate za upravljanje konfiguracijom, testiranje i izradu sistema, razvoj aplikacija, kontrolu verzija i nadzor. Kada je u pitanju implementacija kontinuirane integracije, kontinuirane isporuke i kontinuirane implementacije, koriste se različiti alati, iako se neki od njih mogu deliti. Broj alata se povećava kako se napreduje kroz lanac isporuke.

Da pogledamo neke od popularnih alata i praksi.

Repozitorijum izvornog koda – Ovo je mesto gde programeri mogu da prijavljuju i menjaju kod. Repozitorijum izvornog koda upravlja različitim verzijama koda, čime se osigurava da programeri međusobno ne prepišu kod.

Git, Apache Subversion, IBM Rational, Artifactory, Nexus, Eclipse, itd., su neki od popularnih alata za skladištenje koda.

Server za izradu: – Server za izradu je alatka za automatizaciju koja se koristi za kompajliranje koda iz repozitorijuma izvornog koda u izvršnu bazu koda. Neki od često korišćenih servera za izradu su Jenkins, SonarQube i Artifactory.

Upravljanje konfiguracijom – Puppet, Chef, Ansible, SaltStack, Run Deck, itd., pomažu u upravljanju konfiguracijom aplikacije i infrastrukture kako bi se održala konzistentnost u svim okruženjima.

Virtuelna infrastruktura – AWS, GCP i Azure su tri glavna provajdera javnog oblaka koji nude gotovo sve infrastrukturne usluge. Oni pružaju API koji omogućava da se infrastruktura obezbedi i upravlja njom kao kodom.

Zaključak

Nadamo se da vam je ovo dalo predstavu o DevOps-u, a ako vas zanima ova oblast, možete isprobati online kurs za master klasu.

Članak napisala Payal Goyal