Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus

Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus
Izveidojiet savu pirmo DevOps ķēdi piecos soļos iesācējiem.

DevOps ir kļuvis par panaceju pārāk lēniem, atvienotiem un citādi problemātiskiem izstrādes procesiem. Bet jums ir nepiecieÅ”amas minimālas zināŔanas par DevOps. Tas aptvers tādus jēdzienus kā DevOps ķēde un to, kā izveidot vienu no piecām darbÄ«bām. Å Ä« nav pilnÄ«ga rokasgrāmata, bet tikai "zivs", kuru var paplaÅ”ināt. Sāksim ar vēsturi.

Mans ievads par DevOps

Es kādreiz strādāju ar mākoņiem uzņēmumā Citi Group un izstrādāju IaaS tÄ«mekļa lietojumprogrammu, lai pārvaldÄ«tu Citi mākoņdatoÅ”anas infrastruktÅ«ru, taču mani vienmēr ir interesējis, kā optimizēt izstrādes ķēdi un uzlabot kultÅ«ru izstrādātāju vidÅ«. Gregs Lavenders, mÅ«su mākoņu arhitektÅ«ras un infrastruktÅ«ras tehnoloÄ£iju vadÄ«tājs, man ieteica Å”o grāmatu. Projekts "Fēnikss". Tas lieliski izskaidro DevOps principus un lasāms kā romāns.

Tabula aizmugurē parāda, cik bieži uzņēmumi izlaiž jaunas versijas:

Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus

Kā Amazon, Google un Netflix izdodas tik daudz izplatÄ«ties? Un tas ir vienkārÅ”i: viņi izdomāja, kā izveidot gandrÄ«z ideālu DevOps ķēdi.

Mums Citi bija ļoti atŔķirÄ«gi, lÄ«dz mēs pārgājām uz DevOps. Tad manai komandai bija dažādas vides, bet piegādi izstrādes serverim veicām manuāli. Visiem izstrādātājiem bija piekļuve tikai vienam izstrādes serverim, kura pamatā ir IBM WebSphere Application Server Community Edition. VienlaicÄ«gi mēģinot piegādāt, serveris ā€œnokritaā€, un katru reizi mums nācās ā€œsāpÄ«giā€ sarunāties savā starpā. Mums bija arÄ« nepietiekams koda pārklājums ar testiem, laikietilpÄ«gs manuālas piegādes process un nebija iespējas izsekot koda piegādi, izmantojot kādu uzdevumu vai klienta prasÄ«bas.

Bija skaidrs, ka kaut kas steidzami jādara, un es atradu lÄ«dzÄ«gi domājoÅ”u kolēģi. Mēs nolēmām kopā izveidot pirmo DevOps ķēdi ā€“ viņŔ uzstādÄ«ja virtuālo maŔīnu un Tomcat lietojumprogrammu serveri, un es parÅ«pējos par Jenkins, integrāciju ar Atlassian Jira un BitBucket, kā arÄ« par koda pārklājumu ar testiem. Projekts bija veiksmÄ«gs: mēs pilnÄ«bā automatizējām izstrādes ķēdi, panācām gandrÄ«z 100% darbspējas laiku izstrādes serverÄ«, varējām pārraudzÄ«t un uzlabot koda pārklājumu, izmantojot testus, un Git filiāli varēja piesaistÄ«t Jira piegādei un izsniegÅ”anai. Un gandrÄ«z visi rÄ«ki, ko izmantojām, lai izveidotu DevOps ķēdi, bija atvērtā pirmkoda.

Faktiski ķēde tika vienkārÅ”ota, jo mēs pat neizmantojām uzlabotas konfigurācijas, izmantojot Jenkins vai Ansible. Bet mums izdevās. VarbÅ«t tas ir principa sekas Pareto (pazÄ«stams arÄ« kā 80/20 noteikums).

ÄŖss DevOps un CI/CD ķēdes apraksts

DevOps ir dažādas definÄ«cijas. DevOps, tāpat kā Agile, ietver dažādas disciplÄ«nas. Taču lielākā daļa piekritÄ«s Ŕādai definÄ«cijai: DevOps ir programmatÅ«ras izstrādes metode jeb dzÄ«ves cikls, kuras galvenais princips ir radÄ«t kultÅ«ru, kurā izstrādātāji un citi darbinieki atrodas ā€œvienā viļņa garumāā€, roku darbs ir automatizēts, katrs dara to, ko prot vislabāk, palielinās piegāžu biežums, palielinās darba produktivitāte, palielinās elastÄ«ba.

Lai gan ar rÄ«kiem vien nepietiek, lai izveidotu DevOps vidi, tie ir neaizstājami. VissvarÄ«gākais no tiem ir nepārtraukta integrācija un nepārtraukta piegāde (CI/CD). Katrai videi ķēdē ir dažādi posmi (piemēram, DEV (izstrāde), INT (integrācija), TST (testÄ“Å”ana), QA (kvalitātes nodroÅ”ināŔana), UAT (lietotāja pieņemÅ”anas pārbaude), STG (sagatavoÅ”ana), PROD (lietoÅ”ana)) , manuālie uzdevumi ir automatizēti, izstrādātāji var izveidot kvalitatÄ«vu kodu, piegādāt to un var viegli atjaunot.

Šajā piezīmē ir aprakstīts, kā izveidot DevOps ķēdi piecās darbībās, kā parādīts attēlā zemāk, izmantojot atvērtā pirmkoda rīkus.

Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus

Sāksim pie lietas.

1. darbÄ«ba: CI/CD platforma

Pirmkārt, jums ir nepiecieÅ”ams CI/CD rÄ«ks. Jenkins ir MIT licencēts atvērtā pirmkoda CI/CD rÄ«ks, kas rakstÄ«ts Java, kas popularizēja DevOps kustÄ«bu un ir kļuvis par de facto CICD standartu.

Kas ir Dženkinss? Iedomājieties, ka jums ir maģisks vadības panelis dažādiem pakalpojumiem un rīkiem. CI/CD rīks, piemēram, Jenkins, pats par sevi ir bezjēdzīgs, taču ar dažādiem rīkiem un pakalpojumiem tas kļūst visvarens.

Papildus Jenkins ir arī daudzi citi atvērtā pirmkoda rīki, izvēlieties jebkuru.

Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus

Lūk, kā izskatās DevOps process ar CI/CD rīku

Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus

Vietnē localhost jums ir CI/CD rīks, taču vēl nav daudz darāmā. Pāriesim pie nākamās darbības.

2. darbÄ«ba. Versijas kontrole

Labākais (un neapÅ”aubāmi vienkārŔākais) veids, kā pārbaudÄ«t CI/CD rÄ«ka burvÄ«bu, ir integrēt to ar avotu kontroles pārvaldÄ«bas (SCM) rÄ«ku. Kāpēc jums ir nepiecieÅ”ama versiju kontrole? Pieņemsim, ka jÅ«s iesniedzat pieteikumu. JÅ«s to rakstāt Java, Python, C++, Go, Ruby, JavaScript vai jebkurā citā valodā, kas ir vagons un mazs ratiņŔ. Tas, ko jÅ«s rakstāt, tiek saukts par avota kodu. Sākumā, it Ä«paÅ”i, ja strādājat viens, varat visu saglabāt vietējā direktorijā. Taču, projektam augot un pievienojoties arvien vairāk cilvēku, jums ir nepiecieÅ”ams veids, kā koplietot koda izmaiņas, bet, apvienojot izmaiņas, izvairÄ«ties no konfliktiem. Un jums ir arÄ« kaut kā jāatjauno iepriekŔējās versijas, neizmantojot dublējumus un izmantojot kopÄ“Å”anas-ielÄ«mÄ“Å”anas metodi koda failiem.

Un Å”eit bez SCM nekur. SCM glabā kodu krātuvēs, pārvalda tā versijas un koordinē to starp izstrādātājiem.

Ir daudz SCM rīku, taču Git ir pelnīti kļuvis par de facto standartu. Iesaku to izmantot, bet ir arī citas iespējas.

Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus

LÅ«k, kā izskatās DevOps cauruļvads pēc SCM pievienoÅ”anas.

Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus

CI/CD rÄ«ks var automatizēt pirmkoda augÅ”upielādi un lejupielādi, kā arÄ« komandas sadarbÄ«bu. Nav slikti? Bet tagad, kā izveidot funkcionējoÅ”u lietojumprogrammu no Ŕīs, ko mÄ«l miljardiem lietotāju?

3. darbÄ«ba: izveidojiet automatizācijas rÄ«ku

Viss notiek kā nākas. Varat augÅ”upielādēt kodu un veikt izmaiņas avota kontrolē, kā arÄ« uzaicināt draugus sadarboties ar jums. Bet jums vēl nav lietotnes. Lai Ŕī bÅ«tu tÄ«mekļa lietojumprogramma, tā ir jāapkopo un jāiepako izplatÄ«Å”anai vai jāpalaiž kā izpildāmā programma. (Interpretētā programmÄ“Å”anas valoda, piemēram, JavaScript vai PHP, nav jākompilē.)

Izmantojiet bÅ«vniecÄ«bas automatizācijas rÄ«ku. NeatkarÄ«gi no tā, kuru rÄ«ku izvēlaties, tas apkopos kodu pareizajā formātā un automatizēs tÄ«rÄ«Å”anu, apkopoÅ”anu, testÄ“Å”anu un piegādi. VeidoÅ”anas rÄ«ki atŔķiras atkarÄ«bā no valodas, taču parasti tiek izmantotas tālāk norādÄ«tās atvērtā pirmkoda opcijas.

Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus

Perfekti! Tagad ievietosim veidoŔanas automatizācijas rīka konfigurācijas failus avota vadīklā, lai CI/CD rīks tos izveidotu.

Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus

Tas jūtas labi. Bet kur to visu tagad izvērst?

4. darbība: tīmekļa lietojumprogrammu serveris

Tātad jums ir iepakots fails, ko var izpildīt vai izvilkt. Lai lietojumprogramma patieŔām būtu noderīga, tai ir jābūt kaut kādam pakalpojumam vai interfeisam, taču jums tas viss ir kaut kur jāievieto.

TÄ«mekļa lietojumprogrammu var mitināt tÄ«mekļa lietojumprogrammu serverÄ«. Lietojumprogrammu serveris nodroÅ”ina vidi, kurā varat izpildÄ«t pakotnes loÄ£iku, renderēt saskarnes un atklāt tÄ«mekļa pakalpojumus, izmantojot ligzdu. Lai instalētu lietojumprogrammu serveri, ir nepiecieÅ”ams HTTP serveris un dažas citas vides (piemēram, virtuālā maŔīna). Pagaidām izliksimies, ka ar to visu saskaraties (lai gan tālāk es runāŔu par konteineriem).

Ir vairāki atvērti tīmekļa lietojumprogrammu serveri.

Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus

Mums jau ir gandrÄ«z strādājoÅ”a DevOps ķēde. Lielisks darbs!

Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus

Principā jÅ«s varat apstāties Å”eit, pēc tam varat ar to tikt galā pats, taču ir vērts runāt par koda kvalitāti.

5. darbÄ«ba: pārbaudiet pārklājumu

TestÄ“Å”ana prasa daudz laika un pūļu, taču labāk ir uzreiz atrast kļūdas un uzlabot kodu, lai iepriecinātu galalietotājus. Å im nolÅ«kam ir daudz atvērtu rÄ«ku, kas ne tikai pārbaudÄ«s kodu, bet arÄ« ieteiks, kā to uzlabot. Lielāko daļu CI/CD rÄ«ku var pievienot Å”iem rÄ«kiem un automatizēt procesu.

TestÄ“Å”ana ir sadalÄ«ta divās daļās: testÄ“Å”anas ietvari testu rakstÄ«Å”anai un izpildei un rÄ«ki ar padomiem koda kvalitātes uzlaboÅ”anai.

TestēŔanas ietvari

Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus

Instrumenti ar kvalitatīviem padomiem

Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus

Lielākā daļa no Å”iem rÄ«kiem un ietvariem ir rakstÄ«ti Java, Python un JavaScript, jo C++ un C# ir patentēti (lai gan GCC ir atvērtā koda).

Mēs esam izmantojuÅ”i testa pārklājuma rÄ«kus, un tagad DevOps konveijeram vajadzētu izskatÄ«ties kā attēlā apmācÄ«bas sākumā.

Papildu darbības

Konteineri

Kā jau teicu iepriekŔ, lietojumprogrammu serveri var mitināt virtuālajā maŔīnā vai serverī, bet konteineri ir populārāki.

Kas ir konteineri? ÄŖsāk sakot, virtuālajā maŔīnā operētājsistēma bieži aizņem vairāk vietas nekā lietojumprogramma, un parasti pietiek ar konteineru ar dažām bibliotēkām un konfigurāciju. Dažos gadÄ«jumos virtuālās maŔīnas ir neaizstājamas, taču konteinerā var ievietot lietojumprogrammu kopā ar serveri bez papildu maksas.

Konteineriem parasti tiek ņemti Docker un Kubernetes, lai gan ir arī citas iespējas.

Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus

Lasiet rakstus par Docker un Kubernetes vietnē opensource.com:

Starpprogrammatūras automatizācijas rīki

MÅ«su DevOps ķēde ir vērsta uz kopÄ«gu lietojumprogrammu veidoÅ”anu un piegādi, taču ir arÄ« citas interesantas lietas, ko varat darÄ«t, izmantojot DevOps rÄ«kus. Piemēram, izmantojiet Infrastructure as Code (IaC) rÄ«kus, kas pazÄ«stami arÄ« kā starpprogrammatÅ«ras automatizācijas rÄ«ki. Å ie rÄ«ki palÄ«dz automatizēt starpprogrammatÅ«ras instalÄ“Å”anu, pārvaldÄ«bu un citus uzdevumus. Piemēram, automatizācijas rÄ«ks var uzņemt lietojumprogrammas (tÄ«mekļa lietojumprogrammu serveris, datubāze, uzraudzÄ«bas rÄ«ki) ar pareizo konfigurāciju un nosÅ«tÄ«t tos lietojumprogrammu serverim.

Šeit ir dažas atvērtās starpprogrammatūras automatizācijas rīku iespējas:

Manekenu ceļvedis: DevOps ķēžu veidoÅ”ana, izmantojot atvērtā pirmkoda rÄ«kus

Sīkāka informācija rakstos opensource.com:

Un tagad ko?

Tā ir tikai aisberga redzamā daļa. DevOps ķēde var darīt daudz vairāk. Sāciet ar CI/CD rīku un uzziniet, ko vēl varat automatizēt, lai atvieglotu savu darbu. Neaizmirstiet par atvērtie saziņas līdzekļi efektīvai sadarbībai.

Šeit ir vēl daži labi DevOps raksti iesācējiem:

Varat arī integrēt DevOps ar atvērtiem veikliem rīkiem:

Avots: www.habr.com

Pievieno komentāru