Kur aplikacioni nuk funksionon, më pak do të dëshironit të dëgjonit nga kolegët frazën "problemi është nga ana juaj." Në fund, përdoruesit vuajnë - dhe atyre nuk iu intereson cila pjesë e ekipit është përgjegjëse për defektin. Kultura DevOps lindi pikërisht për të bashkuar zhvillimin dhe mbështetje dhe për t'i bashkuar ata rreth një përgjegjësie të përbashkët për produktin përfundimtar.
Cilat praktika përfshihen në konceptin e DevOps dhe pse janë të domosdoshme? Çfarë bëjnë inxhinierët DevOps dhe çfarë duhet të dinë ata? Në këto dhe pyetje të tjera përgjigjen ekspertët e EPAM: Kirill Sergeev, inxhinier i sistemeve dhe evangelist i DevOps, dhe Igor Boyko, inxhinier i avancuar i sistemeve dhe koordinatori i një prej grupeve DevOps të kompanisë.

Pse është e nevojshme DevOps?
Më parë kishte një barrierë mes zhvilluesve dhe mbështetjes (a.k.a. operations). Tingëllon paradoksale, por ata kishin objektiva dhe KPI të ndryshme, ndonëse bënin një punë të përbashkët. Qëllimi i zhvillimit ishte realizimi i sa më shpejtë të kërkesave të biznesit dhe integrimi i tyre në produktin funksional. Mbështetje ishte përgjegjëse për stabilitetin e aplikacionit - dhe çdo ndryshim rrezikonte stabilitetin. Ky është një konflikt interesash - DevOps u krijua për ta zgjidhur atë.
Çfarë është DevOps?
Një pyetje e mirë - dhe e diskutueshme: akoma nuk ka një marrëveshje botërore për këtë. Në EPAM besojmë se DevOps përfshin teknologjitë, proceset dhe kulturën e bashkëpunimit brenda ekipit. Kjo bashkëngjitje ka për qëllim dorëzimin e vazhdueshëm të vlerave për përdoruesit përfundimtarë.
Kirill Sergeev: "Zhvilluesit shkruajnë kod, testuesit e verifikojnë atë, 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 erdhi ideja për t'i bashkuar ato në një proces të përbashkët. Kështu lindi praktikat DevOps."
Arriti dita kur zhvilluesit dhe inxhinierët e sistemeve u interesuan për punën njëri-tjetrit. Barrierat mes prodhimit dhe mbështetjes filluan të zhduken. Kështu lindi DevOps, e cila përfshin praktikat, kulturën dhe rendin e bashkëpunimit brenda ekipit.

Cila është thelbi i kulturës DevOps?
Është që përgjegjësia për rezultatin përfundimtar është mbi çdo anëtar të ekipit. Gjëja më interesante dhe e komplikuar në filozofinë DevOps – është të kuptosh se secili individ nuk është thjesht përgjegjës për fazën e tij të punës, por për mënyrën se si do të funksionojë i gjithë prodotti. Problemi nuk është në anën e dikujt – është një problem i përbashkët, dhe secili anëtar i ekipit ndihmon për ta zgjidhur atë.
Një nga pozitat më të rëndësishme të kulturës DevOps është që të zgjidhni problemin, dhe jo thjesht të aplikoni praktikat DevOps. Më shumë se kaq, këto praktika nuk implementohen "në anën e dikujt", por në të gjithë produktin. Projekti nuk ka nevojë vetëm për një inxhinier DevOps – i nevojitet një zgjidhje për problemin, dhe roli i inxhinierit DevOps mund të ndahet ndërmjet disa anëtarëve të ekipit me specializime të ndryshme.
Cilat janë praktikat e DevOps?
Praktikat DevOps mbulojnë të gjitha fazat e ciklit të jetës së softuerit.
Igor Boyko: "Rasti ideal – është kur fillojmë të përdorim praktikat DevOps që nga fillimi i 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ërbimesh – për të zgjedhim sistemin e orkestrimit: duhet të jemi në gjendje të menaxhojmë çdo element të aplikacionit veçmas dhe ta azhurnojmë atë në mënyrë të pavarur nga të tjerët. Një praktikë tjetër – është "infrastruktura si kod". Kështu quhet qasja, në të cilën infrastruktura e projektit krijohet dhe menaxhohet përmes kodit, dhe jo përmes ndërveprimit direkt me serverat.
Pastaj 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, në porcione të vogla, shpesh dhe pa dhimbje. CI/CD mbulon si verifikimin e kodit, ashtu edhe ngarkimin e versions master në bazën e kodit, dhe shpërndarjen e aplikacionit në mjediset e testimit dhe prodhimit.
Në fazat e CI/CD kodi kalon përmes gates të cilësisë. Me ndihmën e tyre kontrollohet që kodi, i cili ka dalë nga stacioni i punës së zhvilluesit, i përmbush kriteret e caktuara të cilësisë. Këtu shtohet testimi i njësive dhe UI. Për një shpërndarje të shpejtë, pa dhimbje dhe të fokusuar të produktit, mund të zgjidhni tipin e duhur të deploymendit.
Praktikat DevOps kanë vend edhe në fazën e mbështetjes së produktit të gatshëm. Ato përdoren për monitorimin, reagimin, sigurimin, dhe futjen e ndryshimeve. Për të gjitha këto detyra, DevOps i sheh me këndvështrimin e përmirësimeve të vazhdueshme. Ne e minimizojmë operacionet e përsëritura, duke i automatizuar ato. Këtu përfshihen migrimet, zgjerimi i aplikacionit, dhe mbështetje për funksionimin.
Cilat janë përfitimet e praktikave DevOps?
Nëse do të shkruanim një libër mbi praktikat moderne DevOps, në fq. e saj të parë do të ishin tre pika: automatizimi, përshpejtimi i lançimit, dhe reagimi i shpejtë nga përdoruesit.
Kirill Sergeev: "E para - është automatizimi. Të gjitha ndërveprimet në ekip mund t'i automatizojmë: shkruam kodin - e publikojmë - e kontrollojmë - e instalojmë - marrim reagimin - kthehemi në fillim. E gjitha është automatikisht.
E dyta - është përshpejtimi i lançimit dhe madje thjeshtimi i zhvillimit. Për klientin, gjithmonë është e rëndësishme që produkti të dalë në treg sa më shpejt dhe të fillojë të sjellë përfitime më parë se sa homologët e konkurentëve. Procesi i dorëzimit të produktit mund të përmirësohet pafundësisht: të shkurtosh kohën, të shtosh pikë kontrolli, të përmirësosh monitorimin.
E treta - është përshpejtimi i reagimit nga përdoruesi. Nëse ai ka vërejtje, mund të bëjmë menjëherë rregullime dhe ta azhurnojmë aplikacionin menjëherë."

Si lidhen nocionet "injiner i sistemit", "injiner i ndërtimit" dhe "injiner DevOps"?
Ato ndërthuren, por i përkasin sferave paksa të ndryshme.
Inxhinierët sistemorë në EPAM janë një pozita. Ata vijnë në nivele të ndryshme: nga junior deri te specialistët kryesorë.
Inxhinieri i ndërtimit është më shumë një rol, që mund të realizohet në projekt. Aktualisht, kështu i quajnë ata që janë përgjegjës për CI/CD.
Inxhinieri DevOps është specialisti që implementon praktikat DevOps në projekt.
Nëse e përmbledhim të gjitha këto, rezulton se një person në poziten e inxhinierit sistemor përmbush rolin e inxhinierit të ndërtimit në projekt dhe merret me implementimin e praktikave DevOps.
Çfarë bën konkretisht inxhinieri DevOps?
Inxhinierët DevOps bashkojnë të gjitha pjesët, nga të cilat përbëhet projekti. Ata e dinë natyrën e punës së programuesve, testerëve, administratorëve të sistemeve dhe ndihmojnë në thjeshtimin e punës së tyre. Ata kuptojnë nevojat dhe kërkesat e biznesit, rolin e tij në procesin e zhvillimit – dhe ndajnë procesin me ata të interesuar.
Ne kemi folur shumë për automatizimin – me të, inxhinierët DevOps merren në radhë të parë. Ky është një pikë shumë e madhe, në të cilën përfshihet, midis të tjerave, përgatitja e ambientit.
Kirill Sergeev: "Para se të futen përmirësimet në produkt, ato duhet të testohen në një ambient të jashtëm. Ai përgatitet nga inxhinierët DevOps. Ata gjithashtu zhvillojnë kulturën DevOps në projekt: implementojnë praktikat DevOps në të gjitha nivelet e projekteve të tyre. Këto tri principe: automatizimi, thjeshtimi, përshpejtimi – ato i sjellin kudo që mund të arrijnë."
Çfarë duhet të dijë një inxhinier DevOps?
Dhe për t'u përmbledhur, 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. Atëherë i shtohet aftësia për të punuar 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 manualisht, por me ndihmën e skriptit tonë që e automatizon gjithçka. Ne do të përgatisim një skedar config, do të jetë komod për t'u lexuar dhe për ty, dhe për ne – dhe ne në çdo moment do të mund ta ndryshojmë. Dhe, gjithashtu, do të shohim kush, kur dhe për çfarë bën ndryshime në të."
Inxhinieri DevOps mund të mësojë një ose disa nga këto gjuhë: Python, Groovy, Bash, Powershell, Ruby, Go. Nuk është e nevojshme t'i njohë ato në një nivel të thellë – mjafton të ketë njohuri rreth sintaksës, parimeve të OOP, dhe aftësinë për të shkruar skriptet e thjeshta për automatizim.
2. Sistemet operative
Inxhinieri DevOps duhet të kuptojë, në cilin server do të instalohet produkti, në cilin ambient do të fillohet, me cilat shërbime do të ndërveprojë. Mund të zgjidhet specializim mbi Windows ose familjen Linux.
3. Sistemet e kontrollit të versioneve
Pa njohuritë e sistemeve të kontrollit të versioneve, inxhinierit DevOps nuk i shkon. Git është një nga sistemet më të njohura në momentin e tanishëm.
4. Ofruesit e cloud
AWS, Google, Azure – sidomos nëse flasim për drejtimin Windows.
Kirill Sergeev: "Ofruesit e cloud na ofrojnë serverët virtualë, që përshtaten shkëlqyeshëm me CI/CD.
Instalimi i dhjetë serverëve fizikë kërkon rreth njëqind operacione manuale. Çdo server duhet të nisë manualisht, të instalohet dhe të konfigurohet sistemi operativ i dëshiruar, të instalohet aplikacioni ynë në këta dhjetë serverë, dhe pastaj të kontrollohet gjithçka dhjetë herë. Shërbimet në re e zëvendësojnë këtë procedurë me dhjetë rreshta kode, dhe një inxhinier i mirë DevOps duhet të jetë në gjendje t'i përdorë ato. Kështu ai kursen kohë, energji dhe para – si për klientin, ashtu edhe për kompaninë.
5. Sistemete orkestrimit: Docker dhe Kubernetes
Kirill Sergeev: «Serverët virtualë janë të ndarë në kontejnerë, në secilin prej të cilëve mund të instalojmë aplikacionin tonë. Kur ka shumë konteinerë, duhet t'i menaxhojmë: një të ndizet, një tjetër të fiket, diku të bëhen backup. Kjo bëhet një punë mjaft e komplikuar, për të cilën nevojitet një sistem orkestrimi.
Deri më tani, çdo aplikacion e kishte serverin e vet – çdo ndryshim në funksionimin e tij mund të kishte ndikim në stabilitetin e aplikacionit. Falë konteinerëve, aplikacionet bëhen të izoluara dhe nisen veçmas – secili në makinerinë e tij virtuale. Nëse ndodh një dështim, nuk është e nevojshme të humbasësh kohë për të gjetur shkakun. Më e lehtë është të shkatërrosh kontejnerin e vjetër dhe të shtosh një të ri.
6. Sistemet e konfigurimit: Chef, Ansible, Puppet
Kur është e nevojshme të shërbesh një park të tërë serverësh, duhet të bësh shumë operacione të ngjashme. Kjo është e gjatë dhe e komplikuar, dhe gjithashtu puna manuale rrit shanset për gabim. Këtu vijnë në ndihmë sistemet e konfigurimeve. Me ndihmën e tyre krijohet një skenar, i cili është i lehtë për t'u lexuar nga programuesit, inxhinierët DevOps dhe administratorët e sistemeve. Ky skenar ndihmon për të kryer operacione të njëjta në serverë automatikisht. Kështu, numri i operacioneve manuale (dhe, për pasojë, gabimeve) zvogëlohet.
Çfarë karriere mund të ndërtojë një inxhinier DevOps?
Mund të zhvillohet si në mënyrë horizontale, ashtu edhe në mënyrë vertikale.
Igor Boyko: «Nga këndvështrimi i zhvillimit horizontal, inxhinierët DevOps tani kanë perspektivat më të gjerë. Gjithçka ndryshon vazhdimisht, dhe mund të rritesh kompetencat në drejtime të ndryshme: nga sistemet e kontrollit të versioneve te monitorimi, nga menaxhimi i konfigurimeve te bazat e të dhënave.
Mund të bëhet arkitekt sistemi, nëse puna e thotë se e intereson të kuptojë se si funksionon aplikacioni në të gjitha fazat e ciklit të tij të jetës – nga zhvillimi deri te mbështetja.
Si të bëhesh inxhinier DevOps?
- Lexoni librat "Projekti Phoenix" dhe DevOps Handbook. Këta janë vërtet këndvështrues të filozofisë DevOps, dhe ai i pari – një roman artistik.
- Studiote teknologjitë nga lista e mësipërme: vetë ose në kurse online.
- Bashkohu si inxhinier DevOps në një projekt me kod burimor.
- Praktiko dhe ofro praktikat DevOps në projektet e tua personale dhe ato të punës.
Burimi: habr.com
