Sisällysluettelo[Piilottaa][Näytä]
Infrastruktuuri on tärkeä osa ohjelmistokehitysprosessia, koska se on suoraan vastuussa ohjelmistosovelluksen sujuvasta toiminnasta. Palvelimet, kuormantasaajat, palomuurit, tietokannat ja monimutkaiset konttiklusterit ovat kaikki esimerkkejä infrastruktuurista.
Koska infrastruktuurivaikeudet tunkeutuvat koko kehitysprosessiin, ne ovat merkityksellisiä tuotantotilanteiden ulkopuolella.
Ne sisältävät muun muassa CI/CD-alustoja, lavastusympäristöjä ja testaustyökaluja.
Ohjelmistotuotteen monimutkaisuuden kasvaessa näistä infrastruktuurin haasteista tulee entistä kriittisempiä. Perinteisestä manuaalisen infrastruktuurin hallinnan tekniikasta tulee nopeasti skaalautumaton ratkaisu vastaamaan nykypäivän DevOps-pohjaisten nopeiden ohjelmistokehityssyklien toiveita.
Tämän seurauksena Infrastructure as Code (IaC) on tullut de facto kehitysratkaisu tänään. Infrastruktuuri koodina (IaC) antaa sinun skaalata ja seurata infrastruktuurin muutoksia niiden tapahtuessa.
Tarkastellaan tässä kappaleessa tarkemmin Infrastruktuuria koodina, mukaan lukien sen edut, miksi se on elintärkeää ja paljon muuta. Joten aloitetaan.
Mikä on Infrastruktuuri koodina?
Infrastruktuuri koodina on prosessi, jossa ympäristö tarjotaan ja määritetään koodin avulla sen sijaan, että määritetään manuaalisesti asianmukaiset laitteet ja järjestelmät. Kehittäjät suorittavat komentosarjoja koodiparametrien määrittämisen jälkeen, ja IaC-alusta luo automaattisesti pilviinfrastruktuurin.
Tällaisten automatisoitujen IT-kokoonpanojen avulla tiimit voivat nopeasti rakentaa tarvittavat pilviasetukset tuotteensa testaamista ja käyttöä varten. Infrastruktuuri koodina antaa kehittäjille mahdollisuuden rakentaa mitä tahansa infrastruktuurikomponentteja, kuten verkkoja, kuorman tasapainottajat, tietokannat, virtuaalikoneet ja yhteystyypit.
Maallikon termein se on prosessi, jossa infrastruktuurin toimittaminen ja hallinta on määritelty koodilla eikä käsin. IaC on myös tärkeä DevOps-tekniikka, jota tarvitaan nopeatempoisessa ohjelmistotoimituksen elinkaaressa.
Sen avulla DevOps-tiimit voivat nopeasti rakentaa ja versioida infrastruktuuria samalla tavalla kuin lähdekoodia versioitetaan, sekä seurata näitä versioita IT-ympäristöjen välisten epäjohdonmukaisuuksien minimoimiseksi, mikä voi aiheuttaa suuria ongelmia käyttöönoton aikana.
IaC:n deklaratiiviset vs. pakottavat lähestymistavat
IaC:tä voidaan lähestyä kahdella tavalla: deklaratiivisella tai pakottavalla tavalla.
IaC-työkalu määrittää järjestelmän puolestasi, jos käytät deklaratiivista lähestymistapaa, joka kuvaa järjestelmän aiottua tilaa, mukaan lukien tarvitsemasi resurssit ja mitä ominaisuuksia niillä pitäisi olla.
Deklaratiivinen lähestymistapa pitää myös kirjaa järjestelmäobjektien nykyisestä tilasta, mikä helpottaa infrastruktuurin seisokkien hallintaa. Pakollinen menetelmä toisaalta hahmottelee tietyt ohjeet, jotka on suoritettava oikeassa järjestyksessä aiotun kokoonpanon luomiseksi.
Monet IaC-tekniikat käyttävät deklaratiivista lähestymistapaa infrastruktuurin luomiseen ja tekevät sen automaattisesti. Ilmoittava IaC-työkalu tekee muutoksia haluttuun tilaan puolestasi, jos teet ne. Sinun on selvitettävä, kuinka nämä säädöt otetaan käyttöön, jos käytät olennaista työkalua. IaC-työkalut pystyvät usein toimimaan molemmissa tiloissa, vaikka ne suosivatkin toisiaan.
Miten infrastruktuuri koodina toimii?
Jotta infrastruktuuri voidaan ottaa kokonaan käyttöön koodina, on oltava olemassa muutamia vaatimuksia.
Alusta pilvipalvelulle palveluna (IaaS)
Ensimmäinen ja tärkein tarve on etäkäyttöisännöinti. Kokoonpanonhallintatyökalun on muodostettava yhteys etäisäntään ja tehtävä siihen muutoksia. Tiimisi on taattava, että kokoonpanonhallintatyökalulla on pääsy, jos etäinen infrastruktuuri on itsehallittu.
IaaS-yhteensopivan pilvipalvelualustan sovellusliittymien avulla asiakkaat voivat rakentaa, poistaa ja muuttaa infrastruktuuriresursseja pyynnöstä. Konfiguroinnin hallintajärjestelmät voivat käyttää näitä API:ita automatisoidakseen näitä toimintoja entisestään. Digital Ocean, Amazon AWS ja Microsoft Azure ovat kolme suurta IaaS-järjestelmää.
Alusta kokoonpanon hallintaan
IaaS-sovellusliittymiin yhdistettävä ja tyypilliset toiminnot automatisoiva työkalupaketti on seuraava edellytys IaC:n suorittamiselle. Ryhmä ihmisiä voi työskennellä yhdessä tuottaakseen kokoelman skriptejä ja työkaluja. Se vaatisi kuitenkin paljon vaivaa, jatkuvaa ylläpitoa ja minimaalista sijoitetun pääoman tuottoa. Terraform, Ansible, Salt Stack ja Chef ovat vain muutamia avoimen lähdekoodin kokoonpanonhallintatyökaluja, jotka käsittelevät tätä haastetta.
Versionhallintajärjestelmä
Kokoonpanonhallintaympäristö käyttää tekstitiedostoja, jotka on kirjoitettu merkintäkielellä, kuten YAML, tarjotakseen tehtäviä ja sarjoja alustalle suoritettaviksi. Näitä tekstitiedostoja voidaan käsitellä sovelluskoodina ja tallentaa versionhallintavarastoon. Vetopyynnöt ja kooditarkistukset ovat sallittuja arkistossa, mikä toimii yhtenä totuuspisteenä. Versionhallintajärjestelmä Git on suosituin.
Kun nämä edellytykset täyttyvät, harkitse seuraavaa tilannetta: kehittäjä haluaa lisätä järjestelmään uuden sovelluspalvelun. Tämä esimerkki havainnollistaa IaC-prosessia.
- Kehittäjä muokkaa YAML-määritystekstitiedostoa ensisijaisessa kokoonpanonhallinta-alustassaan, Terraformissa. Muutokset edellyttävät, että uusi hosting-palvelin tarvitaan.
- Git-arkistossa kehittäjä tekee muutokset ominaisuushaaraan. Kehittäjä luo vetopyynnön, koska projektin Git-tietovarastoa isännöi Bitbucket. Toinen tiimin jäsen käy läpi vetopyynnön ja huomaa uudet infrastruktuurin parannukset. Noutopyynnön hyväksyy tiimin jäsen, ja kehittäjä integroi muutoksen arkiston päähaaraan.
- Määritysalusta tarvitaan tässä vaiheessa päivityksen suorittamiseksi. Kehittäjä voi käynnistää päivityksen manuaalisesti. Koska tiimi käyttää Bitbucketia, heillä on pääsy Bitbucket Pipelinesiin ja he voivat käyttää yhtä tämän toimenpiteen automatisoimiseen.
- Terraform muodostaa yhteyden joukkueen IaaS:ään suorituksen jälkeen. Terraform käyttää IaaS-sovellusliittymää komentosarjan suorittamiseen, joka päivittää IaaS:n odotettuun infrastruktuurikokoonpanoon.
IaC:n edut
IaC auttaa organisaatioita hallitsemaan IT-infrastruktuurin vaatimuksia monin eri tavoin automatisoitujen menettelyjen avulla. Jotkut IaC:n asennuksen eduista ovat seuraavat:
- Johdonmukaisuus: IaC voi lisätä johdonmukaisuutta ja vähentää virheitä, joita tapahtuu usein manuaalisten asetusten aikana. Se myös estää konfiguraation ajautumisen, joka voi tapahtua manuaalisen käytön aikana. IaC:n avulla voit estää dokumentoimattomat, ad-hoc-konfiguraatiomuutokset koodaamalla ja dokumentoimalla määritysstandardisi.
- Tehokkuus: Infrastruktuurin koodaaminen luo hallintamallin, mikä helpottaa järjestelmän määrittämistä, ylläpitoa ja hallintaa. Se rakentaa joustavan, toistettavan ja skaalautuvan infrastruktuurin. Tämän seurauksena DevOps voi nopeuttaa ohjelmistokehityksen jokaista vaihetta, jolloin sovelluksia julkaistaan päivittäin.
- Pienemmät kustannukset: IaC mahdollistaa virtuaalikoneiden hallinnan ohjelmallisesti, mikä poistaa manuaalisen laitteiston konfiguroinnin ja päivityksen tarpeen. Samaa koodia käyttämällä yksi käyttäjä voi asentaa ja hallita yhtä konetta tai 1000 yksikköä. Tämän seurauksena tarvitaan vähemmän työntekijöitä ja uusia laitteita ei enää tarvita, mikä johtaa huomattaviin kustannussäästöihin.
- Nopeus: IaC vähentää aikaa, joka kehittäjiltä kuluu infrastruktuurinsa toimittamiseen muuttamalla se yksinkertaiseksi komentosarjaksi. Tämän seurauksena sovellusten käyttöönotto ei enää viivästy infrastruktuurin vuoksi, ja uusia ohjelmistoja voidaan toimittaa huomattavasti nopeammin.
- Vähennä riskiä: Kuten IaC kannustaa versionhallinta, määritystiedostosi, kuten kaikki muutkin ohjelmiston lähdekooditiedostot, voidaan jäljittää. Tämän seurauksena riski pienenee.
Minkä ongelman IaC ratkaisee?
Infrastructure as Code luotiin käsittelemään julkaisuputken ympäristön ajautumista. Ilman IaC:tä tiimit ovat vastuussa kunkin käyttöönottoympäristön asetusten ylläpidosta. Jokainen ympäristö kehittyy lumihiutaleeksi, ainutlaatuiseksi järjestelyksi, jota ei voida kopioida automaattisesti.
Käyttöönoton aikana ympäristöjen epäjohdonmukaisuus aiheuttaa ongelmia. Lumihiutaleet tarvitsevat vaikeasti hallittavia manuaalisia toimintoja ja aiheuttavat virheitä infrastruktuurin hallinnassa ja ylläpidossa.
Infrastruktuuri koodina noudattaa idempotenssin ideaa.
Idempotenssi viittaa siihen, että käyttöönottokomento määrittää kohdeympäristön aina samalla tavalla riippumatta ympäristön aloitustilasta. Idempotenssi saavutetaan joko asettamalla olemassa oleva tavoite automaattisesti tai hylkäämällä olemassa oleva tavoite ja aloittamalla alusta.
Tämän seurauksena IaC:tä käyttämällä tiimit muokkaavat ympäristön kuvausta ja konfigurointimallin versiota, joka on usein kirjoitettu hyvin dokumentoiduissa koodimuodoissa, kuten JSON. Mallia ajetaan julkaisuprosessissa kohdeympäristöjen määrittämiseksi. Tiimi muokkaa lähdettä, ei kohdetta, jos he tarvitsevat muutoksia.
Miten IaC:llä on merkitystä DevOpsissa?
DevOps- ja jatkuva integrointi/jatkuva toimitus (CI/CD) -menetelmien käyttöönotto edellyttää IaC:n käyttöä. Se vapauttaa kehittäjät suurimmasta osasta provisiointivastuita, jolloin he voivat vain ajaa komentosarjan saadakseen infrastruktuurinsa käyttöön.
Tämän seurauksena sovellusten käyttöönotot eivät keskeydy infrastruktuurin rakentamisen aikana, eivätkä järjestelmänvalvojat rasita aikaa vievillä manuaalisilla tehtävillä. Integroinnista ja testauksesta toimitukseen ja käyttöönottoon CI/CD luottaa jatkuvaan automaatioon ja jatkuvaan valvontaan sovelluksen koko elinkaaren ajan. Automaation toimiminen edellyttää jatkuvaa ympäristöä.
Kun kehitystiimi toimittaa sovelluksia tai määrittää ympäristöjä yhdellä tavalla ja käyttötiimi asentaa ja määrittää ympäristön eri tavalla, sovellusten käyttöönoton automatisointi ei ole mahdollista.
DevOps-metodologia linjaa kehitys- ja käyttötiimit, mikä vähentää virheitä, manuaalisia käyttöönottoja ja epäjohdonmukaisuuksia. Koska sekä kehitys- että käyttötiimit voivat käyttää samaa kuvausta sovelluksen käyttöönotosta, IaC auttaa sinua synkronoimaan kehitystä ja toimintaa mahdollistaen DevOps-lähestymistavan.
Jokaisen ympäristön, mukaan lukien tuotantoympäristösi, tulee noudattaa samaa käyttöönottomenetelmää. Joka kerta kun IaC:tä käytetään, luodaan identtinen ympäristö.
Yhteenveto
DevOps luottaa suuresti infrastruktuuriin koodina. Infrastructure as Code on luonnollinen seuraava askel toimintojesi tulevaisuuteen maailmassa, jossa häiritsevät teknologiat muuttavat jatkuvasti IT-alaa.
Sen avulla voit toteuttaa koko potentiaalin cloud computing, vähentää manuaaliseen IT-infrastruktuurin hallintaan liittyviä virheitä ja nopeuttaa ohjelmistojen kehitystä. Kaikki tämä saavutetaan samalla, kun toimintakuluja pienennetään.
Jätä vastaus