Utfasen av programvareleveranse har en sentral funksjon i moderne programvareutvikling, spesielt i skybaserte miljøer.
Paradoksalt nok er denne fasen ofte undervurdert. Bedrifter prioriterer ikke alltid ressurser for å etablere rask, pålitelig og automatisert distribusjon.
Jeg observerer hyppig manuelle distribusjonsprosedyrer. I beste fall finnes det detaljerte sjekklister, men i verste fall improviseres distribusjonen i siste liten.
Automatisert distribusjon ses ofte som et langsiktig mål, men veien dit kan være krevende. Likevel er en fullstendig automatisert og pålitelig distribusjonsprosess nøkkelen til betydelige kostnadsbesparelser over tid. Den kan eliminere mye av arbeidet utviklingsteam vanligvis legger ned i hver produksjonsutgivelse.
Strategier som Canary og Blue-Green distribusjon gir disse fordelene i tillegg til økt tilgjengelighet og raske implementerings- og tilbakestillingsprosesser. Dette gjør det mulig for teamet å levere programvare hyppigere og med mindre stress. La oss se nærmere på disse strategiene og hvordan de skiller seg fra hverandre.
Blue-Green Distribusjon: En Oversikt
Kilde: cncf.io
Blue-Green distribusjon reduserer nedetid og risiko ved utrulling av ny programvare ved å etablere to identiske miljøer: et aktivt (blått) og et inaktivt (grønt).
Det aktive miljøet er der den nåværende programvareversjonen kjører og håndterer produksjonstrafikk. Det inaktive miljøet brukes til å distribuere og teste den nye programvareversjonen.
Når den nye versjonen er testet og klar, flyttes trafikken fra det aktive miljøet til det inaktive, som da blir det nye aktive miljøet. Denne prosessen kan gjentas etter behov.
Les også: Blue-Green Distribusjon og dens rolle i DevOps forklart
Nøkkelfunksjoner og Fordeler
Her er noen spesifikke kjennetegn ved Blue-Green distribusjon:
- To identiske miljøer, med samme data og prosesser. Det blå (aktive) miljøet håndterer produksjonstrafikk, mens det grønne (inaktive) miljøet brukes til testing og er synkronisert med det blå.
- En rask trafikkbytte fra det aktive til det inaktive miljøet. Dette eliminerer nedetid, og brukere merker ingen endring.
- Rask tilbakestilling i tilfelle problemer med den nye versjonen, noe som sikrer minimal nedetid og høy tilgjengelighet.
- Automatisert testing er essensielt for å sikre at den nye versjonen er grundig testet før distribusjon.
- Denne distribusjonsmetoden er en del av en kontinuerlig leveringsprosess, som gir raskere og hyppigere programvareutgivelser. Distribusjonen er allerede fullført; man trenger kun å bytte trafikk.
Canary Distribusjon: En Oversikt
Kilde: cncf.io
Canary distribusjon innebærer å rulle ut nye funksjoner eller oppdateringer gradvis til en liten gruppe brukere før de gjøres tilgjengelige for alle.
Dette innebærer å distribuere den nye versjonen til en begrenset gruppe mens den gamle versjonen fortsatt kjøres for de fleste brukere. Utviklingsteamet overvåker den nye versjonen nøye.
Hvis alt går bra, rulles den nye versjonen ut til flere brukere, helt til alle brukerne har den. Denne metoden reduserer risikoen for å introdusere feil som påvirker alle samtidig.
Målet er å redusere risikoen ved å introdusere nye funksjoner til en stor brukerbase, og overgangen til den nye versjonen blir dermed mer smidig.
Les også: Canary Distribusjon og dens rolle i DevOps forklart
Nøkkelfunksjoner og Fordeler
Dette er de spesifikke egenskapene ved Canary distribusjon:
- Den nye versjonen distribueres først til en liten gruppe brukere, og deretter gradvis til flere. Dette reduserer risikoen for store problemer.
- Den nye versjonen overvåkes nøye. Utviklerne får raskt tilbakemeldinger og kan gjøre nødvendige justeringer.
- Rask tilbakestilling til forrige versjon ved problemer. Dette øker tilliten til distribusjonsprosessen.
- Automatisering av distribusjonsprosessen reduserer risikoen for menneskelige feil.
Sammendrag: Blue-Green Distribusjon vs Canary Distribusjon
Funksjon | Blå-Grønn Distribusjon | Canary Distribusjon |
Datasynkronisering | Konstant synkronisering mellom blå og grønne miljøer. | En undergruppe av brukere eller servere mottar ny versjon, resten bruker gjeldende. |
Aktiveringsprosess | Bytte fra aktivt til inaktivt miljø når ny versjon er klar. | Gradvis utrulling til en definert del av brukere som aktivt tester. |
Produksjonsbrukeropplevelse | Ingen nedetid, sømløs veksling mellom miljøer. | En undergruppe tester aktivt, potensielle problemer for denne gruppen. |
Tilgjengelighet vs. tilbakemelding | Prioriterer høy tilgjengelighet. | Prioriterer rask tilbakemelding og kontrollert utrulling. |
Risikoreduksjon | Reduksjon av risiko gjennom gradvis utgivelse. | Testing i inaktive miljøer, testere fanger ikke alltid opp alle problemer. |
Testtilnærming | Testing i inaktive miljøer. | Produksjonsbrukere fungerer som testere. |
Brukstilfeller | Netflix, Amazon, Etsy, LinkedIn og IBM. | Netflix og Google bruker Canary, med automatisert testing. |
Blågrønn Distribusjon vs. Canary Distribusjon: Funksjoner
Utplassering
Blue-Green distribusjon opererer med to miljøer (blått og grønt), som holdes konstant synkroniserte med data. Dette krever kontinuerlig datasynkronisering.
Når den nye versjonen er testet, flyttes all trafikk fra det aktive miljøet til det inaktive, som da blir det nye aktive miljøet.
Dette gir rask implementering av ny kode uten produksjonsstans. Brukerne merker ikke endringen.
Kilde: aws.amazon.com
Canary distribusjon innebærer å distribuere en ny programvareversjon til et lite antall brukere, mens resten fortsetter med den gamle versjonen. Dette er en gradvis overgang. Testerne er her produksjonsbrukere, og den nye versjonen spres til alle når den er stabil.
Velg Blue-Green distribusjon hvis høy tilgjengelighet er prioritet, og Canary hvis rask tilbakemelding og en kontrollert utrulling er viktigst.
Reduksjon av Risikoforskjell
Blue-Green distribusjon reduserer risikoen for feil ved rask tilbakestilling til en stabil versjon for alle brukere. Nye funksjoner kan bli forsinket, men ingen brukere vil bli blokkert av kritiske problemer.
Canary distribusjon reduserer risikoen gradvis. De nye funksjonene testes av en liten gruppe produksjonsbrukere før den spres til alle. Dette øker sannsynligheten for å oppdage problemer tidlig.
Testtilnærmingsforskjell
Med Blue-Green distribusjon foregår all testing i det inaktive miljøet. Data og konfigurasjon er synkronisert, så man kan forvente lik oppførsel som i produksjon.
Det finnes alltid en risiko for at testere ikke oppdager alle problemer. Likevel er veksling mellom aktive og inaktive miljøer rask, så problemer kan fikses og distribueres på nytt.
Kilde: ibm.com
Canary distribusjon lar produksjonsbrukerne være testere. De finner ofte flere problemer på kortere tid siden de bruker applikasjonen i reelle scenarier.
Denne metoden gir en risiko for problemer i den begrensede brukergruppen, men utviklerteamet kan konsentrere seg om de mest alvorlige problemene i den virkelige verden.
Erfarings- og Brukssaker
Her er noen eksempler på bedrifter som bruker disse distribusjonsmetodene:
- Netflix bruker Blue-Green distribusjon for sine strømmetjenester.
- Amazon og Etsy bruker Blue-Green distribusjon for e-handelsplattformene sine.
- LinkedIn bruker Blue-Green distribusjon for sin sosiale nettverksplattform.
- IBM bruker Blue-Green distribusjon for sin skyplattform.
- Netflix bruker også Canary distribusjon, med automatisert testing, funksjonsflagg og A/B-testing.
- Google bruker Canary distribusjon for sine skytjenester, med automatisert testing og trafikkdeling.
Beste Praksis og Fremtidige Trender
Automatisering er nøkkelen, og DevOps-pipelines er fremtiden for distribusjon. Dette er helautomatiske prosesser som inkluderer:
- Oppretting eller oppdatering av miljøer for tjenester, data, brukere eller rettigheter.
- Automatisk distribusjon av kildekode direkte fra kodelageret.
- Oppgradering av databaseskjema og dataoppdatering.
- Automatisk testkjøring under distribusjon.
- Automatisert tilbakestilling ved testfeil.
- Eliminering av manuelle intervensjoner.
Med slike pipelines kan man koble seg til Canary eller Blue-Green prosesser. Dette er rammeverk for å løse distribusjonsproblemer. Det er enkelt å bytte mellom dem eller bruke en kombinasjon.
Siste Ord
Manuelle distribusjonsprosedyrer indikerer umodne utviklingsprosesser eller et manglende fleksibelt miljø. Uansett krever det mye arbeid å endre dette. Prøv å implementere distribusjonsstrategiene for ditt prosjekt.
Undersøk deretter hvordan du kan distribuere applikasjoner i Kubernetes.