Ofrimi i vazhdueshëm (CD) është një qasje e inxhinierisë së softuerëve në të cilën ekipet prodhojnë softuer në cikle të shkurtra, duke siguruar që softueri të mund të publikohet në mënyrë të besueshme në çdo kohë. Synon ndërtimin, testimin dhe publikimin e softuerëve me shpejtësi dhe frekuencë më të madhe. Kjo qasje ndihmon në uljen e kostos, kohës dhe rrezikut të ofrimit të ndryshimeve duke lejuar përditësime më graduale të aplikacioneve në prodhim. Një proces i drejtpërdrejtë dhe i përsëritshëm i vendosjes është i rëndësishëm për ofrimin e vazhdueshëm.
Parimet
Sipas Neal Ford, ofrimi i vazhdueshëm përdor parimin "Sillni dhimbjen përpara", duke trajtuar detyrat e vështira herët, duke nxitur automatizimin dhe zbulimin e shpejtë të problemeve.
Dorëzimi i vazhdueshëm e trajton nocionin e zakonshëm të një tubacioni shpërndarjeje si një Poka-Yoke të thjeshtë: një grup validimesh nëpër të cilat një pjesë e softuerit duhet të kalojë në rrugën e tij për t'u publikuar. Kodi përpilohet nëse është e nevojshme dhe më pas paketohet nga një server ndërtimi sa herë që një ndryshim i nënshtrohet një depoje të kontrollit burimor, pastaj testohet nga një numër teknikash të ndryshme (ndoshta duke përfshirë testimin manual) përpara se të mund të shënohet si i publikueshëm.
Zhvilluesit e mësuar me një cikël të gjatë mund të kenë nevojë të ndryshojnë mënyrën e tyre të të menduarit kur punojnë në një mjedis CD-je. Çdo caktim kodi mund t'u lëshohet klientëve në çdo moment. Modele të tilla si aktivizimi i veçorive mund të jenë shumë të dobishme për caktimin e hershëm të kodit i cili nuk është ende gati për përdorim nga përdoruesit fundorë. Përdorimi i NoSQL mund të eliminojë hapin e migrimeve të të dhënave dhe ndryshimeve të skemës, shpesh hapa manualë ose përjashtime nga një rrjedhë pune e vazhdueshme e dorëzimit. Teknika të tjera të dobishme për zhvillimin e kodit në izolim, të tilla si degëzimi i kodit, nuk janë të vjetëruara në një botë CD-je, por duhet të përshtaten për t'iu përshtatur parimeve të CD-së - për shembull, ekzekutimi i degëve të shumta të kodit jetëgjatë mund të jetë jopraktik, pasi një artefakt i lëshueshëm duhet të ndërtohet herët në procesin e CD-së nga një degë e vetme kodi nëse do të kalojë nëpër të gjitha fazat e tubacionit.
Linja e vendosjes
Ofrimi i vazhdueshëm mundësohet nëpërmjet tubacionit të implementimit. Qëllimi i tubacionit të implementimit ka tre komponentë: dukshmëria, reagimet dhe implementimi i vazhdueshëm.
Dukshmëria – Të gjitha aspektet e sistemit të ofrimit, duke përfshirë ndërtimin, vendosjen në zbatim, testimin dhe publikimin, janë të dukshme për çdo anëtar të ekipit për të nxitur bashkëpunimin.
Reagime – Anëtarët e ekipit mësojnë për problemet sa më shpejt të jetë e mundur kur ato ndodhin, në mënyrë që të jenë në gjendje t'i rregullojnë ato sa më shpejt të jetë e mundur.
Vendosje e vazhdueshme – Përmes një procesi plotësisht të automatizuar, ju mund të vendosni dhe publikoni çdo version të softuerit në çdo mjedis.
Sipas Yan Cui, kur bëhet fjalë për mjedise pa server, burimet e përkohshme duhet të mbahen së bashku dhe të kenë kanalin e tyre të vendosjes për të arritur një kohezion të lartë. Megjithatë, burimet e përbashkëta që kanë një kohë të gjatë rrotullimi dhe zonë uljeje duhet të kenë depon e tyre të veçantë, kanalin e vendosjes dhe grumbullin.
Mjete/lloje mjetesh
Ofrimi i vazhdueshëm e çon automatizimin nga kontrolli i burimit deri në prodhim. Ekzistojnë mjete të ndryshme që ndihmojnë në përmbushjen e të gjithë ose të një pjese të këtij procesi. Këto mjete janë pjesë e tubacionit të implementimit i cili përfshin ofrimin e vazhdueshëm. Llojet e mjeteve që ekzekutojnë pjesë të ndryshme të procesit përfshijnë: integrimin e vazhdueshëm, automatizimin e publikimit të aplikacioneve, automatizimin e ndërtimit, menaxhimin e ciklit jetësor të aplikacioneve.
Arkitekturë për ofrim të vazhdueshëm
Për të praktikuar në mënyrë efektive ofrimin e vazhdueshëm, aplikacionet softuerike duhet të përmbushin një sërë kërkesash të rëndësishme arkitekturore (ASR) siç janë vendosja, modifikueshmëria dhe testueshmëria. Këto ASR kërkojnë një përparësi të lartë dhe nuk mund të nënvlerësohen lehtë.
Mikroshërbimet përdoren shpesh kur ndërtohet arkitekturë për ofrim të vazhdueshëm. Përdorimi i Mikroshërbimeve mund të rrisë vendosjen dhe modifikimin e një sistemi softuerik. Përmirësimet e vëzhguara të vendosjes përfshijnë: pavarësinë e vendosjes, kohë më të shkurtër vendosjeje, procedura më të thjeshta vendosjeje dhe vendosje pa ndërprerje. Përmirësimet e vëzhguara të modifikimit përfshijnë: kohë më të shkurtër cikli për ndryshime të vogla funksionale graduale, ndryshime më të lehta në përzgjedhjen e teknologjisë, ndryshime graduale në atributet e cilësisë dhe përmirësime më të lehta të gjuhës dhe bibliotekës.
Implementimi dhe përdorimi
Libri origjinal i ofrimit të vazhdueshëm i shkruar nga Jez Humble dhe David Farley (2010) e bëri të njohur termin; megjithatë, që nga krijimi i tij, përkufizimi ka vazhduar të përparojë dhe tani ka një kuptim më të zhvilluar. Kompanitë sot po zbatojnë këto parime dhe praktikat më të mira të ofrimit të vazhdueshëm. Dallimi në domene, p.sh. mjekësia kundrejt uebit, është ende i rëndësishëm dhe ndikon në zbatimin dhe përdorimin. Kompanitë e njohura që kanë këtë qasje përfshijnë Yahoo!, Amazon, Facebook, Google, Paddy Power dhe Wells Fargo.
Përfitimet dhe pengesat
Janë raportuar disa përfitime të shpërndarjes së vazhdueshme.
Kohë e përshpejtuar për në treg: Ofrimi i vazhdueshëm i lejon një organizate t'u ofrojë klientëve vlerën e biznesit që është e natyrshme në lëshimet e reja të softuerëve më shpejt. Kjo aftësi e ndihmon kompaninë të qëndrojë një hap përpara konkurrencës.
Ndërtimi i produktit të duhur: Publikimet e shpeshta u lejojnë ekipeve të zhvillimit të aplikacioneve të marrin reagime nga përdoruesit më shpejt. Kjo i lejon ata të punojnë vetëm në veçoritë e dobishme. Nëse ata zbulojnë se një veçori nuk është e dobishme, ata nuk shpenzojnë më shumë përpjekje për të. Kjo i ndihmon ata të ndërtojnë produktin e duhur.
Produktivitet dhe efikasitet i përmirësuar: Kursime të konsiderueshme kohe për zhvilluesit, testuesit, inxhinierët e operacioneve, etj., përmes automatizimit.
Publikime të besueshme: Rreziqet që lidhen me një publikim janë ulur ndjeshëm dhe procesi i publikimit është bërë më i besueshëm. Me shpërndarjen e vazhdueshme, procesi i vendosjes dhe skriptet testohen vazhdimisht para se të kalojnë në prodhim. Pra, shumica e gabimeve në procesin e vendosjes dhe skriptet janë zbuluar tashmë. Me publikime më të shpeshta, numri i ndryshimeve të kodit në secilin publikim zvogëlohet. Kjo e bën më të lehtë gjetjen dhe rregullimin e çdo problemi që ndodh, duke zvogëluar kohën në të cilën ato kanë ndikim.
Cilësi e përmirësuar e produktit: Numri i gabimeve të hapura dhe incidenteve të prodhimit është ulur ndjeshëm.
Përmirësim i kënaqësisë së klientit: Arrihet një nivel më i lartë i kënaqësisë së klientit.
Janë hetuar edhe pengesat.
Preferencat e klientëve: Disa klientë nuk duan përditësime të shpeshta të sistemeve të tyre.
Kufizime të domenit: Në disa fusha, siç janë telekomunikacioni, mjekësia, avionika, hekurudha dhe industria e rëndë, rregulloret kërkojnë testim nga ana e klientit ose edhe në vend të versioneve të reja.
Mungesa e automatizimit të testimit: Mungesa e automatizimit të testimit çon në mungesë të besimit të zhvilluesve dhe mund të parandalojë përdorimin e ofrimit të vazhdueshëm.
Dallimet në mjedise: Mjedise të ndryshme të përdorura në zhvillim, testim dhe prodhim mund të rezultojnë në probleme të pazbuluara që kalojnë në mjedisin e prodhimit.
Testet që kërkojnë një orakull njerëzor: Jo të gjitha atributet e cilësisë mund të verifikohen me automatizim. Këto atribute kërkojnë njerëz në ciklin e punës, duke ngadalësuar rrjedhën e shpërndarjes.
Chen ngriti dhe elaboroi tetë sfida të tjera të adaptimit. Këto sfida janë në fushat e strukturës organizative, proceseve, mjeteve, infrastrukturës, sistemeve të trashëguara, arkitekturës për ofrim të vazhdueshëm, testimit të vazhdueshëm të kërkesave jo-funksionale dhe optimizimit të ekzekutimit të testeve.



