Bearbeiten

Blau/Grün-Bereitstellungen für Anwendungen auf Azure Spring Apps

Azure Spring Apps
GitHub
Azure DevOps

Dieser Artikel stellt eine hochverfügbare Blue/Green-Bereitstellungslösung für Anwendungen in Azure Spring Apps vor.

Das Blue/Green-Bereitstellungsmuster umfasst die Beibehaltung einer vorhandenen Version einer Anwendung (als blaue Version bezeichnet), während eine neue Version der Anwendung bereitgestellt wird (grüne Version genannt). Mit dieser Bereitstellungsmethode können Sie die neue Anwendungsversion unabhängig neu starten, in Betrieb nehmen und testen. Wenn die neue Version der Anwendung ausgeführt wird, können Sie zu ihr wechseln und neuen eingehenden Datenverkehr an sie umleiten. Für den Benutzer der Anwendung erfolgt die Bereitstellung der neuen Version ohne merkliche Ausfallzeiten. Die Blue/Green-Bereitstellung erleichtert das Verwerfen einer neuen Version ohne Auswirkungen auf die Liveversion, wenn eine neue Bereitstellung nicht wie erwartet funktioniert.

Aufbau

Die folgende Abbildung zeigt die Architektur für diesen Ansatz:

Abbildung: Architektur für Blue/Green-Bereitstellung, die GitHub, GitHub Actions und Azure Spring Apps verwendet.

Laden Sie eine Visio-Datei dieser Architektur herunter.

Komponenten

Diese Lösung verwendet die folgenden Komponenten:

  • Azure Spring Apps ist eine moderne Microservice-Plattform zum Ausführen von Java Spring Boot- und Steeltoe .NET Core-Anwendung. Der Dienst eliminiert die Notwendigkeit von Boilerplate-Code zum Ausführen von Microservices und unterstützt Sie bei der schnellen Entwicklung robuster Apps in der Cloud. Sie können auch Azure Spring Apps verwenden, um anwendungsspezifischen Code bereitzustellen.

  • GitHub ist eine Codehostingplattform, die Versionskontrolle und Zusammenarbeit bietet. GitHub bietet verteilte Git-Versionskontrolle, Quellcodeverwaltung und andere Features.

  • GitHub Actions hilft Ihnen, Workflows der Softwareentwicklung und -bereitstellung innerhalb eines Repositorys zu automatisieren. Sie können mit dieser Plattform eine vollständig automatisierte Continuous Integration- und Continuous Delivery-Lösung (CI/CD) erstellen. Sie können GitHub Actions auch verwenden, um Umgebungen zu erstellen, für die Sie Regeln konfigurieren können, z. B. eine Anzahl von Reviewern vorschreiben.

Workflow

Die Lösungsarchitektur implementiert den folgenden Workflow:

  1. Ein Entwickler ändert eine Anwendung. Das GitHub-Repository enthält den App-Code, der in Azure Spring Apps bereitgestellt werden muss. Jede Änderung am App-Code erfolgt im Rahmen von Quellcodeverwaltung. GitHub führt die folgenden Aufgaben aus:

    • Sicherstellen, dass Änderungen überprüft werden.

    • Verhindern unbeabsichtigter oder nicht autorisierter Änderungen.

    • Sicherstellen, dass Qualitätsprüfungen abgeschlossen werden.

  2. Das GitHub-Repository enthält auch einen GitHub Actions-Workflow, um Builds der Codeänderungen zu erstellen und die erforderlichen Qualitätsprüfungen durchzuführen. Nachdem der Code kompiliert wurde, stellt der GitHub Actions-Workflow die neueste Version des App-Codes in Azure Spring Apps bereit. Der GitHub Actions-Workflow umfasst die folgenden Schritte:

    1. Bestimmen der aktuell aktiven Produktionsumgebung.

    2. Bereitstellen des Codes in einer anderen Umgebung als der Produktionsumgebung. Wenn keine Nicht-Produktionsumgebung vorhanden ist, erstellen Sie die Umgebung.

      Zu diesem Zeitpunkt der Bereitstellung empfängt die alte (blaue) Version der App in der Produktionsbereitstellung weiterhin den gesamten Produktionsdatenverkehr.

    3. Warten Sie auf die Bereitstellungsüberprüfung und Genehmigung der neuen App.

      Dieser Schritt gibt der neu bereitgestellten Anwendung (der grünen Version) Zeit zum Starten und Aufwärmen.

      Vor der Genehmigung können Sie die Nicht-Produktions-URL der App verwenden, um die neue Version zu überprüfen und sicherzustellen, dass sie bereit ist.

    4. Tauschen Sie nach der Genehmigung die Produktionsbereitstellung gegen die Nicht-Produktionsbereitstellung aus.

      Der gesamte Produktionsdatenverkehr wird jetzt an die neue Version der App weitergeleitet.

      Hinweis

      Wenn Sie die neue Bereitstellung ablehnen, schaltet GitHub nicht zwischen den Umgebungen um. Die vorherige Version erhält weiterhin Produktionsdatenverkehr.

    5. Nach der Genehmigung und der Umschaltung des Datenverkehrs löschen Sie die alte Produktionsbereitstellung.

      Dieser Bereinigungsschritt führt zu einem kostengünstigeren Setup.

Alternativen

Diese Lösung verwendet GitHub Actions zum Automatisieren der Bereitstellung. Sie können auch Azure Pipelines oder ein anderes CI/CD-Automatisierungssystem als Alternative verwenden. Das im Abschnitt Szenariobereitstellung bereitgestellte Beispiel verwendet so weit wie möglich Azure CLI-Anweisungen, sodass Sie dieses Setup problemlos auf ein anderes Automatisierungstool übertragen können. Verwenden Sie ein CI/CD-Tool, um eine Umgebung zu einrichten und einen Genehmigungsprozess für diese zu erstellen.

Diese Architektur verwendet Azure Spring Apps mit Bereitstellungen als Zieldienst. Alternativ können Sie Azure App Service-Stagingslots verwenden. Ein Slot enthält die neue Version der Anwendung, die erneut geladen, aufgewärmt und getestet werden kann, bevor ein Slottausch durchgeführt wird. Durch den Slottausch wird die neue Version in die Produktion versetzt. Dieser Prozess ist in den Dienst integriert, sodass er einfach konfiguriert werden kann.

Alternativ können Sie einen Azure-Dienst, der Webendpunkte hostet, hinter einer Lastenausgleichslösung platzieren. Wenn Sie diesen Ansatz verwenden, können Sie eine zweite Instanz des Azure-Diensts einrichten, in der Sie eine neue Version Ihrer Anwendung bereitstellen können. Im nächsten Schritt können Sie eine Bereitstellung ohne Downtime erstellen, indem Sie den Datenverkehr in der Lastenausgleichslösung auf den Azure-Dienst umstellen, der die neue Version der App enthält. Beachten Sie, dass dieser Ansatz für die Blue/Green-Bereitstellung erheblichen Verwaltungsmehraufwand erfordert.

Szenariodetails

Bei einigen Cloudanwendungen muss unbedingt die maximal mögliche Uptime erreicht werden. Eine Lösung besteht in der Verwendung einer Hochverfügbarkeitskonfiguration, die die Kosten verdoppeln kann. Eine weitere Lösung ist ein Notfallwiederherstellungsplan, der die Anwendung nach einem Ausfall wieder in einer anderen Region verfügbar macht. Die Kosten für letzteres können niedriger sein, aber die gesamte Anwendung wieder online zu bringen, kostet Zeit.

Dieser Artikel beschreibt ein Verfahren zum Sicherstellen von Hochverfügbarkeit während der Bereitstellung einer neuen Version einer Anwendung. In einer herkömmlichen Konfiguration werden die neuen Teile der Anwendung auf dem Dienst bereitgestellt, der die Anwendung hosten soll. Diese Konfiguration führt häufig zum erneuten Laden und Starten der Anwendung. Während dieses Vorgangs ist die Anwendung nicht verfügbar.

Diese Lösung verwendet Azure Spring Apps, um die Blau/Grün-Bereitstellung zu implementieren, und befasst sich mit der Automatisierung der Bereitstellung von Anwendungen.

Mögliche Anwendungsfälle

Diese Lösung bietet sich für alle Organisationen an, die Hochverfügbarkeit benötigen. Die Lösung eignet sich besonders für Branchen wie E-Commerce und Gaming, denen bei Ausfallzeiten Käufer und Umsatz verloren gehen.

Sie können Ihre Verfügbarkeit weiter verbessern, indem Sie Bereitstellungen ohne Downtime implementieren. Weitere Informationen finden Sie im Abschnitt Alternativen dieses Artikels.

Überlegungen

Die folgenden Überlegungen zur Lösung basieren auf den Säulen des Azure Well-Architected Frameworks (WAF). Dieses Framework umfasst verschiedene Grundsätze zur Verbesserung der Workloadqualität. Weitere Informationen finden Sie unter Microsoft Azure Well-Architected Framework.

Verfügbarkeit

Mit dieser Lösung können Sie die Verfügbarkeit Ihrer Anwendung während der Bereitstellung einer neuen Version aufrechterhalten. Dies erhöht nicht die allgemeine SLA von Azure Spring Apps. Ausfälle auf der Plattform können sich weiterhin auf Ihre App auswirken.

Wenn Sie die allgemeine SLA Ihrer Konfiguration verbessern wollen, sollten Sie einen Azure Spring Apps-Dienst für Hochverfügbarkeit über mehrere Regionen hinweg einrichten. Bei diesem Ansatz wird der Konfiguration eine globale Lastausgleichslösung vorangestellt.

Skalierbarkeit

Diese Lösung funktioniert anwendungsspezifisch, daher eignet sie sich gut für Microserviceanwendungen. Außerdem können Anwendungsteams unabhängig von anderen Anwendungsteams arbeiten, ohne die Verfügbarkeit der Gesamtlösung zu beeinflussen.

Diese Lösung funktioniert auch am besten anwendungsspezifisch, sodass jede Anwendung über einen eigenen Blau/Grün-Bereitstellungsworkflow verfügt. Wenn Sie Anwendungen im gleichen Workflow kombinieren, wird diese Konfiguration schnell komplex, daher wird dieser Ansatz nicht empfohlen.

Sicherheit

Sicherheit bietet Schutz vor vorsätzlichen Angriffen und dem Missbrauch Ihrer wertvollen Daten und Systeme. Weitere Informationen finden Sie unter Übersicht über die Säule „Sicherheit“.

Neben dem Einrichten von Repositoryberechtigungen sollten Sie auch die folgenden Sicherheitsmaßnahmen in Git-Repositorys implementieren, die Code enthalten, der in Azure Spring Apps bereitgestellt werden soll:

  • Branchschutz. Schützen Sie die Branches, die den Produktionsstatus Ihrer Anwendung darstellen, vor direkt gepushten Änderungen. Verlangen Sie, dass jeder Änderungsvorschlag als Pull Request (PR) übermittelt wird. Verwenden Sie PRs, um automatische Überprüfungen durchzuführen. Diese Überprüfungen können Builds des gesamten Codes erstellen und Komponententests des durch PRs erstellten oder geänderten Codes durchführen.

  • PR-Überprüfung. Um das Vier-Augen-Prinzip zu erzwingen, können Sie mindestens einen Prüfer vorschreiben. Sie können auch das Feature GitHub Codebesitzer verwenden, um Einzelpersonen oder Teams zu definieren, die für die Überprüfung bestimmter Dateien in einem Repository verantwortlich sind.

  • Unveränderlichen Verlauf. Lassen Sie neue Commits nur auf Grundlage der vorhandenen Änderungen zu. Unveränderlicher Verlauf ist für Überwachungszwecke besonders wichtig.

  • Weitere Sicherheitsmaßnahmen. Verlangen Sie die Aktivierung von Multi-Faktor-Authentifizierung für Ihre GitHub-Benutzer. Lassen Sie außerdem nur signierte Commits zu, die anschließend nicht mehr geändert werden können.

Außerdem wird das Bereitstellen in nur einem Azure Spring Apps-Dienst empfohlen. In einem Produktionssetup sollten Sie ihren Code zunächst in anderen Umgebungen testen, bevor Sie ihn in der Produktion bereitstellen. Ihre Produktionsumgebung sollte sich vorzugsweise in einer anderen Umgebung als Ihre Entwicklungs- und Testumgebung befinden.

Informationen zum Erhöhen der Sicherheit Ihres Azure Spring Apps-Diensts finden Sie unter Bereitstellen von Azure Spring Apps in einem virtuellen Netzwerk. Wenn Sie die vorgeschlagene Bereitstellung implementieren, können Sie keine in GitHub gehosteten Runner verwenden. Sie müssen ihren eigenen Runner für den Bereitstellungsworkflow verwenden.

DevOps

Das Automatisieren dieses Ablaufs über GitHub Actions-Workflows erhöht die DevOps-Produktivität. Eines der nützlichsten Features ist die Möglichkeit, Änderungen mit unerwünschtem Verhalten schnell zurückzusetzen. Lehnen Sie einfach die neue Bereitstellung ab.

Teams verwalten häufig mehrere Umgebungen für dieselbe Anwendung. In der Regel werden mehrere Versionen einer Anwendung in verschiedenen Azure Spring Apps-Diensten bereitgestellt. Das Git-Repository, das die einzige Quelle der Wahrheit ist, zeigt, welche Versionen von Anwendungen derzeit in einem Cluster bereitgestellt werden.

Kostenoptimierung

Kostenoptimierung beinhaltet die Suche nach Möglichkeiten, unnötige Ausgaben zu reduzieren und die Betriebseffizienz zu verbessern. Weitere Informationen finden Sie unter Übersicht über die Säule „Kostenoptimierung“.

Verwenden Sie den Azure-Preisrechner, um die voraussichtlichen Kosten zu ermitteln.

Azure Spring Apps verfügt über eine Basic- und einen Standard-Ebene. Weitere Informationen finden Sie unter Preise für Azure Spring Apps. Wenn Sie die Blau/Grün-Bereitstellungsstrategie verwenden, zahlen Sie nur für kurze Zeit für zusätzliche virtuelle SPU, während Ihre Bereitstellung ausgeführt wird.

GitHub bietet einen kostenlosen Dienst. Um erweiterte sicherheitsbezogene Funktionen wie Codebesitzer oder erforderliche Prüfer zu verwenden, benötigen Sie allerdings den Team-Plan. Weitere Informationen finden Sie auf der Seite Preisübersicht für GitHub.

Szenariobereitstellung

Ein Beispiel für diese Konfiguration finden Sie im GitHub-Repository Automatisierte Blau/Grün-Bereitstellung für Azure Spring Apps-Anwendungen. Das Repository enthält auch die Schritte zum Einrichten Ihres Azure Spring Apps-Diensts mithilfe einer Bicep-Vorlage.

Beitragende

Microsoft pflegt diesen Inhalt. Der folgende Mitwirkende hat den ursprünglichen Inhalt entwickelt.

Hauptautor:

Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.

Nächste Schritte