Kur aplikacioni nuk funksionon, mĂ« sĂ« paku dĂ«shiron tĂ« dĂ«gjosh nga kolegĂ«t frazĂ«n «problemi Ă«shtĂ« nga ana juaj». NĂ« fund, pĂ«rdoruesit vuajnĂ« â dhe atyre nuk u intereson se cila pjesĂ« e ekipit Ă«shtĂ« pĂ«rgjegjĂ«se pĂ«r defektin. Kultura DevOps u shfaq pikĂ«risht pĂ«r tĂ« bashkuar zhvillimin dhe mbĂ«shtetjen dhe pĂ«r t'i bashkuar ato rreth njĂ« pĂ«rgjegjĂ«sie tĂ« pĂ«rbashkĂ«t pĂ«r produktin pĂ«rfundimtar.
ĂfarĂ« praktika pĂ«rfshihen nĂ« konceptin DevOps dhe pĂ«rse janĂ« tĂ« nevojshme? ĂfarĂ« bĂ«jnĂ« inxhinierĂ«t DevOps dhe çfarĂ« duhet tĂ« dinĂ« ata? Edhe pĂ«r kĂ«to e pyetje tĂ« tjera pĂ«rgjigjen ekspertĂ«t nga EPAM: Kirill Sergeev, inxhinier sistemesh dhe evangjelist i DevOps, dhe Igor Boiko, inxhinier kryesor sistemi dhe koordinator i njĂ« prej ekipeve DevOps tĂ« kompanisĂ«.

Pse është e nevojshme DevOps?
MĂ« parĂ« ekzistonte njĂ« barrierĂ« midis zhvilluesve dhe mbĂ«shtetjes (tĂ« ashtuquajturat operations). Duket paradoksale, por ata kishin qĂ«llime dhe KPI tĂ« ndryshme, ndonĂ«se bĂ«nin njĂ« punĂ« tĂ« pĂ«rbashkĂ«t. QĂ«llimi i zhvillimit ishte tĂ« realizonte sa mĂ« shpejt kĂ«rkesat e biznesit dhe tâi shtonte ato nĂ« produktin qĂ« funksiononte. MbĂ«shtetja ishte pĂ«rgjegjĂ«se pĂ«r mirĂ«mbajtjen e aplikacionit tĂ« qĂ«ndronte stabil â dhe çdo ndryshim e rrezikonte stabilitetin. Ky Ă«shtĂ« njĂ« konflikt interesash â DevOps u shfaq pĂ«r ta zgjidhur atĂ«.
ĂfarĂ« Ă«shtĂ« DevOps?
Pyetja Ă«shtĂ« e mirĂ« â dhe e diskutueshme: nĂ« botĂ« ende nuk ka njĂ« marrĂ«veshje pĂ«r kĂ«tĂ«. NĂ« EPAM mendojnĂ« se DevOps pĂ«rfshin teknologji, procese dhe kulturĂ« ndĂ«rveprimi brenda ekipit. Ky bashkim Ă«shtĂ« i orientuar drejt dorĂ«zimit tĂ« vazhdueshĂ«m tĂ« vlerave pĂ«r pĂ«rdoruesit e fundit.
Kirill Sergeev: «Zhvilluesit shkruajnĂ« kod, testuesit e kontrollojnĂ«, dhe administratorĂ«t e instalojnĂ« produktin pĂ«rfundimtar nĂ« ambientin e prodhimit. PĂ«r njĂ« kohĂ« tĂ« gjatĂ« kĂ«to pjesĂ« tĂ« ekipit ishin disi tĂ« ndara, pastaj doli ideja pĂ«r tâi bashkuar ato nĂ« njĂ« proces tĂ« pĂ«rbashkĂ«t. KĂ«shtu u shfaqĂ«n praktikat DevOps».
Ka ardhur dita kur zhvilluesit dhe inxhinierët e sistemeve u interesuan për punën e njëri-tjetrit. Barrierat midis prodhimit dhe mbështetjes filluan të zhduken. Kështu lindi DevOps, i cili përfshin praktika, kulturë dhe rendin e bashkëpunimit brenda ekipit.

ĂfarĂ« pĂ«rbĂ«n thelbin e kulturĂ«s DevOps?
NĂ« atĂ« qĂ« pĂ«rgjegjĂ«sia pĂ«r rezultatin pĂ«rfundimtar i takon secilit anĂ«tar tĂ« ekipit. E fundit, e veçanta dhe e vĂ«shtirĂ« nĂ« filozofinĂ« DevOps â Ă«shtĂ« tĂ« kuptosh se njĂ« individ nuk merret vetĂ«m me fazĂ«n e tij tĂ« punĂ«s, por merr pĂ«rsipĂ«r pĂ«rgjegjĂ«sinĂ« pĂ«r mĂ«nyrĂ«n se si do tĂ« funksionojĂ« e gjithĂ« struktura e produktit. Problemi nuk Ă«shtĂ« nĂ« krahun e dikujt â Ă«shtĂ« e pĂ«rbashkĂ«t, dhe çdo anĂ«tar i ekipit ndihmon pĂ«r ta zgjidhur atĂ«.
NjĂ« nga pozitat mĂ« tĂ« rĂ«ndĂ«sishme tĂ« kulturĂ«s DevOps â Ă«shtĂ« vĂ«rtet zgjidhja e problemeve, jo thjesht aplikimi i praktikave DevOps. MĂ« shumĂ« se kaq, kĂ«to praktika nuk vendosen "nĂ« krahun e dikujt", por nĂ« tĂ« gjithĂ« produktin. Projekti nuk ka nevojĂ« pĂ«r njĂ« inxhinier DevOps si vetĂ«, por pĂ«r njĂ« zgjidhje problemi, dhe roli i inxhinierit DevOps mund tĂ« shpĂ«rndahet mes disa anĂ«tarĂ«ve tĂ« ekipit me specializime tĂ« ndryshme.
Cilat janë praktikat DevOps?
Praktikat DevOps përfshijnë të gjitha fazat e ciklit të jetës së softuerit.
Igor Bojko: "Rasti ideal Ă«shtĂ« kur fillojmĂ« tĂ« pĂ«rdorim praktikat DevOps menjĂ«herĂ« nĂ« fillim tĂ« projektit. SĂ« bashku me arkitektĂ«t planifikojmĂ« se cili do tĂ« jetĂ« peizazhi arkitektonik i aplikacionit, ku do tĂ« vendoset dhe si do tĂ« shkallĂ«zohet, zgjedhim platformĂ«n. Tani Ă«shtĂ« nĂ« modĂ« arkitektura mikroshĂ«rbimeve â pĂ«r tĂ«, ne zgjedhim njĂ« sistem orkestrimi: duhet tĂ« jemi nĂ« gjendje tĂ« menaxhojmĂ« çdo element tĂ« aplikacionit veç e veç dhe ta pĂ«rditĂ«sojmĂ« atĂ« nĂ« mĂ«nyrĂ« tĂ« pavarur nga tĂ« tjerat. NjĂ« praktikĂ« tjetĂ«r Ă«shtĂ« "infrastruktura si kod". Ky Ă«shtĂ« njĂ« qasje nĂ« tĂ« cilĂ«n infrastruktura e projektit krijohet dhe menaxhohet pĂ«rmes kodit, jo pĂ«rmes ndĂ«rveprimit tĂ« drejtpĂ«rdrejtĂ« me serverĂ«t.
Më pas kalojmë në fazën e zhvillimit. Këtu një nga praktikat më të mëdha është ndërtimi i CI/CD: duhet të ndihmojmë zhvilluesit të integrojnë ndryshimet në produkt shpejt, me porcione të vogla, më shpesh dhe pa dhimbje. CI/CD përfshin edhe verifikimin e kodit, si dhe ngarkimin e masterit në bazën e kodit, dhe shpërndahen aplikacionin në mjedise testimi dhe prodhimi.
Në fazat e CI/CD, kodi kalon përmes threshold-ëve të cilësisë. Me ndihmën e tyre, kontrollohet që kodi, i cili del nga stacioni i punës së zhvilluesit, përputhet me kriteret e caktuara të cilësisë. Këtu shtohet testimi i njëri-kështu dhe testimi i interfesës përdoruesit. Për një shpërndarje të shpejtë, pa dhimbje dhe të fokusuar të produktit, mund të zgjidhni një lloj të përshtatshëm shpërndarjeje.
Praktikat DevOps kanë vend edhe në fazën e mbështetjes së një produkti të gatshëm. Ato përdoren për monitorimin, feedback-un, sigurinë, implementimin e ndryshimeve. Për këto detyra, DevOps i qaset nga këndvështrimi i përmirësimeve të vazhdueshme. Ne minimizojmë operacionet e përsëritura dhe i automatizojmë ato. Këtu përfshihen gjithashtu migrimet, zgjerimi i aplikacionit, dhe mbështetje e funksionimit.
Cila është dobi e praktikave DevOps?
Nëse do të shkruanim një libër mbi praktikat moderne DevOps, në faqe të parë do të kishim tri pika: automatizimi, përshpejtimi i lëshimit dhe feedback-u i shpejtë nga përdoruesit.
Kirill Sergeev: "E para â Ă«shtĂ« automatizimi. TĂ« gjitha ndĂ«rveprimet nĂ« ekip mund tĂ« automatizohen: kemi shkruar kodin â e kemi lancuar â e kemi verifikuar â e kemi instaluar â kemi mbledhur feedback â kemi kthyer nĂ« fillim. TĂ« gjitha kĂ«to â automatikisht.
E dyta â pĂ«rshpejtimi i daljes sĂ« lĂ«shimit dhe madje thjeshtimi i zhvillimit. PĂ«r klientin Ă«shtĂ« gjithmonĂ« e rĂ«ndĂ«sishme qĂ« prodhimi tĂ« dalĂ« nĂ« treg sa mĂ« shpejt dhe tĂ« fillojĂ« tĂ« sjellĂ« pĂ«rfitime pĂ«rpara se tĂ« dalin konkurentĂ«t. Procesi i dorĂ«zimit tĂ« produktit mund tĂ« pĂ«rmirĂ«sohet pafund: tĂ« shkurtuar kohĂ«n, tĂ« shtohen pika kontrolli shtesĂ«, tĂ« pĂ«rmirĂ«sohet monitorimi.
E treta â Ă«shtĂ« pĂ«rshpejtimi i feedback-ut nga pĂ«rdoruesit. NĂ«se ata kanĂ« vĂ«rejtje, ne mund tĂ« bĂ«jmĂ« menjĂ«herĂ« korrigjime dhe tĂ« pĂ«rditĂ«sojmĂ« aplikacionin menjĂ«herĂ«."

Si lidhen konceptet "ndryshues sistemi", "ndryshues ndërtimi" dhe "inxhinier DevOps"?
Ato përputhen, por i përkasin sferave pak më të ndryshme.
NjĂ« inxhinier sistemi nĂ« EPAM â Ă«shtĂ« njĂ« pozita. Ata kanĂ« nivele tĂ« ndryshme: nga junior deri te specialistĂ«t kryesorĂ«.
NjĂ« inxhinier ndĂ«rtimi â Ă«shtĂ« mĂ« shumĂ« njĂ« rol, qĂ« mund tĂ« pĂ«rmbushĂ«sh nĂ« njĂ« projekt. Tani quhen njerĂ«zit pĂ«rgjegjĂ«s pĂ«r CI/CD.
Një inxhinier DevOps quhet specialisti që implementon praktikat DevOps në projekt.
Nëse e përmbledhim këtë, rezulton diçka e tillë: një person në pozitat e inxhinierit të sistemit kryen në projekt rolin e inxhinierit të ndërtimit dhe merret me implementimin e praktikave DevOps.
ĂfarĂ« konkretisht bĂ«n inxhinieri DevOps?
InxhinierĂ«t DevOps mblidhen sĂ« bashku tĂ« gjitha pjesĂ«t nga tĂ« cilat pĂ«rbĂ«het projekti. Ata e dinĂ« specifikĂ«n e punĂ«s sĂ« programuesve, testuesve, administratorĂ«ve tĂ« sistemeve dhe ndihmojnĂ« nĂ« lehtĂ«simin e punĂ«s sĂ« tyre. Ata kuptojnĂ« nevojat dhe kĂ«rkesat e biznesit, rolin e tij nĂ« procesin e zhvillimit â dhe ndĂ«rtuin procesin duke marrĂ« parasysh interesat e klientit.
Kemi folur shumĂ« pĂ«r automatizimin â me tĂ« cilin inxhinierĂ«t DevOps merren nĂ« radhĂ« tĂ« parĂ«. Ky Ă«shtĂ« njĂ« pikĂ« shumĂ« e madhe, qĂ« pĂ«rfshin, pĂ«rveç tĂ« tjerave, pĂ«rgatitjen e mjedisit.
Kirill Sergeev: "Para se tĂ« implementoni pĂ«rditĂ«simet nĂ« produkt, ato duhet tĂ« testohen nĂ« njĂ« ambient tĂ« jashtĂ«m. Ky pĂ«rgatitet nga inxhinierĂ«t DevOps. Ata gjithashtu promovojnĂ« kulturĂ«n DevOps nĂ« projektin: implementojnĂ« praktikat DevOps nĂ« tĂ« gjitha nivelet e projekteve tĂ« tyre. KĂ«to tre parime: automatizimi, lehtĂ«simi, pĂ«rshpejtimi â ata i sjellin kudo ku mund tĂ« arrijnĂ«."
ĂfarĂ« duhet tĂ« dijĂ« njĂ« inxhinier DevOps?
Në thelb, ai duhet të ketë njohuri nga fusha të ndryshme: programimi, puna me sistemet operative, bazat e të dhënave, sistemet e ndërtimit dhe konfigurimit. Përveç tyre, ai duhet të dijë të punojë me infrastrukturën cloud, sistemet e orkestrimit dhe monitorimit.
1. Gjuhët e programimit
InxhinierĂ«t DevOps dinĂ« disa gjuhĂ« bazike pĂ«r automatizim dhe mund, pĂ«r shembull, tĂ« thonĂ« programuesit: "Le tĂ« bĂ«jmĂ« instalimin e kodit jo me dorĂ«, por me ndihmĂ«n e skriptit tonĂ« qĂ« e automatizon gjithçka? Ne do tĂ« pĂ«rgatisim njĂ« skedar config pĂ«r tĂ«, qĂ« do tĂ« jetĂ« lehtĂ« tĂ« lexohet nga ti dhe nga ne â dhe nĂ« çdo moment do tĂ« jemi nĂ« gjendje ta ndryshojmĂ« atĂ«. Po ashtu, do tĂ« shohim kush, kur dhe pĂ«r çfarĂ« bĂ«n ndryshime nĂ« tĂ«."
NjĂ« inxhinier DevOps mund tĂ« mĂ«sojĂ« njĂ« ose mĂ« shumĂ« nga kĂ«to gjuhĂ«: Python, Groovy, Bash, Powershell, Ruby, Go. Nuk kĂ«rkohet tĂ« njehĂ«n ato nĂ« njĂ« nivel tĂ« thellĂ« â baste e njohurive tĂ« sintaksĂ«s, parimet e OOP, duke qenĂ« nĂ« gjendje tĂ« shkruajĂ« skripte tĂ« thjeshta pĂ«r automatizim mjafton.
2. Sistemet operative
Inxhinierët DevOps duhet të kuptojnë se në cilin server do të instalohet produkti, në cilën mjedis do të startohet, me cilat shërbime do të bashkëveprohet. Mund të zgjidhni të specializoheni në Windows ose familjen Linux.
3. Sistemet e kontrollit të versioneve
Pa njohuri për sistemet e kontrollit të versioneve, inxhinieri DevOps nuk mund të shkojë askund. Git është një nga sistemet më të njohura në këtë moment.
4. Ofruesit cloud
AWS, Google, Azure â sidomos nĂ«se flasim pĂ«r drejtimin Windows.
Kirill Sergeev: «O ofruesit e cloud-it na ofrojnë serverë virtualë, të cilat përshtaten në mënyrë të shkëlqyer me sistemet CI/CD.
Instalimi i dhjetĂ« serverĂ«sh fizikĂ« kĂ«rkon rreth njĂ«qind operacione manuale. Ădo server duhet tĂ« ndizet manualisht, tĂ« instalohet dhe tĂ« konfigurohet sistemi operativ i nevojshĂ«m, tĂ« instalohet aplikacioni ynĂ« nĂ« kĂ«to dhjetĂ« servera, dhe pastaj tĂ« kontrollohet gjithçka dhjetĂ« herĂ«. ShĂ«rbimet cloud zĂ«vendĂ«sojnĂ« kĂ«tĂ« procedurĂ« me dhjetĂ« rreshta kodi, dhe njĂ« inxhinier i mirĂ« DevOps duhet tĂ« dijĂ« tĂ« operojĂ« me to. KĂ«shtu ai kursen kohĂ«, energji dhe para - pĂ«r klientin dhe pĂ«r kompaninĂ«.»
5. Sistemet e orkestrimit: Docker dhe Kubernetes
Kirill Sergeev: «ServerĂ«t virtualĂ« ndahen nĂ« kontejnerĂ«, nĂ« secilin prej tĂ« cilĂ«ve mund tĂ« instalojmĂ« aplikacionin tonĂ«. Kur ka shumĂ« kontejnerĂ«, Ă«shtĂ« e nevojshme tâi menaxhojmĂ« ata: tĂ« ndezim njĂ«, tĂ« fikim tjetrin, nĂ« disa raste tĂ« bĂ«jmĂ« kopje rezervĂ«. Kjo bĂ«het mjaft e komplikuar, pĂ«r tĂ« cilĂ«n nevojitet njĂ« sistem orkestrimi.
Deri më sot, çdo aplikacion ishte menaxhuar nga një server i veçantë - çdo ndryshim në funksionimin e tij mund të ndikonte në mirëfunksionimin e aplikacionit. Falë kontejnerëve, aplikacionet bëhen të izoluara dhe nxiten veçmas - secili në makinën e tij virtuale. Nëse ndodh një gabim, nuk është e nevojshme të harxhohet kohë për të gjetur shkakun. Më e lehtë është të shkatërrohet kontejneri i vjetër dhe të shtohet një i ri.»
6. Sistemet e konfigurimit: Chef, Ansible, Puppet
Kur është e nevojshme të shërbehet një grup serverësh, duhen kryer shumë operacione të ngjashme. Kjo është e gjatë dhe e komplikuar, përveç kësaj, puna manuale rrit shanset për gabime. Këtu vijnë në ndihmë sistemet e konfigurimit. Me ndihmën e tyre, krijohet një skenar që është i lehtë për t'u lexuar nga programuesit, inxhinierët DevOps, dhe administratoret e sistemeve. Ky skenar ndihmon në realizimin automatik të operacioneve të njëjta në serverë. Kështu, operacionet manuale (dhe kështu gabimet) zvogëlohen.
ĂfarĂ« karriere mund tĂ« ndĂ«rtojĂ« njĂ« inxhinier DevOps?
Zhvillimi mund të ndodhë si në mënyrë horizontale ashtu edhe vertikale.
Igor Bojko: «Nga pikëpamja e zhvillimit horizontal, inxhinierët DevOps tani kanë perspektivat më të gjera. Gjithçka ndryshon përherë, dhe aftësitë mund të përmirësohen në shumë drejtime të ndryshme: nga sistemet e kontrollit të versioneve deri te monitorimi, nga menaxhimi i konfigurimeve deri te bazat e të dhënave.
NjĂ« person mund tĂ« bĂ«het arkitekt sistemi nĂ«se Ă«shtĂ« i interesuar tĂ« kuptojĂ« si funksionon aplikacioni nĂ« tĂ« gjitha fazat e ciklit tĂ« tij tĂ« jetĂ«s â nga zhvillimi deri te mbĂ«shtetje.
Si të bëhesh inxhinier DevOps?
- Lexoni librat "Projekti 'Feniks'" dhe DevOps Handbook. KĂ«to janĂ« vĂ«rtet pillarĂ«t e filozofisĂ« DevOps, veçanĂ«risht i pari â njĂ« roman artistik.
- Studioni teknologjitë nga lista e mësipërme: vetë ose në kurse online.
- Bashkohuni si inxhinier DevOps në një projekt open source.
- Praktikoni dhe propozonin praktikat DevOps në projektet tuaja personale dhe ato të punës.
Burimi: habr.com
