Kazalo[Skrij][Pokaži]
Infrastruktura je pomemben del procesa razvoja programske opreme, saj je neposredno odgovorna za nemoteno delovanje programske aplikacije. Strežniki, balansirniki obremenitve, požarni zidovi, baze podatkov in zapleteni kontejnerski grozdi so primeri infrastrukture.
Ker infrastrukturne težave prežemajo celoten razvojni proces, so pomembne tudi zunaj proizvodnih situacij.
Med drugim vključujejo platforme CI/CD, uprizoritvena okolja in orodja za testiranje.
Ko se kompleksnost programskega izdelka povečuje, postanejo ti infrastrukturni izzivi bolj kritični. Tradicionalna tehnika ročnega upravljanja infrastrukture hitro postane nepregledna rešitev, ki ustreza željam današnjih ciklov hitrega razvoja programske opreme, ki temeljijo na DevOps.
Kot rezultat, je Infrastruktura kot koda (IaC) postala de facto razvojna rešitev danes. Infrastruktura kot koda (IaC) vam omogoča prilagajanje in spremljanje sprememb infrastrukture, ko se pojavijo.
V tem delu si bomo podrobneje ogledali infrastrukturo kot kodo, vključno z njenimi prednostmi, zakaj je ključnega pomena in še več. Torej, začnimo.
Kaj je Infrastruktura kot zakonik?
Infrastruktura kot koda je proces zagotavljanja in konfiguriranja okolja z uporabo kode namesto ročnega konfiguriranja ustreznih naprav in sistemov. Razvijalci zaženejo skripte po definiranju parametrov kode, platforma IaC pa samodejno ustvari infrastrukturo v oblaku.
Takšne avtomatizirane IT konfiguracije omogočajo ekipam, da hitro zgradijo potrebno nastavitev v oblaku za testiranje in zagon svojega izdelka. Infrastruktura kot koda omogoča razvijalcem, da zgradijo katero koli infrastrukturno komponento, ki jo želijo, kot so omrežja, balansirke obremenitve, baze podatkov, virtualne stroje in vrste povezav.
Laično povedano, gre za postopek dobave in upravljanja infrastrukture, določene s kodo in ne ročno. IaC je tudi pomembna tehnika DevOps, ki je potrebna za hiter življenjski cikel dostave programske opreme.
Omogoča ekipam DevOps, da hitro zgradijo in različico infrastrukture na enak način, kot je različica izvorne kode, ter spremljanje teh različic, da se čim bolj zmanjša neskladje med okolji IT, ki lahko povzročijo velike težave med uvajanjem.
Deklarativni in imperativni pristopi k IaC
IaC je mogoče pristopiti na dva načina: deklarativno ali imperativno.
Orodje IaC bo sistem nastavilo namesto vas, če uporabite deklarativni pristop, ki opisuje predvideno stanje sistema, vključno s tem, katere vire potrebujete in katere lastnosti bi morali imeti.
Deklarativni pristop ohranja tudi sledenje trenutnega stanja sistemskih objektov, kar olajša upravljanje izpadov vaše infrastrukture. Po drugi strani imperativna metoda opisuje posebna navodila, ki jih je treba izvesti v pravilnem vrstnem redu za ustvarjanje predvidene konfiguracije.
Številne tehnologije IaC uporabljajo deklarativni pristop k zagotavljanju infrastrukture in bodo to storile samodejno. Deklarativno orodje IaC bo za vas uporabilo spremembe v želenem stanju, če jih naredite. Če uporabljate bistveno orodje, boste morali ugotoviti, kako uporabiti te prilagoditve. Orodja IaC so pogosto sposobna delovati v obeh načinih, čeprav dajejo prednost enemu pred drugim.
Kako deluje infrastruktura kot koda?
Za popolno implementacijo infrastrukture kot kode mora biti vzpostavljenih nekaj zahtev.
Platforma za gostovanje v oblaku kot storitev (IaaS)
Prva in najpomembnejša potreba je gostovanje na daljavo. Orodje za upravljanje konfiguracije se mora povezati z oddaljenim gostiteljem in tam izvesti spremembe. Vaša ekipa mora zagotoviti, da ima orodje za upravljanje konfiguracije dostop, če se oddaljena infrastruktura upravlja sama.
API-ji na platformi za gostovanje v oblaku, ki podpira IaaS, strankam omogočajo gradnjo, odstranjevanje in spreminjanje infrastrukturnih virov na zahtevo. Sistemi za upravljanje konfiguracije lahko uporabljajo te API-je za še dodatno avtomatizacijo teh dejavnosti. Digital Ocean, Amazon AWS in Microsoft Azure so trije glavni sistemi IaaS.
Platforma za upravljanje konfiguracije
Zbirka orodij, ki se povezuje z API-ji IaaS in avtomatizira tipične operacije, je naslednji predpogoj za dokončanje IaC. Skupina ljudi lahko sodeluje pri izdelavi zbirke skriptov in orodij. Vendar pa bi potrebovali veliko truda, stalno vzdrževanje in minimalno donosnost naložbe. Terraform, Ansible, Salt Stack in Chef so le nekatera odprtokodna orodja za upravljanje konfiguracije, ki se spopadajo s tem izzivom.
Nadzorni sistem za nadzor
Platforma za upravljanje konfiguracije uporablja besedilne datoteke, napisane v označevalnem jeziku, kot je YAML, da zagotovi naloge in zaporedja, ki jih platforma izvaja. Te besedilne datoteke je mogoče obravnavati kot kodo aplikacije in jih shraniti v repozitoriju za nadzor različic. Zahteve po vleku in pregledi kod so dovoljeni v skladišču, ki deluje kot enotna točka resnice. Najbolj priljubljen je sistem za nadzor različic Git.
S temi predpogoji upoštevajte naslednji scenarij: razvijalec želi sistemu dodati novo aplikacijsko storitev. Ta primer ponazarja postopek IaC.
- V svoji prednostni platformi za upravljanje konfiguracije, Terraform, razvijalec spremeni besedilno datoteko konfiguracije YAML. Spremembe navajajo, da je potreben nov strežnik za gostovanje.
- V repozitoriju Git razvijalec objavi spremembe v veji funkcij. Razvijalec ustvari zahtevo za vleko, saj je repozitorij Git projekta gost na Bitbucketu. Drugi član ekipe si ogleda zahtevo za vleko in opazi nove izboljšave infrastrukture. Zahtevo za vleko odobri član ekipe, razvijalec pa integrira spremembo v glavno vejo skladišča.
- V tem koraku je za izvedbo posodobitve potrebna konfiguracijska platforma. Razvijalec lahko ročno sproži posodobitev. Ker ekipa uporablja Bitbucket, ima dostop do cevovodov Bitbucket in jih lahko uporabi za avtomatizacijo tega postopka.
- Terraform se po izvedbi poveže z IaaS ekipe. Terraform uporablja API IaaS za izvajanje zaporedja ukazov, ki posodobijo IaaS na pričakovano konfiguracijo infrastrukture.
Prednosti IaC
IaC pomaga organizacijam pri upravljanju njihovih potreb po IT infrastrukturi na različne načine z avtomatiziranimi postopki. Nekatere prednosti namestitve IaC so naslednje:
- Doslednost: IaC lahko poveča doslednost in zmanjša napake, ki se pogosto pojavljajo med ročnimi nastavitvami. Preprečuje tudi premik konfiguracije, do katerega lahko pride med ročnim delovanjem. IaC vam omogoča preprečevanje nedokumentiranih ad hoc konfiguracijskih sprememb s kodificiranjem in dokumentiranjem vaših konfiguracijskih standardov.
- Učinkovitost: kodiranje vaše infrastrukture ustvari predlogo za oskrbo, kar olajša konfiguracijo, vzdrževanje in administracijo sistema. Gradi fleksibilno, ponovljivo in razširljivo infrastrukturo. Posledično lahko DevOps pospeši vsako stopnjo razvoja programske opreme, kar ima za posledico vsakodnevno objavo več aplikacij.
- Zmanjšani stroški: IaC omogoča programsko upravljanje navideznih strojev, kar odpravlja potrebo po ročni konfiguraciji strojne opreme in nadgradnjah. Z uporabo iste kode lahko en operater namesti in upravlja en stroj ali 1000 enot. Posledično je potrebnih manj zaposlenih in nova oprema ni več potrebna, kar ima za posledico znatne prihranke pri stroških.
- Hitrost: IaC skrajša čas, potreben za razvijalce za dobavo svoje infrastrukture, tako da jo spremeni v preprost skript. Posledično infrastruktura ne zamuja več uvajanja aplikacij, nova programska oprema pa se lahko dostavi bistveno hitreje.
- Zmanjšajte tveganje: kot spodbuja IaC nadzor različice, je mogoče slediti vašim konfiguracijskim datotekam, tako kot kateri koli drugi datoteki izvorne kode programske opreme. Posledično se tveganje zmanjša.
Kateri problem rešuje IaC?
Infrastruktura kot koda je bila ustvarjena za reševanje vprašanja odmika okolja cevovoda za sprostitev. Brez IaC so ekipe odgovorne za vzdrževanje nastavitev vsakega okolja uvajanja. Vsako okolje se razvije v snežinko, edinstveno ureditev, ki je ni mogoče samodejno ponoviti.
Med uvajanjem neskladnost med okolji povzroča težave. Snežinke potrebujejo ročne operacije, ki jih je težko upravljati in prispevajo k napakam pri upravljanju in vzdrževanju infrastrukture.
Infrastruktura kot kodeks se drži ideje idempotence.
Idempotenca se nanaša na dejstvo, da ukaz za razmestitev vedno konfigurira ciljno okolje na enak način, ne glede na začetno stanje okolja. Idempotenco dosežemo bodisi s samodejno nastavitvijo obstoječega cilja bodisi z opustitvijo obstoječega cilja in začetkom znova.
Kot rezultat, z uporabo IaC ekipe spremenijo opis okolja in različico konfiguracijskega modela, ki je pogosto napisan v dobro dokumentiranih oblikah kode, kot je JSON. Model se izvaja v cevovodu za izdajo za nastavitev ciljnih okolij. Ekipa ureja vir in ne cilj, če je treba spremeniti.
Kako pomemben je IaC v DevOps?
Izvajanje metodologij DevOps in neprekinjene integracije/neprekinjene dostave (CI/CD) zahteva uporabo IaC. Razvijalcem razbremeni večino obveznosti zagotavljanja, kar jim omogoča, da samo zaženejo skript, da začnejo svojo infrastrukturo zagnati.
Posledično se razmestitev aplikacij med gradnjo infrastrukture ne ustavi, sistemski administratorji pa niso obremenjeni z dolgotrajnimi ročnimi opravili. Od integracije in testiranja do dostave in uvajanja se CI/CD zanaša na stalno avtomatizacijo in neprekinjeno spremljanje skozi celoten življenjski cikel aplikacije. Za delovanje avtomatizacije je potrebno stalno okolje.
Kadar razvojna skupina dostavi aplikacije ali konfigurira okolja na en način, operativna ekipa pa namesti in konfigurira okolje na drugačen način, avtomatizirana razmestitev aplikacij ni mogoča.
Metodologija DevOps usklajuje razvojne in operativne ekipe, kar ima za posledico manj napak, ročnih uvedb in nedoslednosti. Ker lahko tako razvojne kot operativne skupine uporabljajo enak opis uvajanja aplikacije, vam IaC pomaga sinhronizirati razvoj in operacije, kar omogoča pristop DevOps.
Vsako okolje, vključno z vašim produkcijskim okoljem, bi moralo upoštevati isti način uvajanja. Vsakič, ko se uporabi IaC, se ustvari enako okolje.
zaključek
DevOps se močno zanaša na infrastrukturo kot kodo. Infrastruktura kot koda je naravni naslednji korak pri pripravi vašega poslovanja na prihodnost v svetu, kjer moteče tehnologije nenehno spreminjajo IT sektor.
Omogoča vam, da uresničite polni potencial računalništvo v oblaku, zmanjša napake, povezane z ročnim upravljanjem infrastrukture IT, in izboljša hitrost razvoja programske opreme. Vse to dosežemo ob zniževanju stroškov poslovanja.
Pustite Odgovori