Saturs[Paslēpt][Rādīt]
Infrastruktūra ir svarīga programmatūras izstrādes procesa sastāvdaļa, jo tā ir tieši atbildīga par lietojumprogrammas vienmērīgu darbību. Serveri, slodzes balansētāji, ugunsmūri, datu bāzes un sarežģītas konteineru kopas ir infrastruktūras piemēri.
Tā kā infrastruktūras grūtības skar visu izstrādes procesu, tās ir būtiskas ārpus ražošanas situācijām.
Tie cita starpā ietver CI/CD platformas, inscenēšanas vides un testēšanas rīkus.
Palielinoties programmatūras produkta sarežģītībai, šīs infrastruktūras problēmas kļūst arvien kritiskākas. Tradicionālā manuālās infrastruktūras pārvaldības tehnika ātri kļūst par nepiemērojamu risinājumu, kas atbilst mūsdienu DevOps ātrās programmatūras izstrādes ciklu vēlmēm.
Rezultātā Infrastructure as Code (IaC) mūsdienās ir kļuvis par de facto attīstības risinājumu. Infrastruktūra kā kods (IaC) ļauj mērogot un izsekot infrastruktūras izmaiņām, kad tās rodas.
Šajā rakstā mēs sīkāk aplūkosim infrastruktūru kā kodu, tostarp tās priekšrocības, to, kāpēc tā ir svarīga, un daudz ko citu. Tātad, sāksim.
Kas ir Infrastruktūra kā kods?
Infrastruktūra kā kods ir process, kurā tiek nodrošināta un konfigurēta vide, izmantojot kodu, nevis manuāli konfigurējot atbilstošās ierīces un sistēmas. Izstrādātāji palaiž skriptus pēc koda parametru definēšanas, un IaC platforma automātiski ģenerē mākoņa infrastruktūru.
Šādas automatizētas IT konfigurācijas ļauj komandām ātri izveidot nepieciešamo mākoņa iestatījumu produkta testēšanai un darbināšanai. Infrastruktūra kā kods ļauj izstrādātājiem izveidot jebkuru infrastruktūras komponentu, ko viņi vēlas, piemēram, tīklus, slodzes balansētāji, datu bāzes, virtuālās mašīnas un savienojumu veidi.
Nespeciālista izteiksmē tas ir infrastruktūras piegādes un pārvaldības process, kas norādīts, izmantojot kodu, nevis ar roku. IaC ir arī svarīga DevOps tehnika, kas nepieciešama ātram programmatūras piegādes dzīves ciklam.
Tas ļauj DevOps komandām ātri izveidot un versijas infrastruktūru tādā pašā veidā, kā tiek versēts pirmkods, kā arī izsekot šīm versijām, lai samazinātu IT vides neatbilstību, kas var radīt lielas problēmas izvietošanas laikā.
Deklaratīvas un imperatīvas pieejas IaC
IaC var pieiet divējādi: deklaratīvi vai imperatīvi.
IaC rīks iestatīs sistēmu jūsu vietā, ja izmantojat deklaratīvu pieeju, kas apraksta paredzēto sistēmas stāvokli, tostarp to, kādi resursi jums ir nepieciešami un kādas īpašības tiem vajadzētu būt.
Deklaratīva pieeja arī ļauj sekot līdzi jūsu sistēmas objektu pašreizējam stāvoklim, atvieglojot infrastruktūras dīkstāves pārvaldību. No otras puses, obligāta metode iezīmē konkrētos norādījumus, kas jāizpilda pareizā secībā, lai izveidotu paredzēto konfigurāciju.
Daudzas IaC tehnoloģijas izmanto deklaratīvu pieeju infrastruktūras nodrošināšanai un darīs to automātiski. Deklaratīvais IaC rīks piemēros izmaiņas vēlamajā stāvoklī, ja tās veiksit. Ja izmantojat svarīgu rīku, jums būs jānoskaidro, kā piemērot šīs korekcijas. IaC rīki bieži var darboties abos režīmos, lai gan tie dod priekšroku vienam pār otru.
Kā darbojas infrastruktūra kā kods?
Lai pilnībā ieviestu infrastruktūru kā kodu, ir jāievēro dažas prasības.
Platforma mākoņa mitināšanai kā pakalpojumam (IaaS)
Pirmā un vissvarīgākā nepieciešamība ir attālās piekļuves mitināšana. Konfigurācijas pārvaldības rīkam ir jāizveido savienojums ar attālo resursdatoru un tajā jāveic izmaiņas. Jūsu komandai ir jāgarantē, ka konfigurācijas pārvaldības rīkam ir piekļuve, ja attālā infrastruktūra ir pašpārvaldīta.
API IaaS iespējotajā mākoņa mitināšanas platformā ļauj klientiem pēc pieprasījuma izveidot, noņemt un mainīt infrastruktūras resursus. Konfigurācijas pārvaldības sistēmas var izmantot šīs API, lai vēl vairāk automatizētu šīs darbības. Digital Ocean, Amazon AWS un Microsoft Azure ir trīs galvenās IaaS sistēmas.
Platforma konfigurācijas pārvaldībai
Rīku komplekts, kas savienojas ar IaaS API un automatizē tipiskās darbības, ir nākamais priekšnoteikums IaC pabeigšanai. Cilvēku grupa var strādāt kopā, lai izveidotu skriptu un rīku kolekciju. Tomēr tas prasīs ievērojamas pūles, nepārtrauktu uzturēšanu un minimālu ieguldījumu atdevi. Terraform, Ansible, Salt Stack un Chef ir tikai daži no atvērtā pirmkoda konfigurācijas pārvaldības rīkiem, kas risina šo izaicinājumu.
Versijas kontroles sistēma
Konfigurācijas pārvaldības platforma izmanto teksta failus, kas rakstīti iezīmēšanas valodā, piemēram, YAML, lai nodrošinātu platformai izpildāmos uzdevumus un secības. Šos teksta failus var uzskatīt par lietojumprogrammas kodu un glabāt versiju kontroles repozitorijā. Repozitorijā ir atļauti izvilkšanas pieprasījumi un kodu pārskatīšana, kas darbojas kā vienots patiesības punkts. Vispopulārākā ir versiju kontroles sistēma Git.
Ja šie priekšnoteikumi ir ieviesti, apsveriet šādu situāciju: izstrādātājs vēlas sistēmai pievienot jaunu lietojumprogrammu pakalpojumu. Šis piemērs ilustrē IaC procesu.
- Vēlamajā konfigurācijas pārvaldības platformā Terraform izstrādātājs modificē YAML konfigurācijas teksta failu. Izmaiņas nosaka, ka ir nepieciešams jauns hostinga serveris.
- Git repozitorijā izstrādātājs veic izmaiņas līdzekļu atzarā. Izstrādātājs izveido izvilkšanas pieprasījumu, jo projekta Git repozitorijs tiek mitināts vietnē Bitbucket. Cits komandas dalībnieks izskata izvilkšanas pieprasījumu un pamana jaunos infrastruktūras uzlabojumus. Izvilkšanas pieprasījumu apstiprina komandas dalībnieks, un izstrādātājs integrē izmaiņas repozitorija galvenajā filiālē.
- Lai veiktu atjaunināšanu, šajā darbībā ir nepieciešama konfigurācijas platforma. Izstrādātājs var manuāli sākt atjaunināšanu. Tā kā komanda izmanto Bitbucket, viņiem ir piekļuve Bitbucket cauruļvadiem un to var izmantot, lai automatizētu šo procedūru.
- Pēc izpildes Terraform izveido savienojumu ar komandas IaaS. Terraform izmanto IaaS API, lai palaistu komandu secību, kas atjaunina IaaS līdz paredzamajai infrastruktūras konfigurācijai.
IaC priekšrocības
IaC palīdz organizācijām pārvaldīt to IT infrastruktūras prasības dažādos veidos, izmantojot automatizētas procedūras. Dažas no IaC instalēšanas priekšrocībām ir šādas:
- Konsekvence: IaC var palielināt konsekvenci un samazināt kļūdas, kas bieži rodas manuālo iestatījumu laikā. Tas arī novērš konfigurācijas novirzi, kas var rasties manuālas darbības laikā. IaC ļauj novērst nedokumentētas, ad-hoc konfigurācijas izmaiņas, kodējot un dokumentējot jūsu konfigurācijas standartus.
- Efektivitāte: kodējot infrastruktūru, tiek izveidota nodrošināšanas veidne, kas atvieglo sistēmas konfigurēšanu, apkopi un administrēšanu. Tas veido elastīgu, atkārtojamu un mērogojamu infrastruktūru. Rezultātā DevOps var paātrināt katru programmatūras izstrādes posmu, kā rezultātā katru dienu tiek publicēts vairāk lietotņu.
- Samazinātas izmaksas: IaC ļauj virtuālās mašīnas pārvaldīt programmatiski, novēršot vajadzību pēc manuālas aparatūras konfigurācijas un jauninājumiem. Izmantojot vienu un to pašu koda daļu, viens operators var instalēt un pārvaldīt vienu iekārtu vai 1000 vienības. Rezultātā ir nepieciešams mazāk darbinieku un vairs nav nepieciešams jauns aprīkojums, tādējādi radot ievērojamus izmaksu ietaupījumus.
- Ātrums: IaC samazina laiku, kas nepieciešams izstrādātājiem, lai nodrošinātu infrastruktūru, pārvēršot to vienkāršā skriptā. Tā rezultātā infrastruktūra vairs neaizkavē lietojumprogrammu izvietošanu, un jaunu programmatūru var piegādāt ievērojami ātrāk.
- Samaziniet risku: kā IaC mudina versijas kontrole, jūsu konfigurācijas failus, tāpat kā jebkuru citu programmatūras pirmkoda failu, var izsekot. Tā rezultātā risks tiek samazināts.
Kādu problēmu IaC atrisina?
Infrastruktūra kā kods tika izveidota, lai risinātu problēmu saistībā ar izlaišanas cauruļvada vides novirzi. Bez IaC komandas ir atbildīgas par katras izvietošanas vides iestatījumu uzturēšanu. Katra vide pārvēršas par sniegpārsliņu, vienreizēju izkārtojumu, ko nevar automātiski atkārtot.
Izvietošanas laikā vides neatbilstība rada problēmas. Sniegpārslām ir nepieciešamas manuālas darbības, kuras ir grūti vadīt un veicina kļūdas infrastruktūras administrēšanā un uzturēšanā.
Infrastruktūra kā kods ievēro idempotences ideju.
Idempotence attiecas uz faktu, ka izvietošanas komanda vienmēr konfigurē mērķa vidi vienādi, neatkarīgi no vides sākuma stāvokļa. Idempotence tiek sasniegta, vai nu automātiski uzstādot esošu mērķi, vai atmetot esošo mērķi un sākot no jauna.
Rezultātā, izmantojot IaC, komandas modificē vides aprakstu un konfigurācijas modeļa versiju, kas bieži tiek rakstīta labi dokumentētos koda formātos, piemēram, JSON. Modelis tiek palaists izlaišanas konveijerā, lai iestatītu mērķa vides. Ja nepieciešams veikt izmaiņas, komanda rediģē avotu, nevis mērķi.
Kāda nozīme IaC ir DevOps?
Ieviešot DevOps un nepārtrauktas integrācijas/nepārtrauktas piegādes (CI/CD) metodoloģijas, ir jāizmanto IaC. Tas atbrīvo izstrādātājus no lielākās daļas nodrošināšanas pienākumu, ļaujot viņiem vienkārši palaist skriptu, lai izveidotu un palaistu infrastruktūru.
Tā rezultātā lietojumprogrammu izvietošana netiek apturēta, kamēr tiek veidota infrastruktūra, un sistēmas administratori netiek apgrūtināti ar laikietilpīgiem manuāliem uzdevumiem. Sākot no integrācijas un testēšanas līdz piegādei un izvietošanai, CI/CD paļaujas uz pastāvīgu automatizāciju un nepārtrauktu uzraudzību visā lietojumprogrammas dzīves ciklā. Lai automatizācija darbotos, ir nepieciešama pastāvīga vide.
Ja izstrādes komanda piegādā lietotnes vai konfigurē vides vienā veidā un operāciju komanda instalē un konfigurē vidi citā veidā, lietojumprogrammu izvietošanas automatizācija nav iespējama.
DevOps metodoloģija saskaņo izstrādes un operāciju komandas, tādējādi radot mazāk kļūdu, manuālas izvietošanas un neatbilstību. Tā kā gan izstrādes, gan operāciju komandas var izmantot vienu un to pašu lietojumprogrammas izvietošanas aprakstu, IaC palīdz sinhronizēt izstrādi un darbības, nodrošinot DevOps pieeju.
Katrai videi, tostarp jūsu ražošanas videi, ir jāievēro viena un tā pati izvietošanas metode. Katru reizi, kad tiek izmantots IaC, tiek izveidota identiska vide.
Secinājumi
DevOps lielā mērā paļaujas uz infrastruktūru kā kodu. Infrastruktūra kā kods ir dabisks nākamais solis, lai padarītu jūsu darbību gatavu nākotnei pasaulē, kurā graujošas tehnoloģijas nepārtraukti pārveido IT nozari.
Tas ļauj pilnībā realizēt potenciālu mākonis skaitļošanas, samazina kļūdas, kas saistītas ar manuālu IT infrastruktūras pārvaldību, un uzlabo programmatūras izstrādes ātrumu. Tas viss tiek panākts, samazinot saimnieciskās darbības izdevumus.
Atstāj atbildi