
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. . 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:
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 (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.
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.
Siit saate teada, kuidas DevOpsi protsess CI/CD tööriistaga vÀlja nÀeb
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.

Nii nÀeb DevOpsi torujuhe pÀrast SCM-i lisamist vÀlja.
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.

TĂ€iuslik! NĂŒĂŒd sisestame koostamise automatiseerimise tööriista konfiguratsioonifailid allika juhtimisse, nii et CI/CD tööriist loob need.
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.
Meil on juba peaaegu töötav DevOpsi kett. SuurepÀrane töö!
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
Tööriistad kvaliteetsete nÀpunÀidetega
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.
? 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.
Lugege artikleid Dockeri ja Kubernetese kohta aadressil :
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.

Ăksikasjad artiklites :
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 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
