Turinys[Slėpti][Rodyti]
Infrastruktūra yra svarbi programinės įrangos kūrimo proceso dalis, nes ji yra tiesiogiai atsakinga už sklandų programinės įrangos veikimą. Serveriai, apkrovos balansavimo priemonės, ugniasienės, duomenų bazės ir sudėtingi konteinerių klasteriai yra infrastruktūros pavyzdžiai.
Kadangi infrastruktūros sunkumai persmelkia visą kūrimo procesą, jie yra svarbūs ne tik gamybos situacijoms.
Tai apima CI / CD platformas, pastatymo aplinkas ir testavimo įrankius, be kita ko.
Didėjant programinės įrangos produkto sudėtingumui, šie infrastruktūros iššūkiai tampa vis svarbesni. Tradicinė rankinio infrastruktūros valdymo technika greitai tampa nepakeičiamu sprendimu, atitinkančiu šiandienos „DevOps“ greito programinės įrangos kūrimo ciklų siekius.
Todėl šiandien „Infrastructure as Code“ (IaC) tapo de facto kūrimo sprendimu. Infrastruktūra kaip kodas (IaC) leidžia keisti mastelį ir stebėti infrastruktūros pokyčius, kai jie atsiranda.
Šioje dalyje atidžiau pažvelgsime į infrastruktūrą kaip kodą, įskaitant jos naudą, kodėl ji gyvybiškai svarbi ir kt. Taigi, pradėkime.
Kas yra Infrastruktūra kaip kodas?
Infrastruktūra kaip kodas – tai aplinkos suteikimo ir konfigūravimo procesas naudojant kodą, o ne rankiniu būdu konfigūruojant atitinkamus įrenginius ir sistemas. Apibrėžę kodo parametrus, kūrėjai paleidžia scenarijus, o IaC platforma automatiškai generuoja debesų infrastruktūrą.
Tokios automatizuotos IT konfigūracijos leidžia komandoms greitai sukurti reikiamus debesies nustatymus, kad galėtų išbandyti ir paleisti savo produktą. Infrastruktūra kaip kodas leidžia kūrėjams sukurti bet kokį infrastruktūros komponentą, kurį jie nori, pvz., tinklus, apkrovos balansuotojai, duomenų bazės, virtualios mašinos ir ryšio tipai.
Žodžiu, tai yra infrastruktūros tiekimo ir valdymo procesas, nurodytas naudojant kodą, o ne ranka. IaC taip pat yra svarbi „DevOps“ technika, reikalinga greitam programinės įrangos pristatymo gyvavimo ciklui.
Tai leidžia „DevOps“ komandoms greitai sukurti ir versijuoti infrastruktūrą tokiu pat būdu, kaip versijos šaltinio kodas, taip pat sekti šias versijas, kad būtų sumažintas IT aplinkų nenuoseklumas, dėl kurio gali kilti didelių problemų diegiant.
Deklaratyvus ir imperatyvus požiūris į IaC
IaC galima žiūrėti dviem būdais: deklaratyviuoju arba imperatyviuoju.
IaC įrankis nustatys sistemą už jus, jei naudosite deklaratyvų metodą, apibūdinantį numatomą sistemos būseną, įskaitant jums reikalingus išteklius ir bet kokias jų savybes.
Deklaratyvus metodas taip pat stebi esamą sistemos objektų būseną, todėl lengviau valdyti infrastruktūros prastovą. Kita vertus, būtinas metodas apibūdina konkrečias instrukcijas, kurios turi būti vykdomos tinkama tvarka, kad būtų sukurta numatyta konfigūracija.
Daugelis IaC technologijų naudoja deklaratyvų požiūrį į infrastruktūros teikimą ir tai padarys automatiškai. Deklaratyvus IaC įrankis pritaikys norimos būsenos pakeitimus, jei juos atliksite. Turėsite sužinoti, kaip pritaikyti tuos koregavimus, jei naudojate esminį įrankį. IaC įrankiai dažnai gali veikti abiem režimais, nors jie teikia pirmenybę vienam prieš kitą.
Kaip veikia infrastruktūra kaip kodas?
Norint visiškai įdiegti infrastruktūrą kaip kodą, turi būti taikomi keli reikalavimai.
Debesų prieglobos kaip paslaugos platforma (IaaS)
Pirmas ir svarbiausias poreikis yra nuotolinės prieigos priegloba. Konfigūracijos valdymo įrankis turi prisijungti prie nuotolinio pagrindinio kompiuterio ir ten atlikti pakeitimus. Jūsų komanda turi garantuoti, kad konfigūracijos valdymo įrankis turi prieigą, jei nutolusi infrastruktūra yra valdoma savarankiškai.
API debesies prieglobos platformoje, kurioje įgalinta IaaS, leidžia klientams pagal poreikį kurti, pašalinti ir keisti infrastruktūros išteklius. Konfigūracijos valdymo sistemos gali naudoti šias API, kad dar labiau automatizuotų šią veiklą. „Digital Ocean“, „Amazon AWS“ ir „Microsoft Azure“ yra trys pagrindinės „IaaS“ sistemos.
Konfigūracijos valdymo platforma
Įrankių rinkinys, jungiantis prie IaaS API ir automatizuojantis įprastas operacijas, yra kita būtina sąlyga norint užbaigti IaC. Grupė žmonių gali dirbti kartu, kad sukurtų scenarijų ir įrankių rinkinį. Tačiau tam reikės daug pastangų, nuolatinės priežiūros ir minimalios investicijų grąžos. „Terraform“, „Ansible“, „Salt Stack“ ir „Chef“ yra tik keletas atvirojo kodo konfigūracijos valdymo įrankių, kurie sprendžia šį iššūkį.
Versijos valdymo sistema
Konfigūracijos valdymo platforma naudoja tekstinius failus, parašytus žymėjimo kalba, pvz., YAML, kad pateiktų užduotis ir sekas, kurias platforma turi vykdyti. Šie tekstiniai failai gali būti traktuojami kaip programos kodas ir saugomi versijų valdymo saugykloje. Ištraukimo užklausos ir kodo peržiūros leidžiamos saugykloje, kuri veikia kaip vienas tiesos taškas. Versijų valdymo sistema Git yra pati populiariausia.
Turėdami šias būtinas sąlygas, apsvarstykite tokį scenarijų: kūrėjas nori į sistemą įtraukti naują taikomosios programos paslaugą. Šis pavyzdys iliustruoja IaC procesą.
- Savo pageidaujamoje konfigūracijos valdymo platformoje „Terraform“ kūrėjas modifikuoja YAML konfigūracijos tekstinį failą. Pakeitimuose nurodoma, kad reikalingas naujas prieglobos serveris.
- „Git“ saugykloje kūrėjas atlieka funkcijų šakos pakeitimus. Kūrėjas sukuria ištraukimo užklausą, nes projekto „Git“ saugykla yra „Bitbucket“. Kitas komandos narys peržiūri ištraukimo užklausą ir pastebi naujus infrastruktūros patobulinimus. Ištraukimo užklausą patvirtina komandos narys, o kūrėjas integruoja pakeitimą į pagrindinę saugyklos šaką.
- Šiame etape reikalinga konfigūracijos platforma, kad būtų galima atnaujinti. Kūrėjas gali rankiniu būdu inicijuoti atnaujinimą. Kadangi komanda naudoja „Bitbucket“, jie turi prieigą prie „Bitbucket“ vamzdynų ir gali juos panaudoti šiai procedūrai automatizuoti.
- Terraform prisijungia prie komandos IaaS po vykdymo. Terraform naudoja IaaS API, kad paleistų komandų seką, atnaujinančią IaaS iki numatomos infrastruktūros konfigūracijos.
IaC privalumai
IaC padeda organizacijoms valdyti savo IT infrastruktūros poreikius įvairiais būdais, naudojant automatizuotas procedūras. Kai kurie IaC diegimo pranašumai yra šie:
- Nuoseklumas: IaC gali padidinti nuoseklumą ir sumažinti klaidų, kurios dažnai pasitaiko atliekant rankinius nustatymus. Tai taip pat apsaugo nuo konfigūracijos nukrypimo, kuris gali atsirasti rankinio veikimo metu. IaC leidžia išvengti nedokumentuotų, ad hoc konfigūracijos pakeitimų, kodifikuojant ir dokumentuojant konfigūracijos standartus.
- Efektyvumas: kodifikavus infrastruktūrą sukuriamas parengimo šablonas, palengvinantis sistemos konfigūravimą, priežiūrą ir administravimą. Tai sukuria lanksčią, pakartojamą ir keičiamo dydžio infrastruktūrą. Dėl to „DevOps“ gali pagreitinti kiekvieną programinės įrangos kūrimo etapą, todėl kasdien skelbiama daugiau programų.
- Sumažėjusi kaina: IaC leidžia virtualias mašinas valdyti programiškai, todėl nebereikia rankinio aparatinės įrangos konfigūracijos ir naujinimų. Naudodamas tą patį kodo fragmentą, vienas operatorius gali įdiegti ir valdyti vieną įrenginį arba 1000 vienetų. Dėl to reikia mažiau darbuotojų ir nebereikia naujos įrangos, todėl sutaupoma daug išlaidų.
- Greitis: IaC sumažina laiką, per kurį kūrėjai aprūpina savo infrastruktūrą, paversdami ją paprastu scenarijumi. Dėl to infrastruktūros nebeatidėlioja taikomųjų programų diegimo, o nauja programinė įranga gali būti pristatyta žymiai greičiau.
- Sumažinkite riziką: kaip skatina IaC versijos kontrolė, jūsų konfigūracijos failus, kaip ir bet kurį kitą programinės įrangos šaltinio kodo failą, galima atsekti. Dėl to rizika sumažėja.
Kokią problemą išsprendžia IaC?
Infrastruktūra kaip kodas buvo sukurta siekiant išspręsti išleidimo dujotiekio aplinkos dreifo problemą. Be IaC komandos yra atsakingos už kiekvienos diegimo aplinkos nustatymų palaikymą. Kiekviena aplinka išsivysto į snaigę, unikalią kompoziciją, kurios negalima pakartoti automatiškai.
Diegimo metu problemų kyla dėl aplinkos nenuoseklumo. Snaigėms reikalingos rankinės operacijos, kurias sunku valdyti ir kurios prisideda prie klaidų administruojant ir prižiūrint infrastruktūrą.
Infrastruktūra kaip kodas laikosi idempotencijos idėjos.
Idempotencija reiškia faktą, kad diegimo komanda visada konfigūruoja tikslinę aplinką vienodai, neatsižvelgiant į aplinkos pradinę būseną. Idempotiškumas pasiekiamas automatiškai nustatant esamą tikslą arba atmetus esamą tikslą ir pradedant iš naujo.
Dėl to, naudodamos IaC, komandos modifikuoja aplinkos aprašymą ir konfigūracijos modelio versiją, kuri dažnai rašoma gerai dokumentuotais kodo formatais, tokiais kaip JSON. Modelis paleidžiamas išleidimo konvejeryje, kad būtų galima nustatyti tikslines aplinkas. Jei reikia atlikti pakeitimus, komanda redaguoja šaltinį, o ne tikslą.
Kuo IaC svarbus „DevOps“?
Diegiant DevOps ir nuolatinio integravimo/nepertraukiamo pristatymo (CI/CD) metodikas būtina naudoti IaC. Tai atleidžia kūrėjus nuo daugumos aprūpinimo įsipareigojimų, leidžiant jiems tiesiog paleisti scenarijų, kad jų infrastruktūra būtų sukurta ir paleista.
Dėl to programų diegimas nesustoja, kol kuriama infrastruktūra, o sistemos administratoriams neapkraunamos daug laiko reikalaujančios rankinės užduotys. Nuo integravimo ir testavimo iki pristatymo ir diegimo, CI/CD priklauso nuo nuolatinio automatizavimo ir nuolatinio stebėjimo per visą programos gyvavimo ciklą. Kad automatika veiktų, reikalinga pastovi aplinka.
Kai kūrimo komanda pateikia programas arba konfigūruoja aplinkas vienu būdu, o operacijų komanda diegia ir konfigūruoja aplinką kitu būdu, automatizuoti programų diegimą neįmanoma.
DevOps metodika suderina kūrimo ir operacijų komandas, todėl mažiau klaidų, neautomatinio diegimo ir neatitikimų. Kadangi tiek kūrimo, tiek operacijų komandos gali naudoti tą patį programos diegimo aprašymą, IaC padeda sinchronizuoti kūrimą ir operacijas, įgalindamas DevOps metodą.
Kiekviena aplinka, įskaitant jūsų gamybos aplinką, turi atitikti tą patį diegimo metodą. Kiekvieną kartą, kai naudojamas IaC, sukuriama identiška aplinka.
Išvada
„DevOps“ kaip kodas labai priklauso nuo infrastruktūros. Infrastruktūra kaip kodas yra natūralus kitas žingsnis, kad jūsų veikla būtų paruošta ateičiai pasaulyje, kuriame trikdančios technologijos nuolat keičia IT sektorių.
Tai leidžia išnaudoti visą potencialą Debesis kompiuterija, sumažina klaidų, susijusių su rankiniu IT infrastruktūros valdymu, skaičių ir pagerina programinės įrangos kūrimo greitį. Visa tai daroma mažinant veiklos sąnaudas.
Palikti atsakymą