CI/CD je metod za često dostavljanje aplikacija korisnicima uvođenjem automatizacije u faze razvoja aplikacija. Glavni koncepti koji se pripisuju CI/CD-u su kontinuirana integracija (CI), kontinuirana isporuka (CD) i kontinuirana primena. Ovo su rešenja za probleme koji integraciju novog koda mogu izazvati za razvojne i operativne timove.
Konkretno, CI/CD uvodi stalnu automatizaciju i kontinuirani nadzor tokom čitavog životnog ciklusa aplikacija, od faza integracije i testiranja do isporuke i primene.
Ove povezane prakse često se nazivaju “CI/CD pipeline“ i podržavaju ih razvojni i operativni timovi koji agilno rade zajedno sa DevOps timom ili SRE inženjerima.
Koja je razlika između CI i CD (i drugog CD-a)?
Akronim CI/CD ima nekoliko značenja. “CI” uvek se odnosi na kontinuiranu integraciju, što je proces automatizacije za programere.
Uspešan CI znači da se nove promene koda u aplikaciji redovno prave, testiraju i spajaju u zajedničko skladište .
To je rešenje za problem imanja previše grana aplikacije u toku razvoja odjednom, koje bi mogle biti u sukobu jedna sa drugom.
“CD” se odnosi na kontinuiranu isporuku i/ili kontinuiranu primenu, što su povezani koncepti koji se ponekad koriste naizmenično.
Obe oblasti se odnose na automatizaciju daljih faza “pipeline”, ali se ponekad koriste odvojeno da bi se pokazalo koliko se automatizacija dešava.
Kontinuirana isporuka obično znači da se promene programera u aplikaciji automatski testiraju na greške i otpremaju u skladište (kao što je GitHub ili kontejner tehnologija Docker), gde ih operativni tim zatim može primeniti u proizvodno okruženje.
To je odgovor na problem loše vidljivosti i komunikacije između razvojnih i poslovnih timova. Svrha kontinuirane isporuke je da obezbedi minimalan napor da se primeni novi kod.
Kontinuirana primena (drugi mogući “CD”) može se odnositi na automatsko objavljivanje promena programera iz skladišta u produkciju, gde ga mogu koristiti kupci. Rešava problem preopterećenja operativnih timova ručnim procesima koji usporavaju isporuku aplikacija.
Nadovezuje se na prednosti kontinuirane isporuke automatizacijom sledeće faze u procesu.
Moguće je da je CI/CD specifican samo za povezane prakse kontinuirane integracije i kontinuirane isporuke, ili može značiti i sve tri povezane prakse kontinuirane integracije, kontinuirane isporuke i kontinuirane primene. Da bi bilo komplikovanije, ponekad se koristi “continuous delivery” na način koji obuhvata procese kontinuiranog rasporedjivanja.
Na kraju, verovatno nije vredno vašeg vremena da se zaglavite u ovoj semantici – samo zapamtite da je CI/CD zaista proces, koji se često vizualizuje kao “pipeline”, koji uključuje dodavanje visokog stepena tekuće automatizacije i neprekidnog nadgledanja razvoja aplikacija.
Od slučaja do slučaja, na šta se termini odnose zavisi od toga koliko je automatizacije ugrađeno u CI/CD “pipeline”. Mnoga preduzeća počinju dodavanjem CI, a zatim napreduju ka automatizaciji isporuke i primene, na primer kao deo aplikacija koje su izvorne cloud-u.
Kontinuirana integracija
U savremenom razvoju aplikacija, cilj je da više programera istovremeno radi na različitim funkcijama iste aplikacije.
Međutim, ako je organizacija podešena da objedini sav izvorni kod grana zajedno u jednom danu (poznat kao “merge day”), rezultujući posao može biti zamoran i dugotrajan.
To je zato što kada programer koji radi u izolaciji napravi promenu u aplikaciji, postoji šansa da će ona biti u sukobu sa različitim promenama koje istovremeno prave drugi programeri.
Ovaj problem se može dodatno pogoršati ako je svaki programer prilagodio sopstveno lokalno integrisano razvojno okruženje (IDE), umesto da se tim dogovori o jednom IDE zasnovanom na cloud-u.
Kontinuirana integracija, pomaže programerima da spoje svoje izmene koda nazad u zajedničku granu, ponekad svakodnevno. Kada se promene programera u aplikaciji spoje, te promene se validiraju automatskom izgradnjom aplikacije i pokretanjem različitih nivoa automatizovanog testiranja, obično testova jedinica i integracije, kako bi se osiguralo da promene nisu pokvarile aplikaciju. To znači testiranje svega, od klasa i funkcija do različitih modula koji čine celu aplikaciju. Ako automatizovano testiranje otkrije sukob između novog i postojećeg koda, CI olakšava brzo i često ispravljanje tih grešaka.
Kontinuirana isporuka
Nakon automatizacije izgradnje i testiranja jedinica i integracije u CI, kontinuirana isporuka automatizuje oslobađanje tog validiranog koda u skladište. Da biste imali efikasan kontinuirani proces isporuke, važno je da je CI već ugrađen u vaš razvojni “pipeline”. Cilj kontinuirane isporuke je imati kodnu bazu koja je uvek spremna za primenu u proizvodnom okruženju.
U kontinuiranoj isporuci, svaka faza – od spajanja promena koda do isporuke verzija spremnih za proizvodnju – uključuje automatizaciju testiranja i automatizaciju izdavanja koda. Na kraju tog procesa, operativni tim može brzo i lako da primeni aplikaciju u proizvodnju.
Kontinuirano raspoređivanje
Završna faza zrelog “pipeline” je kontinuirana primena. Kao proširenje neprekidne isporuke, koja automatizuje puštanje verzije spremne za proizvodnju u skladište koda, kontinuirana primena automatizacije puštanje aplikacije u proizvodnju-produkciju.
U praksi, kontinuirana primena znači da bi promena programera na aplikaciji u cloud-u mogla da bude objavljena u roku od nekoliko minuta od njenog pisanja (pod pretpostavkom da prođe automatizovano testiranje).
Ovo znatno olakšava kontinuirano primanje i uključivanje povratnih informacija korisnika. Uzeti zajedno, sve ove povezane CI/CD prakse čine primenu aplikacije manje rizičnim, pri čemu je lakše objaviti promene u aplikacijama u malim delovima, a ne odjednom. Međutim, postoji i mnogo ulaganja unapred, pošto će automatizovani testovi morati da budu napisani da bi se prilagodili različitim fazama testiranja i izdavanja u CI/CD “pipeline-u”.
Koji su uobičajeni alati?
CI/CD alati mogu pomoći timu da automatizuje svoj razvoj, primenu i testiranje. Neki alati se posebno bave integracijom, neki upravljaju razvojem i primenom, dok su drugi specijalizovani za kontinuirano testiranje ili srodne funkcije.
Jedan od najpoznatijih alata otvorenog koda za CI/CD je server za automatizaciju Jenkins.
Jenkins je dizajniran da rukuje bilo čim, od jednostavnog CI servera do kompletnog CD čvorišta.
Tekton Pepelines je CI/CD okvir za Kubernetes platforme koji pruža standardno CI/CD iskustvo u cloud-u sa kontejnerima.
Osim Jenkins-a i Tekton Pipelines-a, drugi CI/CD alati otvorenog koda koje biste možda želeli da istražite uključiju:
- Spinnaker, CD platforma napravljena za više cloud-a.
- GoCD, CI/CD server sa naglaskom na modeliranju I vizuelizaciji.
- Concourse, “an open-source continuous thing-doer”.
- Screwdriver, platforma za izgradnju dizajnirana za CD.
Timovi će možda želeti da razmotre i upravljanje CI/CD alatke, koje su dostupne od raznih cloud provajdera. Svi veliki igrači cloud platformi nude CI/CD rešenja, zajedno sa GitLab, CircleCI, Travis CI, Atlassian Bamboo, I mnogim drugim.
Pored toga svaki alat koji je temeljan za DevOps verovatno će biti deo CI/CDprocesa. Alati za automatizaciju konfiguracije (kao sto su Ansible, Chef I Puppet), container runtimes (kao što su Docker, rkt i cri-o) and container orchestration (Kubernetes) nisu striktno CI/CD alati, ali će se pojaviti u mnogim CI/CD radnim tokovima.
Napišite komentar