Ključne tačke članka (Key Takeaways)
-
Agilnost bez automatizacije je mrtvo slovo na papiru: Uvođenje Scrum ili Kanban sastanaka bez modernog inženjerskog cevovoda stvara samo privid brzine, dok stvarni kod mesecima čeka na rizično manuelno lansiranje.
-
Continuous Integration (kontinuirana integracija) sprečava „pakao spajanja koda“: Razvoj na glavnoj grani uz automatizovane testove pri svakom slanju koda garantuje da je softver u svakom sekundu tehnički ispravan.
-
Continuous Delivery (kontinuirana isporuka) pretvara puštanje koda u poslovnu odluku: Umesto tehničke panike u ponoć, prelazak na produkciju postaje rutinski, predvidiv i bezbedan proces dostupan na pritisak dugmeta.
-
DORA metrike daju egzaktne brojeve za menadžment: Učestalost isporuke, vreme prolaska izmene, stopa grešaka i vreme oporavka sistema direktno razdvajaju tehnološke lidere od kompanija koje gomilaju tehnički dug.
-
Budućnost pripada GitOps-u i veštačkoj inteligenciji: Prediktivno testiranje, samoisceljujući sistemi i platformsko inženjerstvo preuzimaju repetitivne operacije, ostavljajući inženjerima prostor za rešavanje složenih problema.
Iluzija brzine: zašto su lepljivi listići i ceremonije pojeli inženjersku suštinu
Gotovo da nema preduzeća u savremenom IT ekosistemu koje sa ponosom ne ističe svoju „potpunu agilnost“. Kancelarije i digitalne table prepune su kolona, dvonedeljni sprintovi se religiozno planiraju, dnevni sastanci (daily standup) ne propuštaju se ni po koju cenu, a sertifikovani stručnjaci vode računa o svakom zarezu metodologije. Ipak, kada zagrebete ispod te organizacione fasade i postavite prosto tehničko pitanje: „Koliko je minuta potrebno da linija koda koju je programer upravo otkucao bezbedno stigne do krajnjeg korisnika na produkciji?“, entuzijazam naglo nestaje.
Odgovor u mnogim kompanijama i dalje glasi: tri nedelje, mesec dana ili čitav kvartal. Lansiranje nove verzije zakazuje se za nedelju u dva sata ujutru. Dežura deset inženjera sa hladnim znojem na čelu, baze podataka se ručno bekapuju, a menadžment se moli da se ne ponovi fijasko iz prethodnog meseca.
To nije agilno poslovanje. To je organizacioni teatar koji prikriva surovu inženjersku zaostalost.
Agilni manifest (Agile Manifesto) od svog nastanka 2001. godine nije bio zamišljen kao birokratski okvir za praćenje radnih zadataka, već kao filozofija brze povratne sprege sa stvarnim tržištem. Njegovi tvorci bili su prekaljeni inženjeri koji su podrazumevali tehničku disciplinu. Ako proces prevođenja, testiranja i plasiranja softvera zavisi od manuelnog rada, ljudske koncentracije i administrativnih odobrenja, vaše poslovanje je suštinski tromo, bez obzira na to koliko Scrum ceremonija sprovodite.
Tehnološki most koji pretvara lepe organizacione želje u surovu tržišnu efikasnost zove se CI/CD – Continuous Integration (kontinuirana integracija) i Continuous Delivery (kontinuirana isporuka). Bez ove inženjerske kičme, svaka priča o digitalnoj transformaciji ostaje na nivou skupe zablude, o čemu redovno pišemo na stranicama portala IT Network, gde analiziramo realne probleme domaće i regionalne tehnološke scene.
Šta je zapravo Continuous Integration: kraj pakla spajanja koda
Da bismo razumeli zašto je Continuous Integration napravio revoluciju, moramo se podsetiti kako je izgledao rad pre njega – a kako, nažalost, i dalje izgleda u firmama zaglavljenim u prošlosti.
Tradicionalni razvoj softvera oslanja se na izolovane grane (branches) koje žive nedeljama ili mesecima. Svaki programer ili tim zatvori se u svoju funkcionalnost. Sve deluje idilično na lokalnim mašinama dok ne kucne čas konačnog spajanja sa glavnim kodom. Tada nastaje scenario koji industrija opravdano naziva „pakao integracije“ (merge hell). Hiljade izmena se sudaraju, biblioteke se ne gađaju, logika puca na stotinama mesta, a timovi troše dane pokušavajući da sastave funkcionalnu celinu.
Continuous Integration rešava ovaj problem na radikalan, ali disciplinovan način: sav kod se integriše u centralno skladište više puta dnevno.
[Programer šalje kod (Commit/Push)]
│
▼
[Automatizovani CI Server pokreće Pipeline]
│
┌───────┴───────┐
▼ ▼
[Kompilacija/Build] [Jedinični testovi (Unit Tests)]
│ │
└───────┬───────┘
▼
[Statička analiza koda (SonarQube/Linteri)]
│
▼
[Integracioni i bezbednosni testovi]
│
┌───────┴───────┐
▼ ▼
[Uspeh / PASS] [Pad / FAIL -> Momentalan alarm celom timu]
Kako je to pionirski definisao Martin Fowler u svom temeljnom eseju o kontinuiranoj integraciji, CI nije samo softverski alat koji instalirate na serveru. CI je pre svega socijalna i profesionalna navika inženjerskog tima.
On zahteva ispunjenje tri ključna stuba:
-
Zajedničko skladište sa razvojem na glavnoj grani (Trunk-based development):
Umesto glomaznih grana koje žive mesecima po starom GitFlow modelu, inženjeri dele rad na sitne delove koji se spajaju u glavnu granu (main/trunk) najmanje jednom dnevno. Svaka izmena je toliko mala da konflikt, ukoliko nastane, može da se reši za pet minuta, a ne za pet dana.
-
Beskompromisna automatizacija testova:
Onog trenutka kada programer pošalje kod na server, automatizovani sistem pokreće proces. Nema ljudskog faktora. Izvršavaju se jedinični testovi (unit tests), integracioni testovi (integration tests), proveravaju se zavisnosti i vrši se statička analiza koda (static code analysis) pomoću alata kao što je SonarQube.
-
Crveni alarm zaustavlja fabriku:
Ako ijedan test padne, ceo proces staje. „Build is broken“. U zrelim inženjerskim kulturama, popravka slomljene integracije ima apsolutni prioritet nad pisanjem bilo kakvog novog koda. Niko ne sme da ignoriše crvenu lampicu, jer je čist i stabilan kod na glavnoj grani svetinja od koje zavisi opstanak celog sistema.
Kada tim usvoji ovu disciplinu, nestaje strah od spajanja koda. Greške se ne otkrivaju mesec dana kasnije na produkciji pred zaprepašćenim kupcima, već za tri minuta na ekranu programera koji je grešku napravio, dok mu je kontekst zadatka još uvek svež u glavi.
Razlika između Continuous Delivery i Continuous Deployment: kontrola rizika naspram potpune automatizacije
U poslovnim i tehničkim razgovorima termini Continuous Delivery i Continuous Deployment često se neopravdano mešaju, iako prave suštinsku razliku u načinu upravljanja poslovnim rizikom.
+-------------------------------------------------------------------------------+
| KONTINUIRANA INTEGRACIJA (CI) |
| Kod -> Automatizovani Build -> Automatizovani Testovi |
+-------------------------------------------------------------------------------+
│
▼
+-------------------------------------------------------------------------------+
| KONTINUIRANA ISPORUKA (CONTINUOUS DELIVERY) |
| Automatizovano postavljanje na Staging -> Poslovno odobrenje jednim klikom |
+-------------------------------------------------------------------------------+
│
▼
+-------------------------------------------------------------------------------+
| KONTINUIRANO RASPOREĐIVANJE (CONTINUOUS DEPLOYMENT) |
| Potpuno automatizovan prelazak svakog uspešnog testa direktno na Produkciju |
+-------------------------------------------------------------------------------+
Continuous Delivery (kontinuirana isporuka) podrazumeva da je softverski paket u svakom trenutku u stanju da bude lansiran na produkciju bez ikakvih dodatnih tehničkih priprema. Svaka izmena koja prođe CI fazu automatski se postavlja u testna, predprodukciona okruženja (staging) koja su verna kopija produkcije. Međutim, prelazak na samu produkciju je poslovna odluka. On se dešava pritiskom na jedno dugme, onda kada to odgovara marketingu, prodaji ili strateškom planu kompanije.
Continuous Deployment (kontinuirano raspoređivanje) ide korak dalje: eliminiše čak i to jedno dugme. Svaka promena u kodu koja uspešno prođe kompletnu bateriju automatizovanih testova automatski, bez ikakvog ljudskog posredovanja, odlazi direktno pred krajnje korisnike na produkciju. Kompanije poput servisa Netflix, Amazon ili Spotify rade na ovom principu, izvršavajući hiljade produkcionih lansiranja svakog dana.
Da li svaka firma mora da teži potpunom Continuous Deployment-u? Apsolutno ne. Za bankarske sisteme, medicinske uređaje ili sisteme za upravljanje letovima, regulatorna pravila često zahtevaju formalnu verifikaciju. Međutim, svaka moderna kompanija mora da ima Continuous Delivery.
Suština je u tome da inženjerski tim više nikada ne sme da bude usko grlo koje koči biznis. Izgovor: „Funkcionalnost je završena, ali nam treba tri nedelje da je spremimo za produkciju“ u modernom poslovanju predstavlja direktan znak nekompetentnosti i izvor finansijskih gubitaka.
Strategije bezbednog lansiranja: kako zaboraviti na padove sistema
Najveći strah rukovodilaca kada se pomene često puštanje koda jeste rizik od pada celog sistema. Taj strah je potpuno opravdan ako radite po starim metodama gde se novi kod prepisuje preko starog na živom serveru.
Moderna CI/CD infrastruktura oslanja se na napredne mehanizme koji rizik svode na statističku grešku:
Plavo-zeleno raspoređivanje (Blue-green deployment)
U ovom modelu postoje dva identična produkciona okruženja. Plavo okruženje opslužuje sve korisnike (živi sistem). Zeleno okruženje je pasivno. Kada je novi kod spreman, CI/CD cevovod ga postavlja na zeleno okruženje gde se vrše finalne automatizovane provere.
Kada je sve potvrđeno, mrežni usmerivač (load balancer) u mikrosekundi preusmerava celokupan saobraćaj sa plavog na zeleno okruženje. Korisnici ne primećuju ni delić sekunde prekida. Ukoliko se pojavi bilo kakav neočekivan problem, saobraćaj se isto tako munjevito vraća nazad na plavu verziju. Nema panike, nema zastoja.
Kanarinac lansiranje (Canary releases)
Nazvana po kanarincima koje su rudari nosili pod zemlju da bi na vreme otkrili opasne gasove, ova tehnika podrazumeva puštanje nove verzije softvera samo malom procentu stvarnih korisnika (npr. 1% ili 2%).
Sistem za opservabilnost (observability) prati telemetriju: potrošnju memorije, vreme odziva, procenat grešaka. Ako metrike ostanu savršene, procenat se postepeno povećava na 10%, 25%, 50% i konačno 100%. Ako bilo koji parametar odstupi, sistem automatski vraća prethodnu verziju (automated rollback) pre nego što je velika većina korisnika uopšte primetila da se nešto dešava.
Prekidači funkcionalnosti (Feature flags)
Ovo je ključna tačka razdvajanja inženjerskog lansiranja od poslovnog predstavljanja. Kod za novu opciju može biti postavljen na produkciju, ali sakriven iza programskog prekidača. Funkcionalnost je fizički na serveru, ali je neaktivna.
Marketing može da aktivira opciju za specifičnu grupu korisnika, za određeni region ili za sve u tačno određeni sat, bez potrebe da inženjeri u tom trenutku bilo šta diraju na serverima. Na taj način, inženjering se bavi stabilnošću, a biznis upravlja vrednošću. Za timove koji žele da podignu radnu produktivnost i smanje operativni stres, usvajanje ovakvih praksi je podjednako važno kao i izbor pravih alata, što često ističu i autori na platformi Joombooz kada govore o modernim metodama digitalnog rada.
DORA metrike: jedini podaci koji zaista govore istinu o vašem timu
U tradicionalnom menadžmentu, produktivnost programera se decenijama merila potpuno besmislenim podacima: brojem napisanih linija koda, brojem zatvorenih Jira tiketa ili brojem radnih sati provedenih za stolom. To su metrički promašaji koji podstiču loše ponašanje i nagrađuju pisanje preglomaznog, neefikasnog koda.
Kroz višegodišnje opsežno istraživanje koje sprovodi DevOps Research and Assessment tim u okviru kompanije Google, definisane su takozvane DORA metrike (Google Cloud DORA Research). One predstavljaju zlatni standard savremene industrije jer mere stabilnost i brzinu isporuke vrednosti kroz četiri jasna parametra:
| DORA metrika | Značenje metrike | Tradicionalni timovi (Nizak nivo) | Elitni timovi (Visok nivo) | Poslovni uticaj |
| Učestalost isporuke (Deployment Frequency) | Koliko često kod uspešno stiže na produkciju | Jednom mesečno ili ređe | Više puta dnevno po potrebi | Brzina reakcije na zahteve kupaca i tržišne promene |
| Vreme prolaska izmene (Lead Time for Changes) | Vreme od prvog commita do rada na produkciji | Između jednog i šest meseci | Manje od jednog sata | Brzo monetizovanje novih ideja i funkcionalnosti |
| Vreme oporavka sistema (Time to Restore Service) | Koliko traje oporavak kada se desi havarija | Dani ili nedelje | Manje od jednog sata | Minimalni finansijski i reputacioni gubici tokom incidenata |
| Stopa neuspešnih izmena (Change Failure Rate) | Procenat lansiranja koja izazovu kvar | Preko 30% do 45% | Između 0% i 15% | Visok kvalitet, stabilnost i poverenje korisnika |
Ova tabela jasno dokazuje ono što su tradicionalni menadžeri smatrali nemogućim: brzina i stabilnost ne isključuju jedna drugu, već idu ruku pod ruku.
Kompanije koje imaju zrele CI/CD cevovode isporučuju stotine puta brže, a istovremeno imaju drastično manji procenat grešaka na produkciji. Razlog je jednostavan: kada su izmene male i prolaze kroz rigoroznu automatizaciju, verovatnoća greške pada, a ukoliko se problem i pojavi, tačno se zna koja ga je linija koda izazvala.
DevSecOps: pomeranje bezbednosti ulevo (Shift-left security)
U starom svetu razvoja softvera, tim za bezbednost (security) bio je bauk koji se pojavljivao na samom kraju projekta. Nakon šest meseci razvoja, neko bi pozvao bezbednjake na reviziju. Oni bi doneli spisak od pedeset kritičnih propusta i rekli: „Ovo ne sme na produkciju“. Projekat bi probio sve rokove, budžeti bi eksplodirali, a između inženjera i bezbednosnih stručnjaka stvorio bi se dubok animozitet.
Uvođenjem modernih CI/CD principa rođen je DevSecOps, a osnovna filozofija glasi: pomerite bezbednost ulevo (shift-left security).
To znači da se bezbednost ne proverava na kraju, već na samom početku procesa, u fazi pisanja koda:
[Lokalni Editor] ──> [CI Pipeline: SAST] ──> [SCA: Analiza biblioteka] ──> [Produkcija]
│ │ │ │
(Linter/Tajna upozorenja) (Analiza koda) (Zavisnosti i licence) (DAST/Monitoring)
-
Statičko bezbednosno testiranje (SAST – Static Application Security Testing):
Alati integrisani u cevovod skeniraju sam izvorni kod i traže uobičajene propuste poput SQL ubrizgavanja (SQL injection) ili nepravilne obrade ulaznih podataka, pre nego što kod uopšte bude preveden.
-
Analiza softverskog sastava (SCA – Software Composition Analysis):
Savremene aplikacije sastoje se od 80 do 90 procenata gotovih biblioteka otvorenog koda (open-source dependencies). Ako biblioteka koju ste uvezli ima poznatu ranjivost (CVE), alat u cevovodu automatski obara build i sprečava kompromitovanje sistema. Takođe, generiše se softverska specifikacija materijala (SBOM – Software Bill of Materials), što je danas zakonska obaveza u regulisanim industrijama.
-
Lov na procurele tajne (Secret scanning):
Jedna od najčešćih inženjerskih katastrofa jeste slučajno slanje API ključeva, sertifikata ili lozinki u Git repozitorijum. Specijalizovani alati unutar cevovoda presecaju takve pokušaje pre nego što kod uopšte napusti radnu stanicu inženjera.
Bezbednost prestaje da bude kočničar poslovanja i postaje sastavni deo inženjerskog kvaliteta. Programer dobija trenutnu povratnu informaciju i popravlja sigurnosni propust u istom trenutku kada rešava i običan logički bag.
Sledeća evolucija: GitOps i platformsko inženjerstvo
Poslednjih godina svedoci smo prelaska sa tradicionalnih virtuelnih mašina na kontejnere i orkestratore poput platforme Kubernetes. U tom novom okruženju, definicija CI/CD-a doživela je sledeću veliku evoluciju kroz GitOps i Platform Engineering (platformsko inženjerstvo).
U GitOps modelu, Git repozitorijum postaje jedini izvor istine (single source of truth) ne samo za aplikativni kod, već i za celokupnu infrastrukturu (Infrastructure as Code – IaC). Alati poput ArgoCD ili Flux ne čekaju da ih spoljni server pozove i gurne im novu verziju. Umesto toga, agenti unutar samog produkcionog klastera stalno posmatraju Git skladište.
Čim inženjer spoji novu konfiguraciju, agent primećuje razliku i automatski usklađuje stanje na produkciji sa stanjem u repozitorijumu. Ako neko pokuša ručno da promeni konfiguraciju na serveru mimo Git-a, GitOps kontroler će odmah pregaziti tu izmenu i vratiti definisano stanje, potpuno eliminišući takozvani drift infrastrukture.
Paralelno sa tim, velike organizacije napuštaju praksu u kojoj svaki tim od nule pravi svoje pipeline skripte. Kroz platformsko inženjerstvo grade se interne platforme za programere (IDP – Internal Developer Platforms). Senior inženjeri pripremaju standardizovane, bezbedne i optimizovane cevovode kao interni proizvod, omogućavajući produktnim timovima da kroz jednostavan korisnički portal dobiju sve što im je potrebno za lansiranje servisa za nekoliko minuta, uz potpuno poštovanje svih organizacionih standarda.
Uloga veštačke inteligencije u modernim cevovodima: pogled ka 2030. godini
Veštačka inteligencija više nije samo teorijski koncept u DevOps sferi. Ona postaje integralni sloj modernih CI/CD platformi, rešavajući neke od najzamornijih inženjerskih problema:
-
Prediktivno biranje testova (Predictive test selection):
U ogromnim korporativnim sistemima, kompletna baterija integracionih i regresionih testova može trajati satima. AI modeli analiziraju koje su tačno datoteke i linije koda promenjene, upoređuju to sa istorijatom prethodnih incidenata i pokreću samo onih 5% testova za koje postoji stvarna verovatnoća da mogu pasti. Vreme povratne informacije smanjuje se sa tri sata na osam minuta.
-
Inteligentna trijaža i analiza korena problema (Root cause analysis):
Kada pipeline padne usred noći na kompleksnom projektu, analiza hiljada linija logova oduzima dragoceno vreme. Modeli mašinskog učenja danas automatski sumiraju pad, filtriraju šum, lociraju tačan uzrok kvara i serviseru predlažu konkretnu ispravku u kodu.
-
Samoisceljujući sistemi i automatske zakrpe:
Ukoliko skener ranjivosti pronađe zastarelu biblioteku sa bezbednosnom rupom, AI agenti već sada automatski kreiraju zaseban pull request, ažuriraju zavisnost, pokreću testove da provere kompatibilnost i predaju inženjeru gotov, proveren zahtev za spajanje na samo jedan klik odobrenja.
Do 2030. godine, manuelno održavanje i debagovanje CI/CD konfiguracionih fajlova postaće anahronizam. Cevovodi će postati autonomni sistemi koji se sami prilagođavaju opterećenju, optimizuju troškove oblačnih resursa i proaktivno sprečavaju incidente pre nego što stignu do korisnika.
Najčešće zablude i kulturološki otpori u domaćoj praksi
Zašto mnoge kompanije u Srbiji i regionu i dalje tapkaju u mestu, iako su alati poput GitHub Actions, GitLab CI ili Jenkins-a svima dostupni? Razlog nikada nije u nedostatku tehnologije, već u dubokim kulturološkim problemima i nerazumevanju suštine od strane menadžmenta:
-
„Nemamo mi vremena da pišemo testove, klijent traži nove funkcionalnosti“:
Ovo je najskuplja rečenica u istoriji softverskog inženjeringa. Tim koji ne piše testove zapravo troši tri puta više vremena na ručno debagovanje, gašenje požara na produkciji i objašnjavanje klijentu zašto sistem ponovo ne radi. Pisanje testova nije trošak, već investicija koja omogućava dugoročnu brzinu.
-
Cevovodi koji traju večno:
Ako vašem CI/CD pipeline-u treba 45 minuta ili sat vremena da izvrši provere, inženjeri će prestati da ga čekaju. Prebaciće se na drugi zadatak, izgubiće fokus i počeće da šalju velike, netestirane pakete koda. Dobar cevovod mora dati povratnu informaciju u roku od 5 do 10 minuta. Ako traje duže, dužni ste da ga paralelizujete, keširate i optimizujete.
-
Zanemarivanje nepouzdanih testova (Flaky tests):
To su testovi koji nekada prođu, a nekada padnu bez ikakvih izmena u kodu. Kada tim počne da govori: „Ma to samo klikni ponovo, proći će iz drugog puta“, kultura kvaliteta je mrtva. Poverenje u sistem nestaje, a kada se pojavi stvarna greška, biće ignorisana kao još jedan lažni alarm.
-
Kupovina alata bez promene mentaliteta:
Menadžment često veruje da se uvođenje CI/CD-a rešava kupovinom skupe licence za neku cloud platformu. Ako inženjeri i dalje drže kod na izolovanim granama mesecima i spajaju ga pred sam release, niste postigli ništa osim što ste napravili nepotreban trošak na serverskoj infrastrukturi.
Inženjerska izvrsnost kao jedini stvarni poslovni diferencijator
Doba u kome je kompanija mogla da izgradi održivu prednost na tržištu samo time što ima dobru poslovnu ideju ili agresivan marketing nepovratno je iza nas. Svaku dobru ideju konkurencija danas može da kopira za nekoliko nedelja.
Prava, dugoročna prednost ne leži u samoj ideji, već u sposobnosti organizacije da uči brže od drugih i da svoje zamisli bezbedno, pouzdano i neprekidno isporučuje stvarnim korisnicima.
Continuous Integration i Continuous Delivery nisu tehničke igračke rezervisane za tehnološke gigante iz Silicijumske doline. Oni su fundamentalna inženjerska disciplina i preduslov bez koga agilno poslovanje jednostavno ne postoji. Kompanije koje to shvate na vreme pretvaraju svoj softverski razvoj u predvidivu, mirnu i visoko profitabilnu mašinu. One druge nastaviće da troše vikende na haotična dežurstva, pitajući se zašto im uprkos svim Scrum sertifikatima konkurencija neumoljivo beži.
Često postavljana pitanja (FAQ)
Koliko je vremena potrebno malom timu da uspostavi osnovni CI/CD cevovod?
Za manji tim i jednostavniju aplikaciju, osnovni CI cevovod (kompilacija, automatski linteri i pokretanje jediničnih testova) može se postaviti za svega nekoliko dana korišćenjem savremenih alata kao što su GitHub Actions ili GitLab CI. Prelazak na kompletan Continuous Delivery sa automatskim raspoređivanjem na staging i produkciju zahteva više vremena, prvenstveno zbog potrebe za pisanjem kvalitetnih testova i pripremom infrastrukture, što obično traje nekoliko nedelja u zavisnosti od složenosti sistema.
Da li je zastareli Jenkins i dalje prihvatljiv izbor za nove projekte?
Iako Jenkins i dalje pokreće infrastrukturu mnogih velikih korporacija zbog ogromnog broja dodataka (plugins), on predstavlja značajan operativni dug za nove projekte. Zahteva namensko održavanje servera, stalna bezbednosna ažuriranja i kompleksnu konfiguraciju. Savremeni projekti gotovo uvek biraju rešenja bazirana na cloud infrastrukturi ili GitOps operaterima koji koriste jednostavne YAML definicije i ne zahtevaju održavanje sopstvenih servera.
Šta uraditi ako u postojećem sistemu uopšte nemamo testove (Legacy codebase)?
Pokušaj da se odjednom napišu testovi za kompletan stari sistem uvek vodi u neuspeh. Najbolja inženjerska praksa je pravilo izviđača (Boy Scout Rule): za svaki novi zadatak ili popravku baga na postojećem kodu, obavezno se piše test koji pokriva taj konkretni deo. Takođe, preporučuje se postavljanje takozvanih „end-to-end“ ili testova crne kutije (black-box tests) oko najkritičnijih poslovnih tokova aplikacije, čime se stvara bezbednosna mreža pre dubljeg refaktorisanja.
Koja je razlika između jediničnih (unit) i integracionih (integration) testova u CI cevovodu?
Jedinični testovi proveravaju najmanje delove koda (funkcije, metode) u potpunoj izolaciji od spoljnog sveta, izvršavaju se u milisekundama i čine temelj piramide testiranja. Integracioni testovi proveravaju kako više komponenti radi zajedno (npr. komunikacija servisa sa bazom podataka ili spoljnim API servisom). Oni su sporiji i zahtevniji za izvršavanje, zbog čega se u cevovodu obično pokreću tek nakon što svi jedinični testovi uspešno prođu.
Da li je prelazak na CI/CD opravdan ako imamo samo jednog ili dva programera?
Apsolutno jeste. Za male timove CI/CD je još važniji jer oni nemaju luksuz posebnih odeljenja za kontrolu kvaliteta (QA) ili sistem administraciju. Kada automatizovani sistem preuzme testiranje, pakovanje i prenos na server, programeri štede sate rada nedeljno i izbegavaju ljudske greške koje nastaju usled umora, što im omogućava da se u potpunosti posvete razvoju samog proizvoda.



