
Krijimi i zinxhirit tuaj të parë DevOps në pesë hapa për fillestarët.
DevOps është bërë ilaçi për proceset e zhvillimit që janë shumë të ngadalta, të ndara dhe me probleme të tjera. Por, kërkohen njohuri minimale në DevOps. Këtu do të shqyrtojmë konceptet si zinxhiri DevOps dhe si ta krijoni atë në pesë hapa. Ky nuk është një udhëzues i plotë, por vetëm një 'peshk', që mund të zgjerohet. Le të fillojmë me historinë.
Njohja ime me DevOps
Dikur kam punuar me cloud në Citi Group dhe kam zhvilluar një aplikacion IaaS për menaxhimin e infrastrukturës cloud të Citi, por gjithmonë kam qenë i interesuar se si mund të optimizohet zinxhiri i zhvillimit dhe si të përmirësohej kultura mes zhvilluesve. Greg Lavender, drejtori ynë teknik për arkitekturën dhe infrastrukturën cloud, më këshilloi të lexoj librin . Ai shpjegon shkëlqyer parimet e DevOps, duke u lexuar si një roman.
Tabela në anën tjetër tregon se sa shpesh kompanitë nxjerrin versionet e reja:
Si arrijnë Amazon, Google dhe Netflix të nxjerrin kaq shumë? E tëra është e thjeshtë: ata kanë kuptuar se si të krijojnë një zinxhir DevOps pothuajse perfekt.
Në Citi, gjithçka ishte ndryshe derisa kaluam në DevOps. Në atë kohë, ekipi im kishte mjedise të ndryshme, por ne e bënim dorëzimin në serverin e zhvillimit manualisht. Të gjithë zhvilluesit kishin qasje vetëm në një server zhvillimi që bazohej në IBM WebSphere Application Server Community Edition. Me tentativa të njëkohshme të dorëzimit, serveri ‘rrëzohej’, dhe na duhej të ‘bisedonim’ çdo herë në mënyrë ‘të vështirë’. Po ashtu, kishim mbulim të pamjaftueshëm të kodit me teste, një proces të lodhshëm dorëzimi manual dhe asnjë mundësi për të ndjekur dorëzimin e kodit sipas ndonjë kërkese apo detyre të klientit.
I was clear that something needed to be done urgently, so I found a like-minded colleague. We decided to create our first DevOps pipeline together — he set up the virtual machine and the Tomcat application server, while I handled Jenkins, integration with Atlassian Jira and Bitbucket, as well as code coverage testing. The project was successful: we fully automated the development pipeline, achieved nearly 100% uptime for the development server, could track and improve code coverage testing, and linked the Git branch to deployment and Jira tasks. Almost all the tools we used to build the DevOps pipeline were open source.
In reality, the pipeline was simplified since we didn't even use advanced configurations with Jenkins or Ansible. But we made it work. Perhaps this is a consequence of the principle (also known as the 80/20 rule).
A brief overview of the DevOps and CI/CD pipeline
DevOps ka ndryshime të ndryshme. Siç është Agile, DevOps përfshin disiplina të shumta. Por shumica do të bien dakord me këtë përkufizim: DevOps është një metodë, ose cikli i jetës, i zhvillimit të softuerit, parimi kryesor i të cilit është krijimi i një kulture ku zhvilluesit dhe punonjësit e tjerë janë "në të njëjtën wavelength", puna manuale është automatizuar, secili merret me atë që dinë më së miri, rritet frekuenca e dorëzimeve, përmirësohet produktiviteti dhe rritet fleksibiliteti.
Dhe, ndonëse vetëm mjetet nuk mjaftojnë për të krijuar një ambient DevOps, ato janë thelbësore. Mjeti më i rëndësishëm është integrimi dhe dorëzimi i vazhdueshëm (CI/CD). Në zinxhirin për çdo ambient ka faza të ndryshme (për shembull, DEV (zhvillim), INT (integrim), TST (testim), QA (kontrolli i cilësisë), UAT (testimi i përdoruesve), STG (përgatitje), PROD (përdorim)), detyrat manuale janë automatizuar, zhvilluesit mund të krijojnë kod të cilësisë së lartë, ta dorëzojnë dhe të ristrukturohen lehtësisht.
Ky kjo shënim përshkruan se si të krijoni një zinxhir DevOps në pesë hapa, siç tregohet në imazhin më poshtë, duke përdorur mjete me kod burim të hapur.
Le të kalojmë në punë.
Hapi 1: Platforma CI/CD
E para që ju nevojitet është një mjet CI/CD. Jenkins është një mjet CI/CD me kod burim të hapur, i shkruar në Java me licencë MIT, i cili shënoi fillimin e popularizimit të lëvizjes DevOps dhe që u bë de-fakto standardi për CICD.
Por çfarë është Jenkins? Imagjinoni se keni një telekomandë magjike për shërbime dhe mjete të ndryshme. Vetëm si një mjet CI/CD, si Jenkins, është i pamjaftueshëm, por me mjete dhe shërbime të ndryshme, bëhet gjithëfuqishëm.
Përveç Jenkins, ekzistojnë shumë mjete të tjera me kod burim të hapur, zgjidhni cilindo.
Ja si duket procesi DevOps me një mjet CI/CD
Keni një mjet CI/CD në localhost, por për momentin nuk keni shumë për të bërë. Le të kalojmë në hapat e tjerë.
Hapi 2: menaxhimi i versioneve
Mënyra më e mirë (dhe ndoshta më e lehtë) për të provuar magjinë e mjetit CI/CD është t'i integrosh me një mjet të menaxhimit të versioneve (source control management, SCM). Pse është e nevojshme menaxhimi i versioneve? Supozoni se po krijoni një aplikacion. E shkruani atë në Java, Python, C++, Go, Ruby, JavaScript ose në çdo gjuhë tjetër, të cilat janë të shumta. Ajo që shkruani quhet kod burimor. Në fillim, sidomos nëse punoni vetëm, mund ta ruani gjithçka në një katalog lokal. Por kur projekti shtrihet dhe më shumë njerëz i bashkohen, ju nevojitet një mënyrë për të ndarë ndryshimet në kod, duke shmangur konfliktet gjatë bashkimeve. Gjithashtu, ju nevojitet një mënyrë për të rikuperuar versionet e mëparshme pa përdorimin e kopjeve rezervë dhe metodës së kopjim-ngjitjes për skedarët me kod.
Dhe këtu SCM është i pazëvendësueshëm. SCM ruan kodin në depo, menaxhon versionet e tij dhe e koordinon atë mes zhvilluesve.
Ka shumë mjete SCM, por standardi de-fakto me merita është Git. Unë rekomandoj ta përdorni atë, por ka edhe mundësi të tjera.

Këtu është si duket pipeline-i DevOps pas shtimit të SCM.
Instrumenti CI/CD mund të automatizojë ngarkimin dhe shkarkimin e kodeve burimore dhe bashkëpunimin në ekip. Shumë mirë? Por si ta kthejmë këtë në një aplikacion funksional, të preferuar nga miliarda përdorues?
Hapi 3: instrumenti i automatizimit të ndërtimit
Gjithçka po shkon sipas planit. Mund të shkarkoni kodin dhe të regjistroni ndryshimet në sistemin e kontrollit të versioneve, si edhe të ftoni miq për të punuar me ju. Por ende nuk keni aplikacion. Për ta bërë këtë një aplikacion web, duhet ta kompilon dhe ta vendosni në një paketë për shpërndarje ose ta aktivizoni si një skedar ekzekutiv. (Gjuha e programimit të interpretuar, si JavaScript ose PHP, nuk ka nevojë për kompilim.)
Përdorni instrumentin e automatizimit të ndërtimit. Çfarëdo instrumenti që të zgjidhni, ai do të ndihmojë në ndërtimin e kodit në formatin e duhur dhe në automatizimin e pastrimit, kompilimit, testimit dhe shpërndarjes. Ka lloje të ndryshme të mjeteve të ndërtimit në varësi të gjuhës, por zakonisht përdoren këto mundësi me kod të hapur.

Shkëlqyeshëm! Tani do të vendosim skedarët e konfigurimit të instrumentit të automatizimit të ndërtimit në sistemin e kontrollit të versioneve, në mënyrë që instrumenti CI/CD t'i ndihmojë ata.
Duket se gjithçka është në rregull. Por ku duhet ta publikojmë tani të gjithë këtë?
Hapi 4: serveri i aplikacioneve web
Pra, keni një skedhë të paketuar që mund të ekzekutohet ose të publikohet. Për ta bërë aplikacionin të dobishëm, duhet të ketë ndonjë shërbim ose ndërfaqe, por duhet ta vendosni diku të gjithë këtë.
Aplikacioni web mund të vendoset në serverin e aplikacioneve web. Serveri i aplikacioneve ofron një ambient ku mund të ekzekutohet logjika programore nga paketa, të realizohet vizualizimi i ndërfaqes dhe të hapen shërbime web përmes soketeve. Ju nevojitet një server HTTP dhe disa ambiente të tjera (si virtual machine, për shembull) për të instaluar serverin e aplikacioneve. Deri tani le të supozojmë se jeni duke e menaxhuar këtë në proces (ndonëse do të flas për kontejnerët më poshtë).
Ka disa serverë të hapur aplikacionesh web.
Kemi krijuar pothuajse një zinxhir funksional DevOps. Punë e shkëlqyer!
Në parim, këtu mund të ndaleni, më pas do të krijoni vetë, por është ende e vyer të flasim për cilësinë e kodit.
Hapi 5: Mbulimi i provimeve
Testimi kërkon shumë kohë dhe përpjekje, por është më mirë të identifikosh menjëherë gabimet dhe të përmirësosh kodin për të kënaqur përdoruesit përfundimtarë. Për këtë qëllim ka shumë mjete të hapura që jo vetëm që testojnë kodin, por edhe ofrojnë këshilla se si ta përmirësosh atë. Shumica e mjeteve CI/CD mund të lidhen me këto mjete dhe të automatizojnë procesin.
Testimi është i ndarë në dy pjesë: kornizat e testimit për të shkruar dhe ekzekutuar teste, dhe mjetet me sugjerime për përmirësimin e cilësisë së kodit.
Kornizat e testimit
Mjetet me sugjerime për cilësinë
Shumica e këtyre mjeteve dhe kornizave janë shkruar për Java, Python dhe JavaScript, pasi C++ dhe C# janë pronësorë (megjithëse GCC ka kod të hapur).
Ne kemi aplikuar mjetet e mbulimit të testeve, dhe tani pipeline-i DevOps duhet të duket siç është ilustruar në fillim të udhëzimit.
Hapat shtesë
Kontejnerët
Siç kam thënë më parë, serveri i aplikacioneve mund të vendoset në një makinë virtuale ose server, por kontejnerët janë më të njohur.
? Вкратце, в виртуальной машине операционная система чаще всего занимает больше места, чем приложение, а контейнеру обычно достаточно нескольких библиотек и конфигурации. В некоторых случаях без виртуальных машин не обойтись, но контейнер вмещает приложение вместе с сервером без лишних затрат.
Për kontejnerët zakonisht përdoren Docker dhe Kubernetes, megjithëse ka edhe mundësi të tjera.
Lexoni artikujt rreth Docker dhe Kubernetes në :
Mjetet e automatizimit të ndërmjetësimit
Zinxhiri ynë DevOps është i fokusuar në ndihmën e ndarjes dhe furnizimit të aplikacioneve, por me mjetet DevOps mund të bëni edhe gjëra të tjera interesante. Për shembull, të përdorni mjetet 'infrastrukturë si kod' (IaC), të quajtura ndonjëherë mjete automatizimi të ndërmjetësimit. Këto mjete ndihmojnë në automatizimin e instalimit, menaxhimit dhe detyrave të tjera për ndërmjetësimin. Për shembull, një mjet automatizimi mund të marrë aplikacione (serverin e aplikacioneve, bazën e të dhënave, mjetet e monitorimit) me konfigurimet e duhura dhe t'i vendosë ato në serverin e aplikacioneve.
Ja disa mundësi mjete automatizimi të hapur për ndërmjetësimin:

Detajet në artikujt në :
Dhe tani çfarë?
Kjo është vetëm maja e ajsbergut. Zinxhiri DevOps mund të bëjë shumë më tepër. Filloni me mjetin CI/CD dhe zbuloni çfarë mund të automatizoni më tej për të lehtësuar punën tuaj. Mos harroni për për një bashkëpunim efektiv.
Ja disa artikuj të tjerë të shkëlqyer për DevOps për fillestarët:
Gjithashtu, mund të integrohet DevOps me mjetet e hapura për agile:
Burimi: habr.com
