Delen via


Blauwgroene implementatiestrategieën in Azure Spring Apps

Notitie

De Basic, Standarden Enterprise--plannen zijn op 17 maart 2025 buiten gebruik gesteld. Zie de aankondiging over buitengebruikstelling van Azure Spring Apps voor meer informatie.

Het Standaardverbruik en het toegewezen-plan zijn op 30 september 2024 met een uitfasering begonnen, met een volledige beëindiging eind maart 2025. Zie Azure Spring Apps Standard-verbruik en toegewezen abonnement migreren naar Azure Container Apps voor meer informatie.

Dit artikel is van toepassing op:✅ Basic/Standard ✅ Enterprise

In dit artikel wordt de blauwgroene implementatieondersteuning in Azure Spring Apps beschreven.

Azure Spring Apps (Standard-abonnement en hoger) staat twee implementaties toe voor elke app, waarvan slechts één productieverkeer ontvangt. Dit patroon wordt meestal blauwgroene implementatie genoemd. De ondersteuning van Azure Spring Apps voor blauwgroene implementatie, samen met een CD-pijplijn (Continuous Delivery) en strenge geautomatiseerde tests, maakt flexibele toepassingsimplementaties met een hoge betrouwbaarheid mogelijk.

Afwisselende implementaties

De eenvoudigste manier om blauwgroene implementatie te implementeren met Azure Spring Apps is door twee vaste implementaties te maken en altijd te implementeren in de implementatie die geen productieverkeer ontvangt. Met de Azure Spring Apps-taak voor Azure Pipelines kunt u deze op deze manier implementeren door de UseStagingDeployment vlag in te stellen op true.

Zo werkt de benadering van afwisselende implementaties in de praktijk:

Stel dat uw toepassing twee implementaties heeft: deployment1 en deployment2. Momenteel is deployment1 ingesteld als productie-implementatie en wordt versie v3 van de toepassing uitgevoerd.

Dit maakt van deployment2 de staging implementatie. Dus, wanneer de CD-pijplijn (Continuous Delivery) klaar is om te worden uitgevoerd, wordt de volgende versie van de app, versie v4, geïmplementeerd in de staging-omgeving deployment2.

Diagram dat laat zien implementatie1 met v3 dat productieverkeer ontvangt en implementatie2 met v4 in de testfase.

Nadat v4 is opgestart op deployment2, kunt u geautomatiseerde en handmatige tests uitvoeren via een privétesteindpunt om ervoor te zorgen dat v4 aan alle verwachtingen voldoet.

Diagram met V4 geïmplementeerd op implementatie2 en testen.

Wanneer u er vertrouwen in v4hebt, kunt u instellen deployment2 als productie-implementatie, zodat alle productieverkeer wordt ontvangen. v3 blijft draaien op deployment1 voor het geval dat u een kritiek probleem ontdekt dat een terugdraaiactie vereist.

Diagram met V4 op implementatie2 dat productieverkeer ontvangt.

Nu is deployment1 de faseringsimplementatie. De volgende uitvoering van de implementatiepijplijn wordt dus geïmplementeerd op deployment1.

Diagram dat V5 geprepareerd voor deployment1 toont.

U kunt nu V5 testen op het privétesteindpunt van deployment1.

Diagram met V5 dat is getest op deployment1.

Ten slotte, nadat v5 aan al uw verwachtingen heeft voldaan, stelt u deployment1 opnieuw in als de productie-implementatie, zodat v5 al het productieverkeer ontvangt.

Diagram dat laat zien dat V5 productieverkeer ontvangt tijdens implementatie1.

Compromissen van de benadering van afwisselende implementaties

De benadering voor afwisselende implementaties is eenvoudig en snel, omdat er geen nieuwe implementaties hoeven te worden gemaakt. Het biedt echter verschillende nadelen, zoals beschreven in de volgende secties.

Permanente faseringsimplementatie

De faseringsimplementatie blijft altijd actief en verbruikt dus resources van het Azure Spring Apps-exemplaar. Dit verdubbelt de resourcevereisten van elke toepassing in Azure Spring Apps.

De raceconditie voor goedkeuring

Stel dat voor de release-pijplijn in de bovenstaande toepassing handmatige goedkeuring is vereist voordat elke nieuwe versie van de toepassing productieverkeer kan ontvangen. Er is een risico dat terwijl één versie (v6) wacht op handmatige goedkeuring in de testomgeving, de implementatiepijplijn opnieuw wordt uitgevoerd en de oude versie overschrijft met een nieuwere versie (v7). Wanneer de goedkeuring voor v6 wordt verleend, zal de pijplijn die v6 implementeerde de stagingimplementatie tot productie instellen. Maar nu is het de niet-goedgekeurde v7, niet de goedgekeurde v6, die op die implementatie is geïmplementeerd en verkeer ontvangt.

Diagram met de goedkeuringsracevoorwaarde die in deze sectie wordt beschreven.

Mogelijk kunt u de racevoorwaarde voorkomen door ervoor te zorgen dat de implementatiestroom voor één versie pas kan beginnen als de implementatiestroom voor alle vorige versies is voltooid of afgebroken. Een andere manier om een raceconditie bij goedkeuring te voorkomen, is door gebruik te maken van de zogenaamde Benoemde implementaties, zoals hieronder beschreven.

Benoemde implementaties

In de benadering met benoemde implementaties wordt er een nieuwe implementatie gemaakt voor elke nieuwe versie van de toepassing die wordt geïmplementeerd. Nadat de toepassing is getest op de op maat gemaakte implementatie, wordt die implementatie ingesteld als productie-implementatie. De implementatie met de vorige versie kan zo lang genoeg blijven bestaan om er zeker van te zijn dat een terugdraaiactie niet nodig is.

In de onderstaande afbeelding wordt de versie v5 uitgevoerd op de implementatie deployment-v5. De implementatienaam bevat nu de versie omdat de implementatie specifiek is gemaakt voor deze versie. Er is geen andere uitrol vanaf het begin. Als u nu versie v6wilt implementeren, maakt de implementatiepijplijn een nieuwe implementatie deployment-v6 en implementeert de app-versie v6 daar.

Diagram met de implementatie van een nieuwe versie op een benoemde implementatie, zoals beschreven in deze sectie.

Er is geen risico dat een andere versie parallel wordt geïmplementeerd. Ten eerste staat Azure Spring Apps het maken van een derde implementatie niet toe, terwijl er al twee implementaties bestaan. Ten tweede, zelfs als het mogelijk was om meer dan twee implementaties te hebben, wordt elke implementatie geïdentificeerd door de versie van de toepassing die deze bevat. De pijplijn die de implementatie van v6 organiseert, zou dus alleen deployment-v6 als productie-implementatie proberen in te stellen.

Diagram dat laat zien dat v6 is geïmplementeerd in deployment-v6 en productieverkeer ontvangt.

Nadat de implementatie die voor de nieuwe versie is gemaakt, productieverkeer ontvangt, moet u de implementatie met de vorige versie verwijderen om ruimte te maken voor toekomstige implementaties. U kunt het aantal minuten of uren uitstellen, zodat u kunt terugkeren naar de vorige versie als u een kritiek probleem in de nieuwe versie ontdekt.

Diagram dat laat zien dat de vorige implementatie na een terugvalperiode wordt verwijderd.

Compromissen van de methode voor benoemde implementaties

De benadering voor benoemde implementaties heeft de volgende voordelen:

  • Hiermee voorkomt u de voorwaarde van de goedkeuringsrace.
  • Het vermindert het resourceverbruik door de faseringsimplementatie te verwijderen wanneer deze niet in gebruik is.

Er zijn echter ook nadelen, zoals beschreven in de volgende sectie.

Implementatiepijplijnfouten

Tussen het moment dat een implementatie wordt gestart en de tijd waarop de faseringsimplementatie wordt verwijderd, mislukken eventuele extra pogingen om de implementatiepijplijn uit te voeren. De pijplijn probeert een nieuwe implementatie te maken, wat resulteert in een fout omdat er slechts twee implementaties zijn toegestaan per toepassing in Azure Spring Apps.

Daarom moet de implementatieindeling de middelen hebben om een mislukt implementatieproces op een later tijdstip opnieuw uit te voeren, of de middelen om ervoor te zorgen dat de implementatiestromen voor elke versie in de wachtrij blijven staan totdat de stroom voor alle vorige versies is voltooid.

Volgende stappen