Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega

Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega
Algajatele mÔeldud esimese DevOpsi ahela loomine viie sammuga.

DevOpsist on saanud imerohi liiga aeglaste, lahtiĂŒhendatud ja muidu probleemsete arendusprotsesside jaoks. Kuid teil on DevOpsis vaja minimaalseid teadmisi. See hĂ”lmab selliseid kontseptsioone nagu DevOpsi kett ja viis, kuidas seda luua. See ei ole tĂ€ielik juhend, vaid ainult "kala", mida saab laiendada. Alustame ajaloost.

Minu tutvustus DevOpsiga

Varem töötasin Citi Groupis pilvedega ja arendasin Citi pilvetaristu haldamiseks IaaS-i veebirakendust, kuid mind on alati huvitanud, kuidas optimeerida arendusahelat ja parandada arendajate seas kultuuri. Meie pilvarhitektuuri ja -taristu tehnoloogiadirektor Greg Lavender soovitas mulle seda raamatut. Projekt "Phoenix". See selgitab kaunilt DevOpsi pÔhimÔtteid ja loeb nagu romaan.

TagakĂŒljel olev tabel nĂ€itab, kui sageli ettevĂ”tted uusi versioone vĂ€lja lasevad:

Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega

Kuidas Ônnestub Amazonil, Google'il ja Netflixil nii palju levitada? Ja see on lihtne: nad leidsid, kuidas luua peaaegu tÀiuslik DevOpsi kett.

Kuni DevOpsile ĂŒleminekuni olid Citi asjad meie jaoks vĂ€ga erinevad. Siis olid minu meeskonnal erinevad keskkonnad, kuid arendusserverisse toimetasime kĂ€sitsi. KĂ”igil arendajatel oli juurdepÀÀs ainult ĂŒhele IBM WebSphere Application Server Community Editionil pĂ”hinevale arendusserverile. Samaaegse toimetamise katsega server "kukkus" ja iga kord pidime "valulikult" omavahel lĂ€bi rÀÀkima. Meil oli ka ebapiisav koodi katvus testidega, aeganĂ”udev kĂ€sitsi edastamise protsess ja meil ei olnud mingit vĂ”imalust jĂ€lgida koodi edastamist mĂ”ne ĂŒlesande vĂ”i kliendi nĂ”ude abil.

Oli selge, et midagi on kiiresti vaja ette vĂ”tta ja leidsin endale mĂ”ttekaaslase. Otsustasime koos luua esimese DevOpsi keti – tema seadistas virtuaalmasina ja Tomcati rakendusserveri ning mina hoolitsesin Jenkinsi, Atlassian Jira ja BitBucketiga integreerimise ning ka koodide katmise eest testidega. Projekt oli edukas: automatiseerisime arendusahela tĂ€ielikult, saavutasime arendusserveris peaaegu 100% tööaja, saime jĂ€lgida ja testidega koodi katvust parandada ning Giti haru sai siduda Jira tarne ja vĂ€ljastamisega. Ja peaaegu kĂ”ik tööriistad, mida kasutasime DevOpsi keti koostamiseks, olid avatud lĂ€htekoodiga.

Tegelikult oli kett lihtsustatud, sest me ei rakendanud isegi Jenkinsi vÔi Ansible'i abil tÀpsemaid konfiguratsioone. Aga meil Ônnestus. VÔib-olla on see pÔhimÔtte tagajÀrg Pareto (teise nimega 80/20 reegel).

DevOpsi ja CI/CD ahela lĂŒhikirjeldus

DevOpsil on erinevad mÀÀratlused. DevOps, nagu ka Agile, sisaldab erinevaid erialasid. Kuid enamik nĂ”ustub jĂ€rgmise definitsiooniga: DevOps on tarkvaraarenduse meetod vĂ”i elutsĂŒkkel, mille pĂ”hiprintsiip on luua kultuur, kus arendajad ja teised töötajad on "samal lainepikkusel", kĂ€sitsitöö on automatiseeritud, igaĂŒks teeb seda, mida oskab, tarnete sagedus suureneb, töö produktiivsus suureneb, paindlikkus suureneb.

Kuigi tööriistadest ĂŒksi DevOpsi keskkonna loomiseks ei piisa, on need asendamatud. KĂ”ige olulisem neist on pidev integreerimine ja pidev tarnimine (CI/CD). Iga keskkonna jaoks on ahelas erinevad etapid (nt DEV (arendus), INT (integreerimine), TST (testimine), QA (kvaliteedi tagamine), UAT (kasutaja aktsepteerimise testimine), STG (ettevalmistus), PROD (kasutus)) , kĂ€sitsi toimingud on automatiseeritud, arendajad saavad kvaliteetset koodi koostada, selle kohale toimetada ja hĂ”lpsasti ĂŒmber ehitada.

See mÀrkus kirjeldab, kuidas luua DevOpsi kett viies etapis, nagu on nÀidatud alloleval pildil, kasutades avatud lÀhtekoodiga tööriistu.

Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega

Asume asja kallale.

1. samm: CI/CD platvorm

KÔigepealt vajate CI/CD tööriista. Jenkins on MIT-i litsentsiga avatud lÀhtekoodiga CI/CD tööriist, mis on kirjutatud Java keeles, mis populariseeris DevOpsi liikumist ja millest on saanud CICD de facto standard.

Mis on Jenkins? Kujutage ette, et teil on maagiline juhtpaneel mitmesuguste teenuste ja tööriistade jaoks. AinuĂŒksi selline CI/CD tööriist nagu Jenkins on kasutu, kuid erinevate tööriistade ja teenustega muutub see kĂ”ikvĂ”imsaks.

Lisaks Jenkinsile on palju muid avatud lĂ€htekoodiga tööriistu, valige ĂŒkskĂ”ik milline.

Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega

Siit saate teada, kuidas DevOpsi protsess CI/CD tööriistaga vÀlja nÀeb

Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega

Sul on localhostis CI/CD tööriist, kuid teha pole veel palju. Liigume edasi jÀrgmise sammu juurde.

2. samm: versioonide loomine

Parim (ja vaieldamatult lihtsaim) viis CI/CD tööriista vĂ”lu testimiseks on selle integreerimine allika juhtimise (SCM) tööriistaga. Miks on vaja versioonikontrolli? Oletame, et esitate avalduse. Kirjutate selle Java, Python, C++, Go, Ruby, JavaScripti vĂ”i mĂ”nes muus keeles, mis on vagun ja vĂ€ike kĂ€ru. Seda, mida sa kirjutad, nimetatakse lĂ€htekoodiks. Alguses, eriti kui töötate ĂŒksi, saate kĂ”ik salvestada kohalikku kataloogi. Kuid projekti kasvades ja rohkem inimesi liitudes on teil vaja viisi koodimuudatuste jagamiseks, kuid muudatuste liitmisel konfliktide vĂ€ltimiseks. Samuti peate kuidagi taastama varasemad versioonid ilma varukoopiaid kasutamata ja koodifailide jaoks kopeerimis-kleebi meetodit kasutamata.

Ja siin ilma SCM-ita kuskil. SCM salvestab koodi hoidlates, haldab selle versioone ja koordineerib seda arendajate vahel.

SCM-i tööriistu on palju, kuid Gitist on teenitult saanud de facto standard. Soovitan teil seda kasutada, kuid on ka teisi vÔimalusi.

Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega

Nii nÀeb DevOpsi torujuhe pÀrast SCM-i lisamist vÀlja.

Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega

CI/CD tööriist vĂ”ib automatiseerida lĂ€htekoodi ĂŒles- ja allalaadimist ning meeskonna koostööd. Pole paha? Aga kuidas teha sellest miljardite kasutajate poolt armastatud rakendus?

3. samm: looge automatiseerimistööriist

KĂ”ik lĂ€heb nii nagu peab. Saate koodi ĂŒles laadida ja allika juhtimises muudatusi teha ning sĂ”pru endaga koostööd tegema kutsuda. Kuid teil pole veel rakendust. Selleks, et see oleks veebirakendus, tuleb see levitamiseks kompileerida ja pakendada vĂ”i kĂ€ivitada kĂ€ivitatava failina. (TĂ”lgendatud programmeerimiskeelt, nagu JavaScript vĂ”i PHP, ei ole vaja kompileerida.)

Kasutage ehitamise automatiseerimise tööriista. ÜkskĂ”ik millise tööriista valite, koostab see koodi Ă”iges vormingus ning automatiseerib puhastamise, kompileerimise, testimise ja kohaletoimetamise. Koostamistööriistad on keeleti erinevad, kuid tavaliselt kasutatakse jĂ€rgmisi avatud lĂ€htekoodiga valikuid.

Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega

TĂ€iuslik! NĂŒĂŒd sisestame koostamise automatiseerimise tööriista konfiguratsioonifailid allika juhtimisse, nii et CI/CD tööriist loob need.

Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega

See on hea tunne. Aga kuhu see kĂ”ik nĂŒĂŒd vĂ€lja tuleb?

4. samm: veebirakenduste server

Seega on teil pakitud fail, mida saab kÀivitada vÔi vÀlja panna. Selleks, et rakendus oleks tÔesti kasulik, peab sellel olema mingi teenus vÔi liides, kuid peate selle kÔik kuhugi paigutama.

Veebirakendust saab majutada veebirakenduste serveris. Rakendusserver pakub keskkonda, kus saate pesa kaudu kÀivitada pakitud loogikat, renderdada liideseid ja paljastada veebiteenuseid. Rakendusserveri installimiseks vajate HTTP-serverit ja mÔnda muud keskkonda (nÀiteks virtuaalmasinat). Praegu kujutame ette, et tegelete selle kÔigega edasi (kuigi ma rÀÀgin allpool konteineritest).

Avatud veebirakenduste serverid on mitu.

Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega

Meil on juba peaaegu töötav DevOpsi kett. SuurepÀrane töö!

Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega

PÔhimÔtteliselt vÔite siin peatuda, siis saate sellega ise hakkama, kuid tasub rÀÀkida koodi kvaliteedist.

5. samm: testige katvust

Testimine vĂ”tab palju aega ja vaeva, kuid parem on vead kohe ĂŒles leida ja koodi tĂ€iustada, et lĂ”ppkasutajatele meeldida. Selleks on palju avatud tööriistu, mis mitte ainult ei testi koodi, vaid annavad nĂ”u ka selle tĂ€iustamiseks. Enamik CI/CD tööriistu saab nende tööriistadega ĂŒhendada ja protsessi automatiseerida.

Testimine jaguneb kaheks osaks: testimisraamistikud testide kirjutamiseks ja tÀitmiseks ning vihjetega tööriistad koodi kvaliteedi parandamiseks.

Testimisraamistikud

Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega

Tööriistad kvaliteetsete nÀpunÀidetega

Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega

Enamik neist tööriistadest ja raamistikest on kirjutatud Java, Pythoni ja JavaScripti jaoks, kuna C++ ja C# on patenteeritud (kuigi GCC on avatud lÀhtekoodiga).

Oleme rakendanud testkatte tööriistad ja nĂŒĂŒd peaks DevOpsi torujuhe vĂ€lja nĂ€gema nagu Ă”petuse alguses oleval pildil.

TĂ€iendavad sammud

Konteinerid

Nagu ma varem ĂŒtlesin, saab rakendusserverit majutada virtuaalmasinas vĂ”i serveris, kuid konteinerid on populaarsemad.

Mis on konteinerid? LĂŒhidalt, virtuaalses masinas vĂ”tab operatsioonisĂŒsteem sageli rohkem ruumi kui rakendus ning tavaliselt piisab mĂ”ne teegi ja konfiguratsiooniga konteinerist. MĂ”nel juhul on virtuaalmasinad asendamatud, kuid konteiner mahutab rakenduse koos serveriga ilma lisatasuta.

Konteinerite jaoks vÔetakse tavaliselt Docker ja Kubernetes, kuigi on ka muid vÔimalusi.

Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega

Lugege artikleid Dockeri ja Kubernetese kohta aadressil opensource.com:

Vahevara automatiseerimise tööriistad

Meie DevOpsi kett on keskendunud koostööl pĂ”hinevale rakenduse loomisele ja tarnimisele, kuid DevOpsi tööriistadega saate teha ka muid huvitavaid asju. NĂ€iteks kasutage Infrastructure as Code (IaC) tööriistu, mida tuntakse ka vahevara automatiseerimise tööriistadena. Need tööriistad aitavad automatiseerida vahevara installimist, haldamist ja muid ĂŒlesandeid. NĂ€iteks vĂ”ib automatiseerimistööriist vĂ”tta Ă”igete konfiguratsioonidega rakendused (veebirakendusserver, andmebaas, jĂ€lgimistööriistad) ja lĂŒkata need rakendusserverisse.

Siin on mÔned avatud vahevara automatiseerimistööriistade vÔimalused.

Mannekeenide juhend: DevOpsi kettide loomine avatud lÀhtekoodiga tööriistadega

Üksikasjad artiklites opensource.com:

Ja nĂŒĂŒd, mis?

See on vaid jÀÀmĂ€e tipp. DevOpsi kett suudab palju enamat. Alustage CI/CD tööriistaga ja vaadake, mida veel saate oma töö hĂ”lbustamiseks automatiseerida. Ärge unustage avatud suhtlusvahendid tĂ”husaks koostööks.

Siin on veel mÔned head DevOpsi artiklid algajatele:

DevOpsi saate integreerida ka avatud agiilsete tööriistadega:

Allikas: www.habr.com

Ostke DDoS-kaitsega saitide jaoks usaldusvÀÀrne hostimine, VPS VDS-serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster