Blue-Green Deployment
Deployment-strategi med to identiske miljøer der muliggør zero-downtime releases og instant rollback.
Blue-Green Deployment er en deployment-strategi, der eliminerer nedetid og risiko ved releases. Konceptet er simpelt: du vedligeholder to identiske produktionsmiljøer, Blue og Green. Til enhver tid serverer ét miljø live-trafik, mens det andet er idle eller bruges til den næste version.
Processen fungerer sådan: Antag at Blue er det aktive miljø. Den nye version deployes til Green. Når Green er klar og verificeret, skiftes routingen (typisk via load balancer eller DNS) så al trafik nu går til Green. Blue bliver idle og fungerer som instant rollback. Hvis noget går galt, switcher man simpelt tilbage til Blue.
Fordelen er zero-downtime deployment. Brugere oplever ingen afbrydelse, da skiftet sker på netværksniveau og typisk tager under et sekund. Det er en markant forbedring sammenlignet med traditionelle deployments, der kræver at applikationen stoppes, opdateres og genstartes.
Databasemigrationer er den største udfordring ved Blue-Green. Begge miljøer deler typisk den samme database, og schema-ændringer skal være bagudkompatible. Teknikken expand-contract løser dette: først tilføjes nye kolonner/tabeller (expand), derefter deployes applikationen, og til sidst fjernes gamle kolonner (contract) i en efterfølgende release.
Blue-Green fungerer godt med containeriserede applikationer og cloud-infrastruktur, hvor miljøer kan spinnes op og ned hurtigt. Kubernetes gør det nemt med to Deployments og en Service der switcher mellem dem. AWS og andre cloud-udbydere tilbyder native Blue-Green via services som Elastic Beanstalk og CodeDeploy.