Implementeringsfasen av mjukvaruleveranser är av fundamental betydelse inom modern mjukvaruutveckling, särskilt i molnmiljöer.
Ändå är det en av de mest underskattade faserna. Företag avsätter ofta inte tillräckligt med resurser, varken tid eller engagemang, för att optimera implementeringen så att den blir snabb, tillförlitlig och automatiserad.
Jag ser fortfarande ofta manuella distributionsförfaranden. I bästa fall, åtminstone med detaljerade checklistor. I sämsta fall improviserade planer skapade i sista minuten.
Automatiserade distributionsförfaranden betraktas ofta som ett avlägset mål, en punkt på horisonten på kort till medellång sikt. Vägen dit är sällan spikrak. En helt automatiserad och pålitlig distributionsprocess är dock avgörande för betydande besparingar i det långa loppet. Det gör det möjligt att minska den ansträngning som utvecklingsteamen lägger på varje produktionsrelease.
Strategier som Canary och Blue-Green distribution erbjuder alla dessa fördelar, plus hög tillgänglighet och snabba installations- och återställningsprocesser. Detta ger teamen möjlighet att leverera mjukvara oftare och utan sömnlösa nätter. Låt oss se närmare på vad dessa strategier innebär och hur de skiljer sig åt.
Blue-Green Deployment: En överblick
Källa: cncf.io
Blue-Green distribution minskar driftstopp och risk vid lansering av nya versioner genom att skapa två identiska miljöer: en aktiv (blå) och en inaktiv (grön).
Den aktiva miljön används för den aktuella mjukvaruversionen, medan användarna genererar produktionstrafik. Den inaktiva miljön används för att installera och testa den nya versionen av mjukvaran.
När den nya versionen har testats och godkänts, flyttas trafiken från den aktiva miljön till den inaktiva, som då blir den nya aktiva miljön. Denna process kan repeteras efter behov.
Läs även: Blue-Green Deployment och dess roll inom DevOps – Förklarat
Viktiga funktioner och fördelar
Här är de specifika kännetecknen för en Blue-Green distributionsprocess:
- Två identiska miljöer, identiska ur data- och processynpunkt. Den blå (aktiva) miljön används för användarnas dagliga processer. Den gröna (inaktiva) miljön är redo för den nya versionen och är alltid synkroniserad med den blå.
- Snabbt trafikskifte från den aktiva till den inaktiva miljön, som då blir den nya aktiva. Övergången sker omedelbart, utan driftstopp. Användarna behöver inte göra något för att nå den nya miljön.
- Snabb återställning om problem skulle uppstå. Detta minimerar driftstopp om den nya versionen har problem, och applikationen förblir tillgänglig.
- Automatiserad testning är centralt för Blue-Green distribution. Den säkerställer att den nya versionen testas grundligt innan den aktiveras.
- Denna distributionsmetod ingår i en kontinuerlig leveranspipeline, vilket leder till snabbare och mer frekventa programvarureleaser. Trafikskiftet går snabbt, vilket möjliggör täta uppdateringar, förutsatt att testaktiviteterna genomförs effektivt.
Canary Deployment: En överblick
Källa: cncf.io
Canary-distribution innebär en gradvis utrullning av nya funktioner till en mindre grupp användare innan hela användarbasen får tillgång till den nya versionen.
Den nya versionen installeras hos en liten grupp medan den gamla versionen fortfarande används av resten av användarna. Utvecklingsteamet övervakar den nya versionen noggrant för att se till att den fungerar som den ska.
Om allt går bra rullas den nya versionen gradvis ut till fler användare tills den når hela användarbasen. Detta minimerar risken för att buggar eller andra problem påverkar alla användare samtidigt.
Syftet är att minska risken med nya funktioner för hela användarbasen. Övergången till den nya versionen blir därmed smidigare.
Läs också: Canary Deployment och dess roll inom DevOps – Förklarat
Viktiga funktioner och fördelar
Här är de specifika egenskaperna hos Canary-distributionsprocessen:
- Den nya versionen introduceras först för en liten grupp användare och rullas därefter ut till fler. Detta minimerar risken för problem som påverkar alla användare.
- Den nya versionen övervakas noggrant. Utvecklarna får snabbt återkoppling, så att nödvändiga justeringar kan göras innan den nya versionen rullas ut till alla.
- Om problem uppstår kan distributionen enkelt återställas till den tidigare versionen. Detta skapar tillit till implementeringsprocessen, eftersom risken för problem minskar.
- Automatisera distributionsprocessen så mycket som möjligt för att minska risken för mänskliga misstag.
Sammanfattning: Blue-Green Distribution kontra Canary Distribution
Funktion | Blue-Green Distribution | Canary Distribution |
Datasynkronisering | Konstant synkronisering mellan blå och gröna miljöer. | En delmängd av användare eller servrar får den nya versionen; resten fortsätter med den nuvarande versionen. |
Aktiveringsprocess | Byte från aktiv till inaktiv miljö när en ny version är klar. | Gradvis utrullning till en definierad delmängd av användare som testar de nya versionerna. |
Produktionsupplevelse | Inga driftstopp; sömlös växling mellan miljöer. | En delmängd av produktionsanvändare testar den nya versionen; eventuella problem för denna grupp. |
Prioritet | Hög tillgänglighet. | Snabb återkoppling och kontrollerad utrullning. |
Riskreducering | Reducering av problemmöjlighet genom gradvis utgivning till en undergrupp av användare. | Tester främst i inaktiva miljöer; testare kanske inte fångar alla problem i den verkliga världen. |
Testmetod | Testning i inaktiva miljöer; testare kanske inte upptäcker alla problem. | Produktionsanvändare fungerar som testare och upptäcker problem tidigt. |
Användningsfall | Netflix, Amazon, Etsy, LinkedIn och IBM använder Blue-Green. | Netflix och Google använder Canary, tillsammans med automatiserade tester. |
Blue-Green Distribution kontra Canary Distribution: Funktioner
Distribution
Blue-Green distribution använder två miljöer (blå och grön). Dessa miljöer är dock ständigt synkroniserade vad gäller data. Detta kräver permanenta datasynkroniseringsprocesser.
När den nya versionen har testats och godkänts, flyttas trafiken från den aktiva miljön till den inaktiva.
Ingen tid går åt till att distribuera ny kod, och det finns inget produktionsstopp. Alla produktionsanvändare arbetar i den aktiva miljön utan att märka bytet.
Källa: aws.amazon.com
Canary-distribution innebär att en ny version distribueras till en liten delmängd användare, medan majoriteten fortsätter att använda den befintliga versionen. Detta är en gradvis implementering. De testare som används är produktionsanvändare, om än en begränsad del. Gruppen testar den nya versionen med produktionsprocesser, och när den är stabil distribueras den till alla användare.
Blue-Green distribution är lämplig om hög tillgänglighet är prioritet. Canary-distribution kan vara bättre om snabb feedback och kontrollerad utrullning föredras.
Skillnad i riskminimering
Blue-Green distribution minskar risken för fel genom att snabbt byta till en stabil tidigare version, för alla användare direkt. Det finns en risk att nya funktioner försenas, men inga användare blir blockerade på grund av kritiska problem.
Risken med Canary-distribution minskar gradvis. Eftersom nya funktioner släpps till en liten grupp användare, får de testa mjukvaran innan den rullas ut till alla. Den initiala gruppen fångar ofta upp problem tidigt.
Skillnad i testmetod
Blue-Green distribution lämnar testprocessen till den inaktiva miljön. Utvecklare och testare kan testa utan begränsningar. Beteendet förväntas vara likvärdigt den aktiva produktionsmiljön, eftersom data och konfiguration alltid är synkroniserade.
Testare kan missa problem som produktionsanvändare hade upptäckt, men bytet mellan miljöer sker snabbt. Problem kan åtgärdas av utvecklare, och bytet kan göras igen.
Källa: ibm.com
Canary-distribution använder produktionsanvändare som testare. Denna grupp hittar ofta fler problem på kortare tid, eftersom de utför dagliga affärsprocesser.
Användarna i testgruppen kan få uppleva allvarliga problem under en period, men majoriteten av användarna påverkas inte, och utvecklarna kan fokusera på kritiska problem direkt.
Erfarenhet och användningsfall
Här är några exempel på företag som framgångsrikt använder dessa metoder:
- Netflix använder Blue-Green distribution för sin streamingtjänst.
- Amazon och Etsy använder Blue-Green distribution för sin e-handelsplattform.
- LinkedIn använder Blue-Green distribution för sin sociala nätverksplattform.
- IBM använder Blue-Green distribution för sin molnplattform.
- Netflix använder också Canary distribution för sin streamingtjänst, i kombination med automatiserade tester, funktionsflaggor och A/B-testning.
- Google använder Canary distribution för sina molntjänster, med fördelar från automatiserad testning, trafikuppdelning och övervakning, med gradvis utrullning till användare.
Bästa praxis och framtida trender
Automatisering är avgörande, och DevOps-pipelines är framtiden för distributionsprocesser. Dessa automatiserade processer innehåller följande steg:
- Skapa eller uppdatera målmiljöer för tjänster, data, användare och privilegier.
- Automatisk distribution av fullständiga versioner eller deltauppdateringar direkt från kodförrådet.
- Uppgradering av databasschema och data.
- Automatiska tester direkt under distributionen.
- Automatiska återställningsprocesser om tester misslyckas.
- Eliminering av alla manuella steg.
Med sådana pipelines kan du koppla in Canary- eller Blue-Green processer eller andra metoder. Dessa är exempel som har visat sig fungera bra. Det är flexibla ramverk för att lösa problem med distribution. Det är enkelt att byta mellan dem eller att kombinera dem.
Slutord
Manuella distributionsmetoder indikerar omogna utvecklingsprocesser eller brist på flexibilitet i mjukvaruleverans. Det kräver mycket arbete att ändra detta. Implementera strategierna ovan för ditt projekt.
Kolla även in hur du distribuerar applikationer i Kubernetes.