Innholdsfortegnelse[Gjemme seg][Forestilling]
Infrastruktur er en viktig del av programvareutviklingsprosessen siden den er direkte ansvarlig for en programvareapplikasjons jevne drift. Servere, lastbalansere, brannmurer, databaser og kompliserte containerklynger er alle eksempler på infrastruktur.
Fordi infrastrukturvansker gjennomsyrer hele utviklingsprosessen, er de relevante utover produksjonssituasjoner.
De inkluderer blant annet CI/CD-plattformer, iscenesettelsesmiljøer og testverktøy.
Etter hvert som kompleksiteten til programvareproduktet øker, blir disse infrastrukturutfordringene mer kritiske. Den tradisjonelle teknikken for manuelt å administrere infrastruktur blir raskt en uskalerbar løsning for å matche ambisjonene til dagens DevOps-baserte raske programvareutviklingssykluser.
Som et resultat har Infrastructure as Code (IaC) blitt de facto utviklingsløsningen i dag. Infrastruktur som kode (IaC) lar deg skalere og spore infrastrukturendringer etter hvert som de oppstår.
Vi skal se nærmere på Infrastructure as Code i dette stykket, inkludert fordelene, hvorfor det er viktig og mer. Så la oss komme i gang.
Hva er den Infrastruktur som kode?
Infrastruktur som kode er prosessen med å tilby og konfigurere et miljø ved å bruke kode i stedet for manuelt å konfigurere de riktige enhetene og systemene. Utviklere kjører skript etter å ha definert kodeparametere, og IaC-plattformen genererer skyinfrastrukturen automatisk.
Slike automatiserte IT-konfigurasjoner lar team raskt konstruere de nødvendige skyinnstillingene for å teste og kjøre produktet deres. Infrastructure as Code gjør det mulig for utviklere å konstruere hvilken som helst infrastrukturkomponent de ønsker, for eksempel nettverk, lastbalansere, databaser, virtuelle maskiner og tilkoblingstyper.
I lekmannstermer er det prosessen med å levere og administrere infrastruktur spesifisert ved hjelp av kode i stedet for for hånd. IaC er også en viktig DevOps-teknikk som kreves for en livssyklus for hurtig levering av programvare.
Det lar DevOps-team raskt konstruere og versjonere infrastruktur på samme måte som kildekoden er versjonert, samt spore disse versjonene for å minimere inkonsekvens mellom IT-miljøer, noe som kan forårsake store problemer under distribusjon.
Deklarative vs. imperative tilnærminger til IaC
IaC kan tilnærmes på to måter: deklarativ eller imperativ.
Et IaC-verktøy vil sette opp systemet for deg hvis du bruker en deklarativ tilnærming, som beskriver den tiltenkte tilstanden til systemet, inkludert hvilke ressurser du trenger og hvilke egenskaper de bør ha.
En deklarativ tilnærming holder også oversikt over den nåværende tilstanden til systemobjektene dine, noe som gjør det enklere å administrere nedetiden til infrastrukturen din. En imperativ metode, på den annen side, skisserer de spesielle instruksjonene som må utføres i riktig rekkefølge for å lage den tiltenkte konfigurasjonen.
Mange IaC-teknologier bruker en deklarativ tilnærming til klargjøring av infrastruktur og vil gjøre det automatisk. Et deklarativt IaC-verktøy vil bruke modifikasjoner på ønsket tilstand for deg hvis du gjør dem. Du må finne ut hvordan du bruker disse justeringene hvis du bruker et viktig verktøy. IaC-verktøy er ofte i stand til å fungere i begge modusene, selv om de favoriserer den ene fremfor den andre.
Hvordan fungerer Infrastruktur som kode?
For å fullstendig implementere infrastruktur som kode, må noen få krav være på plass.
En plattform for skyhosting som en tjeneste (IaaS)
Det første og viktigste behovet er hosting for ekstern tilgang. Konfigurasjonsadministrasjonsverktøyet må koble til den eksterne verten og gjøre endringer der. Teamet ditt må garantere at konfigurasjonsadministrasjonsverktøyet har tilgang hvis den fjerne infrastrukturen er selvadministrert.
APIer på den IaaS-aktiverte nettskyvertsplattformen gjør det mulig for kunder å bygge, fjerne og endre infrastrukturressurser på forespørsel. Konfigurasjonsadministrasjonssystemer kan bruke disse API-ene til å automatisere disse aktivitetene ytterligere. Digital Ocean, Amazon AWS og Microsoft Azure er tre store IaaS-systemer.
En plattform for konfigurasjonsadministrasjon
Verktøypakken som kobles til IaaS API-ene og automatiserer typiske operasjoner er neste forutsetning for å fullføre IaC. En gruppe mennesker kan arbeide sammen for å produsere en samling av manus og verktøy. Det vil imidlertid kreve en betydelig innsats, kontinuerlig vedlikehold og minimal avkastning på investeringen. Terraform, Ansible, Salt Stack og Chef er bare noen av de åpen kildekode-konfigurasjonsadministrasjonsverktøyene som håndterer denne utfordringen.
Versjonskontrollsystem
En konfigurasjonsadministrasjonsplattform bruker tekstfiler skrevet i et markup-språk som YAML for å gi oppgaver og sekvenser som plattformen kan utføre. Disse tekstfilene kan behandles som applikasjonskode og lagres i et versjonskontrolllager. Pull-forespørsler og kodegjennomganger er tillatt i depotet, som fungerer som et enkelt sannhetspunkt. Versjonskontrollsystemet Git er det mest populære.
Med disse forutsetningene på plass, vurder følgende scenario: en utvikler ønsker å legge til en ny applikasjonstjeneste til et system. Dette eksemplet illustrerer en IaC-prosess.
- I deres foretrukne konfigurasjonsadministrasjonsplattform, Terraform, endrer utvikleren en YAML-konfigurasjonstekstfil. Endringene sier at en ny vertsserver kreves.
- I Git-depotet forplikter utvikleren endringer til en funksjonsgren. Utvikleren oppretter en pull-forespørsel siden prosjektets Git-depot er vert på Bitbucket. Et annet medlem av teamet ser gjennom pull-forespørselen og legger merke til de nye infrastrukturforbedringene. Pullforespørselen godkjennes av et teammedlem, og utvikleren integrerer endringen i depotets hovedgren.
- Konfigurasjonsplattformen kreves på dette trinnet for å utføre en oppdatering. Utvikleren kan starte oppdateringen manuelt. Fordi teamet bruker Bitbucket, har de tilgang til Bitbucket Pipelines og kan bruke en til å automatisere denne prosedyren.
- Terraform kobles til teamets IaaS etter utførelse. Terraform bruker IaaS API til å kjøre en sekvens med kommandoer som oppdaterer IaaS til den forventede infrastrukturkonfigurasjonen.
IaC-fordeler
IaC bistår organisasjoner med å administrere IT-infrastrukturkravene deres på en rekke måter gjennom automatiserte prosedyrer. Noen av fordelene med å installere IaC er som følger:
- Konsistens: IaC kan øke konsistensen og redusere feil som ofte oppstår under manuelle innstillinger. Det forhindrer også konfigurasjonsdrift som kan oppstå under en manuell operasjon. IaC lar deg forhindre udokumenterte ad-hoc-konfigurasjonsendringer ved å kodifisere og dokumentere konfigurasjonsstandardene dine.
- Effektivitet: Kodifisering av infrastrukturen skaper en klargjøringsmal som gjør systemkonfigurasjon, vedlikehold og administrasjon enklere. Den bygger en fleksibel, repeterbar og skalerbar infrastruktur. Som et resultat kan DevOps øke hastigheten på hvert trinn i programvareutviklingen, noe som resulterer i at flere apper publiseres på daglig basis.
- Reduserte kostnader: IaC gjør det mulig å administrere virtuelle maskiner programmatisk, noe som fjerner behovet for manuell maskinvarekonfigurasjon og oppgraderinger. Ved å bruke samme kodebit kan én operatør installere og administrere én maskin eller 1000 enheter. Som et resultat kreves det færre ansatte og nytt utstyr er ikke lenger nødvendig, noe som resulterer i betydelige kostnadsbesparelser.
- Hastighet: IaC reduserer tiden det tar for utviklere å levere sin infrastruktur ved å gjøre den om til et enkelt skript. Som et resultat blir ikke applikasjonsdistribusjoner lenger forsinket av infrastruktur, og ny programvare kan leveres betydelig raskere.
- Reduser risiko: Som IaC oppfordrer til versjonskontroll, kan konfigurasjonsfilene dine, som enhver annen programvarekildekodefil, spores. Som en konsekvens reduseres risikoen.
Hvilket problem løser IaC?
Infrastructure as Code ble opprettet for å løse problemet med utslippsrørledningsmiljødrift. Uten IaC er teamene ansvarlige for å vedlikeholde innstillingene for hvert distribusjonsmiljø. Hvert miljø utvikler seg til et snøfnugg, et unikt arrangement som ikke kan replikeres automatisk.
Under distribusjoner forårsaker inkonsekvens mellom miljøer problemer. Snøfnugg trenger manuelle operasjoner som er vanskelige å håndtere og bidrar til feil i infrastrukturadministrasjon og vedlikehold.
Infrastructure as Code følger ideen om idempotens.
Idempotens refererer til det faktum at en distribusjonskommando alltid konfigurerer målmiljøet på samme måte, uavhengig av miljøets begynnelsestilstand. Idempotens oppnås ved enten å automatisk sette et eksisterende mål eller avvise det eksisterende målet og starte på nytt.
Som et resultat, ved hjelp av IaC, endrer team miljøbeskrivelsen og versjonen av konfigurasjonsmodellen, som ofte er skrevet i godt dokumenterte kodeformater som JSON. Modellen kjøres i utgivelsesrørledningen for å sette opp målmiljøer. Teamet redigerer kilden, ikke målet, hvis de trenger å gjøre endringer.
Hvordan betyr IaC i DevOps?
Implementering av DevOps og metoder for kontinuerlig integrasjon/kontinuerlig levering (CI/CD) krever bruk av IaC. Det fritar utviklere for flertallet av klargjøringsansvaret, og lar dem bare kjøre et skript for å få infrastrukturen i gang.
Som et resultat blir ikke applikasjonsdistribusjoner stoppet mens infrastruktur bygges, og systemadministratorer belastes ikke med tidkrevende manuelle oppgaver. Fra integrasjon og testing gjennom levering og distribusjon, er CI/CD avhengig av konstant automatisering og kontinuerlig overvåking gjennom hele applikasjonens livssyklus. Et konstant miljø kreves for at automatisering skal fungere.
Når utviklingsteamet leverer apper eller konfigurerer miljøer én vei og driftsteamet installerer og konfigurerer miljøet på en annen måte, er det ikke mulig å automatisere applikasjonsdistribusjoner.
En DevOps-metodikk samkjører utviklings- og driftsteam, noe som resulterer i færre feil, manuelle distribusjoner og inkonsekvenser. Fordi både utviklings- og driftsteam kan bruke den samme beskrivelsen av applikasjonsdistribusjonen, hjelper IaC deg med å synkronisere utvikling og drift, noe som muliggjør en DevOps-tilnærming.
Alle miljøer, inkludert produksjonsmiljøet ditt, bør følge samme distribusjonsmetode. Hver gang IaC brukes, skapes et identisk miljø.
konklusjonen
DevOps er sterkt avhengig av infrastruktur som kode. Infrastructure as Code er det naturlige neste trinnet for å gjøre driften din fremtidsklar i en verden der forstyrrende teknologier kontinuerlig transformerer IT-sektoren.
Det lar deg realisere det fulle potensialet til cloud computing, reduserer feil knyttet til manuell IT-infrastrukturadministrasjon, og forbedrer hastigheten som programvare utvikles med. Alt dette oppnås samtidig som driftsutgiftene reduseres.
Legg igjen en kommentar