Indholdsfortegnelse[Skjule][At vise]
Infrastruktur er en vigtig del af softwareudviklingsprocessen, da den er direkte ansvarlig for en softwareapplikations smidige drift. Servere, load balancere, firewalls, databaser og komplicerede containerklynger er alle eksempler på infrastruktur.
Fordi infrastrukturproblemer præger hele udviklingsprocessen, er de relevante ud over produktionssituationer.
De omfatter blandt andet CI/CD-platforme, iscenesættelsesmiljøer og testværktøjer.
Efterhånden som softwareproduktets kompleksitet øges, bliver disse infrastrukturudfordringer mere kritiske. Den traditionelle teknik med manuel styring af infrastruktur bliver hurtigt en uskalerbar løsning, der matcher forventningerne til nutidens DevOps-baserede hurtige softwareudviklingscyklusser.
Som et resultat er Infrastructure as Code (IaC) blevet den de facto udviklingsløsning i dag. Infrastruktur som kode (IaC) giver dig mulighed for at skalere og spore infrastrukturændringer, efterhånden som de opstår.
Vi vil se nærmere på Infrastructure as Code i dette stykke, herunder dens fordele, hvorfor det er vigtigt og mere. Så lad os komme i gang.
Hvad er det Infrastruktur som kode?
Infrastruktur som kode er processen med at levere og konfigurere et miljø ved hjælp af kode i stedet for manuelt at konfigurere de relevante enheder og systemer. Udviklere kører scripts efter at have defineret kodeparametre, og IaC-platformen genererer automatisk cloud-infrastrukturen.
Sådanne automatiserede it-konfigurationer giver teams mulighed for hurtigt at konstruere de nødvendige cloud-indstillinger til at teste og køre deres produkt. Infrastruktur som kode gør det muligt for udviklere at konstruere hvilken som helst infrastrukturkomponent, de ønsker, såsom netværk, belastningsbalancere, databaser, virtuelle maskiner og forbindelsestyper.
I lægmandssprog er det processen med at levere og administrere infrastruktur specificeret ved hjælp af kode i stedet for manuelt. IaC er også en vigtig DevOps-teknik, der kræves for en livscyklus for hurtig softwarelevering.
Det giver DevOps-teams mulighed for hurtigt at konstruere og versionere infrastruktur på samme måde, som kildekoden er versioneret, samt spore disse versioner for at minimere inkonsistens mellem it-miljøer, hvilket kan forårsage store problemer under implementeringen.
Deklarative vs. imperative tilgange til IaC
IaC kan gribes an på to måder: deklarativ eller imperativ.
Et IaC-værktøj vil sætte systemet op for dig, hvis du bruger en deklarativ tilgang, som beskriver systemets tilsigtede tilstand, herunder hvilke ressourcer du har brug for, og hvilke egenskaber de skal have.
En deklarativ tilgang holder også styr på den aktuelle tilstand af dine systemobjekter, hvilket gør det nemmere at styre nedetiden i din infrastruktur. En imperativ metode, på den anden side, skitserer de særlige instruktioner, der skal udføres i den rigtige rækkefølge for at skabe den tilsigtede konfiguration.
Mange IaC-teknologier bruger en deklarativ tilgang til levering af infrastruktur og vil gøre det automatisk. Et deklarativt IaC-værktøj vil anvende ændringer til den ønskede tilstand for dig, hvis du foretager dem. Du bliver nødt til at finde ud af, hvordan du anvender disse justeringer, hvis du bruger et vigtigt værktøj. IaC-værktøjer er ofte i stand til at fungere i begge tilstande, selvom de foretrækker den ene frem for den anden.
Hvordan fungerer Infrastruktur som kode?
For fuldstændigt at implementere infrastruktur som kode, skal nogle få krav være på plads.
En platform til cloud hosting as a service (IaaS)
Det første og vigtigste behov er hosting med fjernadgang. Konfigurationsstyringsværktøjet skal oprette forbindelse til fjernværten og foretage ændringer der. Dit team skal garantere, at konfigurationsstyringsværktøjet har adgang, hvis den fjerne infrastruktur er selvadministreret.
API'er på den IaaS-aktiverede cloud-hostingplatform gør det muligt for kunder at bygge, fjerne og ændre infrastrukturressourcer efter behov. Konfigurationsstyringssystemer kan bruge disse API'er til at automatisere disse aktiviteter endnu mere. Digital Ocean, Amazon AWS og Microsoft Azure er tre store IaaS-systemer.
En platform til konfigurationsstyring
Værktøjspakken, der forbinder til IaaS API'erne og automatiserer typiske operationer, er den næste forudsætning for at færdiggøre IaC. En gruppe mennesker kan arbejde sammen om at producere en samling af scripts og værktøjer. Det ville dog kræve en betydelig indsats, løbende vedligeholdelse og et minimalt investeringsafkast. Terraform, Ansible, Salt Stack og Chef er blot nogle få af de open source-konfigurationsstyringsværktøjer, der håndterer denne udfordring.
Version Control System
En konfigurationsadministrationsplatform bruger tekstfiler skrevet i et markup-sprog såsom YAML til at levere opgaver og sekvenser, som platformen kan udføre. Disse tekstfiler kan behandles som applikationskode og gemmes i et versionskontrollager. Pull-anmodninger og kodegennemgange er tilladt i lageret, som fungerer som et enkelt sandhedspunkt. Versionskontrolsystemet Git er det mest populære.
Med disse forudsætninger på plads, overvej følgende scenario: en udvikler ønsker at tilføje en ny applikationstjeneste til et system. Dette eksempel illustrerer en IaC-proces.
- I deres foretrukne konfigurationsstyringsplatform, Terraform, ændrer udvikleren en YAML-konfigurationstekstfil. Ændringerne angiver, at der kræves en ny hostingserver.
- I Git-lageret forpligter udvikleren ændringer til en funktionsgren. Udvikleren opretter en pull-anmodning, da projektets Git-lager er hostet på Bitbucket. Et andet medlem af teamet ser gennem pull-anmodningen og bemærker de nye infrastrukturforbedringer. Pull-anmodningen godkendes af et teammedlem, og udvikleren integrerer ændringen i depotets hovedgren.
- Konfigurationsplatformen er påkrævet på dette trin for at udføre en opdatering. Udvikleren kan manuelt starte opdateringen. Fordi teamet bruger Bitbucket, har de adgang til Bitbucket Pipelines og kan bruge en til at automatisere denne procedure.
- Terraform opretter forbindelse til teamets IaaS efter eksekvering. Terraform bruger IaaS API til at køre en sekvens af kommandoer, der opdaterer IaaS til den forventede infrastrukturkonfiguration.
IaC-fordele
IaC hjælper organisationer med at håndtere deres IT-infrastrukturkrav på en række forskellige måder gennem automatiserede procedurer. Nogle af fordelene ved at installere IaC er som følger:
- Konsistens: IaC kan øge konsistensen og mindske fejl, der ofte opstår under manuelle indstillinger. Det forhindrer også konfigurationsdrift, der kan opstå under en manuel betjening. IaC lader dig forhindre udokumenterede, ad hoc-konfigurationsændringer ved at kodificere og dokumentere dine konfigurationsstandarder.
- Effektivitet: Kodificering af din infrastruktur skaber en klargøringsskabelon, hvilket gør systemkonfiguration, vedligeholdelse og administration nemmere. Det bygger en fleksibel, repeterbar og skalerbar infrastruktur. Som et resultat kan DevOps fremskynde hvert trin i softwareudviklingen, hvilket resulterer i, at flere apps udgives på daglig basis.
- Reducerede omkostninger: IaC gør det muligt at styre virtuelle maskiner programmatisk, hvilket fjerner behovet for manuel hardwarekonfiguration og opgraderinger. Ved at bruge det samme stykke kode kan én operatør installere og administrere én maskine eller 1000 enheder. Som følge heraf kræves der færre medarbejdere, og nyt udstyr er ikke længere nødvendigt, hvilket resulterer i betydelige omkostningsbesparelser.
- Hastighed: IaC reducerer den tid, det tager for udviklere at levere deres infrastruktur ved at omdanne det til et simpelt script. Som følge heraf bliver applikationsimplementeringer ikke længere forsinket af infrastruktur, og ny software kan leveres betydeligt hurtigere.
- Reducer risiko: Som IaC opfordrer til version kontrol, kan dine konfigurationsfiler, ligesom enhver anden softwarekildekodefil, spores. Som følge heraf reduceres risikoen.
Hvilket problem løser IaC?
Infrastructure as Code blev oprettet for at løse problemet med frigivelsespipeline-miljødrift. Uden IaC er teams ansvarlige for at vedligeholde indstillingerne for hvert implementeringsmiljø. Hvert miljø udvikler sig til et snefnug, et unikt arrangement, der ikke kan kopieres automatisk.
Under implementeringer forårsager uoverensstemmelse mellem miljøer problemer. Snefnug har brug for manuelle operationer, der er svære at administrere og bidrager til fejl i infrastrukturadministration og vedligeholdelse.
Infrastructure as Code følger ideen om idempotens.
Idempotens henviser til det faktum, at en implementeringskommando altid konfigurerer målmiljøet på samme måde, uanset miljøets begyndelsestilstand. Idempotens opnås ved enten automatisk at sætte et eksisterende mål eller afvise det eksisterende mål og starte forfra.
Som et resultat, ved hjælp af IaC, ændrer teams miljøbeskrivelsen og versionen af konfigurationsmodellen, som ofte er skrevet i veldokumenterede kodeformater som JSON. Modellen køres i udgivelsespipelinen for at opsætte målmiljøer. Teamet redigerer kilden, ikke målet, hvis de skal foretage ændringer.
Hvad betyder IaC i DevOps?
Implementering af DevOps og kontinuerlig integration/kontinuerlig levering (CI/CD)-metoder nødvendiggør brugen af IaC. Det fritager udviklere for størstedelen af leveringsansvaret, hvilket giver dem mulighed for blot at køre et script for at få deres infrastruktur op at køre.
Som et resultat går applikationsimplementeringer ikke i stå, mens infrastrukturen bygges, og sysadmins belastes ikke med tidskrævende manuelle opgaver. Fra integration og test til levering og implementering er CI/CD afhængig af konstant automatisering og kontinuerlig overvågning gennem hele applikationens livscyklus. Et konstant miljø er påkrævet, for at automatiseringen kan fungere.
Når udviklingsteamet leverer apps eller konfigurerer miljøer én vej, og driftsteamet installerer og konfigurerer miljøet på en anden måde, er automatisering af applikationsimplementeringer ikke mulig.
En DevOps-metode tilpasser udviklings- og driftsteams, hvilket resulterer i færre fejl, manuelle implementeringer og uoverensstemmelser. Fordi både udviklings- og driftsteams kan bruge den samme beskrivelse af applikationsimplementeringen, hjælper IaC dig med at synkronisere udvikling og drift, hvilket muliggør en DevOps-tilgang.
Alle miljøer, inklusive dit produktionsmiljø, bør følge den samme implementeringsmetode. Hver gang IaC bruges, skabes et identisk miljø.
Konklusion
DevOps er stærkt afhængig af infrastruktur som kode. Infrastructure as Code er det naturlige næste skridt i at gøre din virksomhed fremtidsklar i en verden, hvor disruptive teknologier konstant transformerer it-sektoren.
Det gør dig i stand til at realisere det fulde potentiale af cloud computing, reducerer fejl forbundet med manuel IT-infrastrukturstyring og forbedrer hastigheden, hvormed software udvikles. Alt dette opnås samtidig med, at driftsomkostningerne reduceres.
Giv en kommentar