Blågrønn utplassering
Hva er blågrønn distribusjon?
Blågrønn distribusjon er en programvareutviklingsteknikk som benytter to produksjonsmiljøer (et "blått miljø" og et "grønt miljø") for å gjøre distribusjonsprosessen tryggere. Det er en relativt kompleks distribusjonsstrategi, men den minimerer effektivt nedetiden når du oppdaterer applikasjonen i produksjon. Den er også svært nyttig for produkteksperimenter
De to produksjonsmiljøene holdes så identiske som mulig. Den nylig distribuerte koden skyves til det inaktive miljøet. Når de nye endringene er testet i produksjon, bytter en ruter til å peke mot miljøet der de nye endringene er live, noe som gir en smidig cut-over.
Med en blågrønn distribusjonsstrategi kan du oppdatere applikasjonen i produksjon med minimal nedetid. Den fungerer ved at du distribuerer to identiske kopier av applikasjonen din, en som kalles "blå" og en som kalles "grønn". Den blå kopien er den nåværende produksjonsversjonen av applikasjonen, og den grønne er den nye versjonen du ønsker å distribuere. Du tildeler noen av serverne dine til å være vert for en ny versjon av applikasjonen, og de resterende serverne til å være vert for den forrige versjonen.
Når den grønne kopien er distribuert og testet, kan du gradvis flytte trafikken fra den blå til den grønne. Begynn gradvis, for eksempel ved å dirigere 20 % av trafikken til den grønne kopien, og øk deretter prosentandelen over tid. På den måten kan du overvåke om det oppstår problemer før du bytter over.
Hvis du støter på et problem, kan du raskt rulle tilbake til den blå kopien ved å dirigere all trafikk tilbake til den. Dette er grunnen til at blågrønn distribusjon omtales som en distribusjonsstrategi med "null nedetid".
Med blågrønn distribusjon får du
- Ingen nedetid: Overgangen fra blå til grønn skjer umiddelbart. Kundene opplever ingen nedetid i distribusjonsfasen, siden begge miljøene er aktive og identiske.
- Mulighet for tilbakestilling: Hvis det oppstår problemer, kan du enkelt bytte tilbake til det blå miljøet.
- Risikoreduksjon: Ved å ha et fullt testet miljø (grønt) før man dirigerer live-trafikk til det, reduseres risikoen for å distribuere feilaktige eller buggy oppdateringer direkte til live-systemet (blått) betydelig.
I bunn og grunn reduserer blå-grønn distribusjon nedetid og risiko forbundet med å distribuere nye endringer til et live-system.
Bilde: Optimizely
Hvordan bruker man blågrønn distribusjon?
Blågrønn distribusjon er en kompleks distribusjonsstrategi. Ha en veldefinert plan, siden dette kan være dyrere enn andre distribusjonsstrategier, som for eksempel A/B-testing.
- Bruk skalerbar infrastruktur. Det vil hjelpe deg med å redusere de totale kostnadene.
- Øv deg på kaosutvikling i et grønt miljø. Det gjør at du kan teste påliteligheten til applikasjonen din uten å påvirke sluttbrukerne.
- Administrer databasetilstanden nøye. Det er en av de største utfordringene ved blågrønn distribusjon.
- Bytt lastbalanserere, ikke DNS. Det gir deg mer kontroll over trafikkrutingsprosessen.
Stadier i en blågrønn distribusjonsmodell
Her er de ni trinnene i en blågrønn distribusjonsmodell:
Bilde: Optimizely
- Opprettmiljøer
Opprett identiske blå og grønne miljøer. - Distribuere oppdateringer tildet grønne
Implementere endringer i det grønne miljøet. - Testing og validering
Gjennomfør omfattende tester i det grønne miljøet. - Verifisering og kvalitetskontroller
Verifiser oppdateringene med tanke på ytelse og kompatibilitet. - Switchover
Omdirigere live trafikk fra blått til grønt miljø raskt. - Overvåking(etter utrulling)
Overvåk det grønne miljøet kontinuerlig for å se etter problemer eller avvik. - Tilbakeføring(om nødvendig)
Gå raskt tilbake til det stabile blå miljøet hvis det oppstår problemer. - Forfrem grønt til blått
Når det grønne miljøet er stabilt, gjør du det til det nye live-produksjonsmiljøet (blått). - Ryddopp og forbered neste syklus
Tilbakestill og forbered et nytt grønt miljø for fremtidige oppdateringer.
Denne strømlinjeformede prosessen sikrer en sømløs overgang mellom miljøene, noe som minimerer nedetid og risiko i forbindelse med oppdateringer eller endringer i live-systemet.
Bruksområder for blågrønn distribusjon
Tilbakeføringer
En av de største fordelene med blågrønne distribusjoner er katastrofegjenoppretting. Fordi det finnes to identiske produksjonsmiljøer, kan en ruter bare bytte tilbake til det andre miljøet (den grønne versjonen), som har den gamle versjonen av koden, uten nedetid, hvis det rulles ut nye endringer i det ene miljøet (for eksempel den blå versjonen) og det oppdages problemer.
Kontinuerlig integrasjon/kontinuerlig levering (CI/CD-pipeline)
Et av målene med kontinuerlig integra sjon (en DevOps-teknikk) er å få programvaren i drift så snart som mulig og få fart på utviklingsprosessen gjennom automatiserte tester og hyppig kodeintegrasjon. Blågrønn distribusjon er en distribusjonsstrategi som kan bidra til å nå dette målet ved å gjøre det mulig å sende mer kode til produksjon og samtidig redusere risikoen ved nye utgivelser.
Test i produksjon
Det er ofte små kompatibilitetsforskjeller mellom staging-miljøet og produksjonsmiljøet, uansett hvor mye man anstrenger seg for å gjøre dem identiske. For DevOps-team kan dette føre til avvik og feil som ikke kan oppdages før koden er satt i produksjon. Blågrønn distribusjon gjør det mulig å teste i produksjon ved å pushe ny kode til det faktiske produksjonsmiljøet og se hvordan den fungerer, før den overføres til produksjonstrafikken og de faktiske brukerne.
Kanarifugl-distribusjon
En kanarifuglutgivelse er når nye endringer lanseres til et lite segment av brukerbasen, i stedet for å rulles ut til alle. På samme måte som en kanarifugl i en kullgruve kan denne lille, kontrollerte testen brukes til å finne ut om det er noen fatale feil i den nye versjonen av koden din. Blågrønn distribusjon kan brukes til slike kanarifugl-tester ved at ruteren rett og slett dirigerer en prosentandel av trafikken til en ny versjon av koden for å se hvordan den fungerer med live trafikk, før du ruller ut endringen til 100 % av brukerne.
A/B-testing
Et annet potensielt bruksområde for blågrønne distribusjoner er A/B-testing. I dette tilfellet laster du inn den nye versjonen av koden i det blå miljøet og dirigerer 50 % av brukertrafikken til den blå versjonen sammenlignet med den opprinnelige grønne versjonen. Deretter kan du overvåke hvordan de to miljøene presterer i forhold til nøkkeltallene dine, og bruke statistisk analyse til å fastslå den nøyaktige effekten av den nye applikasjonen.
Lastbalansering
Et annet potensielt bruksområde for blågrønn distribusjon er lastbalansering. Hvis den blågrønne distribusjonen er satt opp slik at de to produksjonsmiljøene ligger på separate servere (i stedet for på en virtuell maskin), kan en ruter enkelt balansere trafikken mellom den blå og den grønne versjonen av produksjonsmiljøet, siden de er funksjonelt identiske.
Hva er fordelene med blå-grønn distribusjon?
Her er noen av de viktigste fordelene med denne distribusjonsmetoden:
- Null nedetid: Du kan oppdatere applikasjonen i produksjon uten nedetid med to identiske kopier i drift. Du kan bytte trafikk fra den ene til den andre.
- Rollback: Hvis du støter på utfordringer med den nye versjonen av applikasjonen, kan du enkelt rulle tilbake til den forrige versjonen.
- Redusert risiko: Du kan teste den nye versjonen av applikasjonen i det grønne miljøet før du distribuerer den til produksjon.
- Kontrollert distribusjon: Få kontroll over distribusjonsprosessen. Bestem hvor mye trafikk som skal rutes til det grønne miljøet, og se etter eventuelle problemer før du bytter.
- Skalerbarhet: Blågrønn distribusjon kan enkelt skaleres for å håndtere mer trafikk ved å legge til flere servere i det grønne miljøet.
Eksempel på blågrønn distribusjon
La oss si at utviklingsteamet ditt jobber med en webapp og ønsker å lansere en ny funksjon, men vil eliminere nedetid og ha en smidig overgang til den nye koden. I tillegg til staging-miljøet setter du opp to identiske produksjonsmiljøer (en "blå versjon" og en "grønn versjon") med en ruter som dirigerer trafikken til den grønne versjonen.
Deretter kan du pushe de nye endringene til den blå versjonen av produksjonsmiljøet, og se hvordan den fungerer i en faktisk produksjonssetting. Det kan vise seg at det er feil som bare oppstår i produksjonsmiljøet, og i så fall kan du enkelt gå tilbake til utvikling uten at det påvirker brukerne.
Når du er trygg på ytelsen til den nye versjonen av applikasjonen, kan du begynne å sende en prosentandel av brukertrafikken til det blå miljøet for å kjøre en test på faktiske brukere. Hvis det ikke oppdages noen problemer, kan du dirigere 100 % av trafikken til det nye miljøet, noe som fører til en problemfri lansering.
Hvis det oppdages problemer etter at overgangen er gjennomført, kan du igjen enkelt rute trafikken tilbake til det grønne miljøet, som har den forrige versjonen av koden, slik at du enkelt kan utføre en tilbakeføring.
Når du er sikker på at det ikke er noen problemer med den nye koden, kan du klone det blå miljøet til det grønne, slik at du igjen har to identiske produksjonsmiljøer. Deretter kan du fortsette utviklingsløpet, eller bruke den andre serveren som lastutjevner ved behov hvis du ser en økning i bruken.
Hva er ulempene med blågrønn distribusjon?
Her er noen av de viktigste ulempene:
- Mer ressurser: Det krever at du vedlikeholder to identiske miljøer, noe som kan være dyrere enn andre distribusjonsstrategier.
- Mer koordinering: Du må koordinere distribusjonen av den nye versjonen av applikasjonen til det grønne miljøet, samt overgangen fra det blå til det grønne miljøet.
- Tregere å bytte over: Det kan være tregere å bytte over til forskjellige undergrupper enn andre distribusjonsstrategier, for eksempel A/B-testing. Du må tømme alt av trafikk fra det blå miljøet før du bytter til det grønne.
- Ikke for alle applikasjoner: Blågrønn distribusjon er ikke egnet for alle applikasjoner. For eksempel applikasjoner som bruker mange tilstander, slik som databaser.
- Granularitet på funksjonsnivå: En grønn distribusjonsprosess muliggjør ikke granularitet på funksjonsnivå. Hvis du støter på et problem med en spesifikk funksjon, må du rulle tilbake hele utgivelsen, ikke bare den berørte funksjonen. Hvis du skal distribuere en stor eller kompleks applikasjon, kan det være vanskelig å bruke denne metoden.
Funksjonsflagg vs. blågrønn distribusjon
En alternativ utviklingsmetode til blågrønn distribusjon er bruk av funksjonsflagg eller funksjonskoblinger som rullerende distribusjoner. Med funksjonsflagg pakkes nye funksjoner og ny kode inn i betinget kode som kan slås av eller på eksternt. På denne måten kan utviklere rulle ut nye funksjoner til produksjon, og ha en enkel måte å tilbakestille dem på uten å måtte vedlikeholde to produksjonsmiljøer.
I tillegg til enkel av/på-funksjonalitet kan funksjonsflagg også brukes til målrettede utrullinger, der en funksjon bare aktiveres for et bestemt segment av brukertrafikken. Dette gjør det mulig å bruke funksjoner som kanaridistribusjoner og A/B-testing, igjen uten å måtte vedlikeholde to separate produksjonsmiljøer.
Hvis du er ute etter en enkel arbeidsflyt for å komme i gang med funksjonsflagging, er Optimizely gratis funksjonsflagging fra Optimizely som lar deg raskt og trygt implementere funksjonsflagging og A/B-testing i appen din. Optimizely Rollouts er tilgjengelig for de mest populære språkene og bibliotekene, inkludert JavaScript, Ruby, Node, React og Python.
Kom i gang i dag med gratis funksjonsflagging!