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
