Diese Referenzarchitektur beschreibt, wie Java Spring Boot-Workloads in Azure Spring Apps ausgeführt werden. Das Design verwendet Zonenredundanz, um eine hohe Verfügbarkeit zu erzielen. Implementieren Sie diesen Entwurf, um zu verhindern, dass eine Anwendung fehlschlägt, wenn in allen Rechenzentren in einer Zone ein Ausfall auftritt.
Diese Architektur hilft Ihnen bei:
- Explizites Erhöhen der Verfügbarkeit Ihrer Anwendung im Vergleich zu einer Einzelzonenbereitstellung.
- Der Erhöhung der allgemeinen Resilienz und des Servicelevelziels (Service Level Objective, SLO) Ihrer Anwendung.
Diese Lösung stellt eine Baselinestrategie für die Azure Spring Apps-Bereitstellung dar. Weitere Lösungen, die auf dieser Architektur aufbauen, finden Sie unter Bereitstellen von Azure Spring Apps für mehrere Regionen und Azure Spring Apps, die in Zielzonen integriert sind.
Tipp
Sehen Sie sich eine Beispielimplementierung an, die einige der Designentscheidungen dieser Architektur veranschaulicht. Betrachten Sie die Implementierung als Ihren ersten Schritt in Richtung Produktion.
Aufbau
Die folgende Abbildung zeigt die Architektur für diesen Ansatz:
Laden Sie eine Visio-Datei dieser Architektur herunter.
Workflow
Der folgende Workflow entspricht dem vorherigen Diagramm:
Der Benutzer greift mithilfe des HTTP-Hostnamens der Anwendung auf diese zu, z. B
www.contoso.com
. Azure DNS wird verwendet, um die Anforderung für diesen Hostnamen an den öffentlichen Azure-Anwendungsgateway-Endpunkt aufzulösen.Das Anwendungsgateway wird verwendet, um die Anforderung zu prüfen. Es leitet auch den zulässigen Datenverkehr an die IP-Adresse des Lastenausgleichs in der bereitgestellten Azure Spring Apps-Instanz weiter. Das Anwendungsgateway ist in die Azure Web Application Firewall integriert.
Der interne Lastenausgleich wird verwendet, um den Datenverkehr an die Back-End-Dienste weiterzuleiten.
Im Rahmen der Verarbeitung der Anforderung kommuniziert die Anwendung mit anderen Azure-Diensten innerhalb des virtuellen Netzwerks. Beispielsweise kann die Anwendung geheime Schlüssel aus Azure Key Vault oder den Speicherstatus aus der Datenbank erhalten.
Komponenten
Die folgenden Azure-Dienste sind die Komponenten in dieser Architektur:
Die Standardversion von Azure Spring Apps wird verwendet, um eine Java Spring Boot-Beispielanwendung zu hosten, die als Microservices implementiert wird.
Die V2-Standardversion des Anwendungsgateways wird verwendet, um Datenverkehr zu den Anwendungen zu verwalten. Sie fungiert als lokaler Reverseproxy in der Region, in der Ihre Anwendung ausgeführt wird.
Diese SKU verfügt über eine integrierte Webanwendungsfirewall, um Ihre Webanwendungen vor Exploits und Sicherheitsrisiken zu schützen. Die Web Application Firewall im Application Gateway verfolgt Open Web Application Security Project (OWASP)-Exploits nach.
Azure DNS wird verwendet, um Anforderungen aufzulösen, die an den Hostnamen der Anwendung gesendet werden. Sie löst diese Anforderungen an den öffentlichen Endpunkt des Anwendungsgateways aus. Private Azure DNS-Zonen werden verwendet, um Anforderungen an die privaten Endpunkte aufzulösen, die auf die benannten Azure Private Link-Ressourcen zugreifen.
Die Azure-Datenbank für MySQL wird verwendet, um den Zustand in einer relationalen Back-End-Datenbank zu speichern.
Key Vault wird zum Speichern von Anwendungsschlüsseln und Zertifikaten verwendet. Die in Azure Spring Apps ausgeführten Microservices verwenden die Anwendungsgeheimnisse. Azure Spring Apps und Application Gateway verwenden die Zertifikate zur Beibehaltung des Hostnamens.
Alternativen
Azure Database für MySQL ist nicht die einzige Option für eine Datenbank. Sie können auch Folgendes verwenden:
Redundanz
Erstellen Sie Redundanz in Ihrer Workload, um einzelne Fehlerpunkte zu minimieren. In dieser Architektur replizieren Sie Komponenten über Zonen innerhalb einer Region hinweg. Stellen Sie in Ihrer Architektur sicher, dass Sie Verfügbarkeitszonen für alle Komponenten in Ihrem Setup verwenden.
Azure-Dienste werden nicht in allen Regionen unterstützt. Darüber hinaus unterstützen nicht alle Regionen Zonen. Bevor Sie eine Region auswählen, überprüfen Sie die regionale und die Zonenunterstützung.
Zonenredundante Dienste replizieren oder verteilen Ressourcen automatisch über Zonen hinweg. Ständig verfügbare Dienste sind in allen Azure-Gebieten ständig verfügbar und widerstandsfähig gegenüber zonen- und regionsweiten Ausfällen.
Die folgende Tabelle zeigt die Resilienztypen für die Dienste in dieser Architektur:
Power BI-Dienst | Resilienz |
---|---|
Azure DNS | Immer verfügbar |
Application Gateway | Zonenredundant |
Azure Spring Apps | Zonenredundant |
Azure Database for MySQL | Zonenredundant |
Key Vault | Zonenredundant |
Virtuelles Azure-Netzwerk | Zonenredundant |
Private Azure-Endpunkte | Zonenredundant |
Azure Spring Apps unterstützt zonenbasierte Redundanz. Mit dieser Zonenredundanz ist die gesamte zugrunde liegende Infrastruktur des Dienstes auf mehrere Verfügbarkeitszonen verteilt, wodurch eine höhere Verfügbarkeit für die Anwendung erreicht wird. Anwendungen skalieren horizontal ohne irgendwelche Codeänderungen. Ein leistungsfähiges Netzwerk verbindet Azure-Verfügbarkeitszonen. Die Verbindung hat eine Roundtriplatenz von weniger als 2 Millisekunden (ms). Sie müssen sich nicht auf die asynchrone Replikation für Datenworkloads verlassen, die häufig mit Designherausforderungen verbunden sind.
Für Application Gateway einschließlich der öffentlichen IP-Adresse, die vom Application Gateway verwendet wird, werden mehrere Verfügbarkeitszonen eingerichtet. Öffentliche IP-Adressen mit einer standardmäßigen SKU unterstützen Verfügbarkeitszonen.
Diese Architektur verwendet Azure Database für MySQL mit der Bereitstellungsoption Flexibler Server, um Hochverfügbarkeit mit automatischem Failover zu unterstützen. Wählen Sie je nach Ihren Latenzanforderungen zonenredundant hohe Verfügbarkeit oder hohe Verfügbarkeit gleicher Zone aus. Beim Konfigurieren von Hochverfügbarkeit stellt die Option Flexibler Server automatisch ein Standbyreplikat bereit und verwaltet dieses. Wenn es zu einem Ausfall kommt, gehen committete Daten nicht verloren.
Key Vault bietet automatisch Zonenredundanz in jeder Region, in der Verfügbarkeitszonen verfügbar sind. Die Key Vault-Instanz, die in dieser Architektur verwendet wird, wird bereitgestellt, um geheime Schlüssel für Back-End-Dienste zu speichern.
Skalierbarkeit
Skalierbarkeit zeigt die Fähigkeit der Workload an, die an sie gerichteten Anforderungen der Benutzer effizient erfüllen zu können. Der Mehrzonenansatz eignet sich besser für Skalierbarkeit als eine Einzelzonenbereitstellung, da die Last über Verfügbarkeitszonen hinweg verteilt wird.
Diese Architektur verfügt über mehrere Komponenten, die basierend auf Metriken automatisch skaliert werden können:
Das Anwendungsgateway unterstützt die automatische Skalierung. Weitere Informationen finden Sie unter Skalieren von Application Gateway v2 und Web Application-Firewall v2.
Azure Spring Apps unterstützt ebenfalls die automatische Skalierung. Weitere Informationen finden Sie unter Einrichten der Autoskalierung für Anwendungen.
Abhängig von Ihrer Datenbankeinrichtung kann es zu einer zusätzlichen Wartezeit kommen, wenn Daten zwischen Zonen synchronisiert werden müssen.
Netzwerksicherheit
Schützen Sie Ihre Anwendung vor unbefugtem Zugriff aus dem Internet, vor Systemen in privaten Netzwerken, vor anderen Azure-Dienste und vor manchen eng gekoppelten Abhängigkeiten.
Virtual Network ist der Grundbaustein für ein privates Netzwerk in Azure. Diese Architektur verwendet ein virtuelles Netzwerk für die Region der Bereitstellung. Platzieren Sie Komponenten in Subnetzen, um eine weitere Isolierung zu erstellen. Azure Spring Apps erfordert ein dediziertes Subnetz für die Dienstlaufzeit sowie ein separates Subnetz für Java Spring Boot-Anwendungen.
Außerdem sollten Sie Ihre virtuellen Netzwerke mit Azure DDoS Protection schützen. DDoS Protection (Distributed Denial of Service), kombiniert mit bewährten Anwendungsentwurfsmethoden, bietet eine erweiterte Entschärfung und schützt so vor DDoS-Angriffen.
Das Architekturdesign enthält mehrere Plattform-as-a-Service-Lösungen (PaaS), die bei der Verarbeitung einer Benutzeranfrage helfen. Für diese Dienste sollten strenge Netzwerkkontrollen durchgeführt werden, um sicherzustellen, dass die Anwendung nicht beeinträchtigt wird.
Private Konnektivität
Verwenden Sie private Endpunkte oder Netzwerkintegration, um Kommunikation von Azure Spring Apps zu unterstützenden Diensten wie Key Vault und Azure Database für MySQL bereitzustellen.
Verwenden Sie private Endpunkte, um den Zugriff zu steuern. Diese Netzwerkschnittstellen verwenden private IP-Adressen, um die Dienste in das virtuelle Netzwerk zu übergeben. Die Architektur verfügt über Azure-Dienste, welche die privaten Endpunkte automatisch einrichten.
Stellen Sie Azure Spring Apps über den Virtuellen Netzwerkeinfügungsprozess im Netzwerk bereit. Der Zugriff auf die Anwendung erfolgt durch Erreichen der privaten IP-Adresse.
Auch die Datenbank folgt einem ähnlichen Modell. Der flexible Serverbereitstellungsmodus von Azure Database für MySQL unterstützt die Integration virtueller Netzwerke über ein dediziertes Subnetz.
Andere Dienste, z. B. Key Vault, sind über private Verbindungen mit dem virtuellen Netzwerk verbunden. Für Private Verbindungen müssen Sie einen privaten Endpunkt aktivieren, um den Zugriff auf öffentliche Netzwerke zu deaktivieren. Weitere Informationen finden Sie unter Integrieren von Key Vault mit privatem Link.
Private Endpunkte erfordern kein dediziertes Subnetz, es empfiehlt sich jedoch, sie in einem separaten Subnetz zu platzieren. Die privaten IP-Adressen für die privaten Endpunkte werden aus diesem Subnetz zugewiesen.
Der private Endpunkt und die in das Netzwerk integrierten Verbindungen verwenden eine Zone mit privatem Azure-DNS.
Steuerelemente für den Datenverkehrsfluss
Bei dieser Architektur sind eingehende Anforderungen nur über den öffentlichen Endpunkt zulässig, der vom Anwendungsgateway verfügbar gemacht wird. Der Datenverkehr muss trotzdem noch überprüft werden, um Exploits und Sicherheitsrisiken zu blockieren. Die Web Application Firewall auf Application Gateway verfolgt OWASP-Sicherheitsrisiken nach. Eingehender Datenverkehr wird basierend auf den konfigurierten Regeln mit einer zu befolgenden Aktion überprüft.
Die Azure Spring Apps-Instanz verfügt über einen internen Lastenausgleich, der Datenverkehr an die Back-End-Dienste weiterleitet und verteilt. Der Lastenausgleich ist so konfiguriert, dass er Datenverkehr nur von Application Gateway akzeptiert.
Die Anwendung muss möglicherweise über das öffentliche Internet eine Verbindung mit anderen Endpunkten herstellen. Um diesen Flow einzuschränken, sollten Sie Azure Firewall im ausgehenden Pfad platzieren.
Reverseproxyeinrichtung
Diese Lösung verwendet Application Gateway als Reverseproxy. Aber Sie können unterschiedliche Reverseproxys vor Azure Spring Apps verwenden. Sie können Application Gateway mit Azure Front Door kombinieren oder Azure Front Door anstelle von Application Gateway verwenden.
Informationen zu Reverseproxyszenarien, zu deren Einrichtung und den zugehörigen Sicherheitsüberlegungen finden Sie unter Verfügbarmachen von Azure Spring Apps über einen Reverseproxy.
Identitäts- und Zugriffsverwaltung
Zusätzlich zur Verwendung von Netzwerksteuerelementen stärken Sie den Sicherheitsstatus durch die Verwendung der Identität als Umkreis.
Die Anwendung sollte sich selbst authentifizieren, wenn sie eine Verbindung mit den Back-End-Diensten herstellt, z. B. wenn sie Geheimnisse aus dem Schlüsseltresor abrufen muss. Der empfohlene Ansatz in der Anwendung ist es, verwaltete Microsoft Entra-Identitäten für Azure-Ressourcen zu aktivieren. Diese Konfigurationsmethode weist der Anwendung eine Identität zu, sodass sie Microsoft Entra-ID-Token abrufen kann, wodurch der Aufwand für die Verwaltung von Anmeldeinformationen verringert wird.
Diese Architektur verwendet systemseitig zugewiesene verwaltete Identitäten für verschiedene Interaktionen.
Die Back-End-Dienste sollten den Zugriff auf den Dienstprinzipal zulassen, der der verwalteten Identität zugeordnet ist. Der Dienst sollte für bestimmte Aktionen Mindestrichtlinien für den Zugriff definieren. In dieser Architektur wird Key Vault verwendet, um der Anwendung Zugriff auf geheime Schlüssel, Zertifikate und Schlüssel zu gewähren.
Verwaltung von Geheimnissen
Diese Architektur speichert die Anwendungsgeheimnisse und -zertifikate in einem einzelnen Schlüsseltresor. Da Anwendungsgeheimnisse und die Zertifikate für die Beibehaltung des Hostnamens unterschiedliche Probleme sind, sollten Sie diese Elemente in separaten Schlüsseltresoren speichern. Dieser alternative Ansatz fügt Ihrer Architektur einen weiteren Schlüsseltresor hinzu.
Monitoring
Azure Monitor ist eine Überwachungslösung für die Sammlung, Analyse und Reaktion auf die Überwachung von Daten aus Ihren Cloudumgebungen und lokalen Umgebungen.
Fügen Sie Ihrer Anwendung eine Instrumentierung hinzu, um Protokolle und Metriken auf Codeebene auszugeben. Erwägen Sie die verteilte Ablaufverfolgung zu aktivieren, um Einblicke in verschiedene Dienste innerhalb der Azure Spring Apps-Instanz zu bieten. Verwenden Sie ein Tool zur Anwendungsleistungsverwaltung (Application Performance Management, APM), um Protokolle und Metrikdaten zu sammeln. Der Java-Agent für Azure Monitor von Azure Application Insights ist dabei eine gute Wahl als APM-Tool.
Verwenden Sie die Plattformdiagnose, um Protokolle und Metriken von allen Azure-Diensten abzurufen, z. B. Azure-Datenbank für MySQL. Integrieren Sie alle Daten in Azure Monitor-Protokolle, um End-to-End-Einblicke in Ihre Anwendung und die Plattformdienste zu erhalten.
Der Azure Log Analytics-Arbeitsbereich ist die Überwachungsdatensenke, die Protokolle und Metriken aus den Azure-Ressourcen und Application Insights sammelt. Diese Protokollierungslösung bietet Sichtbarkeit, wodurch Automatisierungsprozesse die Skalierung von Komponenten in Echtzeit unterstützen. Die Analyse von Protokolldaten kann auch Ineffizienzen im Anwendungscode aufdecken. Sie können diese dann beheben, um Kosten zu senken und die Leistung zu verbessern.
Anleitungen zur Spring App-spezifischen Überwachung finden Sie unter End-to-End-Überwachung von Anwendungen und Überwachung mit Dynatrace Java OneAgent.
Automatisierte Bereitstellung
Automatisieren Sie Ihre Infrastrukturbereitstellung und Anwendungscodebereitstellungen so weit wie möglich.
Die Automatisierung von Infrastrukturbereitstellungen garantiert, dass die Infrastruktur identisch konfiguriert ist, was hilft, potentielle Konfigurationsabweichungen, z. B. zwischen Umgebungen, zu vermeiden. Sie können auch die Infrastrukturautomatisierung verwenden, um Failovervorgänge zu testen.
Sie können für Ihre Anwendungen auch eine Blau/Grün- oder Canary-Bereitstellungsstrategie verwenden.
Überlegungen
Diese Überlegungen beruhen auf den Säulen des Azure Well-Architected Frameworks, d. h. einer Reihe von Grundsätzen, mit denen die Qualität von Workloads verbessert werden kann. Weitere Informationen finden Sie unter Microsoft Azure Well-Architected Framework.
Die folgenden Überlegungen enthalten Anleitungen für die Implementierung der Säulen des Azure Well-Architected Framework im Kontext dieser Architektur.
Zuverlässigkeit
Zuverlässigkeit stellt sicher, dass die Anwendung Ihre Verpflichtungen gegenüber den Kunden erfüllen kann. Weitere Informationen finden Sie in der Überblick über die Säule „Zuverlässigkeit“.
Implementieren Sie die folgenden Vorschläge, um eine zuverlässigere Anwendung zu erstellen:
Verwenden Sie eine Blau/Grün-Bereitstellung, um ein Rollback auf einen vorherigen fehlerfreien Zustand zu ermöglichen, wenn kritische Probleme auftreten.
Richten Sie die automatische Skalierung für Anwendungen ein, damit Ihre Anwendung bei Bedarfsänderungen bessere Leistung erbringen kann.
Aktivieren Sie das ordnungsgemäße Herunterfahren des Spring Boot-Webs und konfigurieren Sie die ordnungsgemäße Beendigung von Azure Spring Apps, um Prozesse, die in der App-Instanz ausgeführt werden, zu zum Anhalten zu zwingen.
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“.
Implementieren Sie die folgenden Vorschläge zum Erstellen einer sichereren Anwendung:
Verwenden Sie ausgereifte Identitäts- und Zugriffsverwaltungslösungen (IAM) wie z. B. Microsoft Entra ID. Aktivieren der Multi-Faktor-Authentifizierung. Weitere Informationen finden Sie unter:
Vermeiden Sie, wenn möglich, die Verwendung von Kennwörtern. Weitere Informationen finden Sie unter:
Empfehlungen zum Sichern Ihrer Azure Spring-App finden Sie unter Azure-Sicherheitsgrundwerte für Azure Spring Apps.
Kostenoptimierung
Bei der Kostenoptimierung geht es um 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“.
Für diese Architektur sollten Sie höhere Kosten erwarten, da Sie Komponenten in mehreren Zonen bereitstellen. Anstelle einer Instanz von Azure Spring Apps werden zwei oder sogar drei Instanzen ausgeführt. Es fallen jedoch keine zusätzlichen Kosten für das Aktivieren der Zonenredundanz für den Dienst an. Weitere Informationen finden Sie unter Azure Spring Apps: Preise.
Berücksichtigen Sie die folgenden Implementierungsoptionen, um die Kosten zu berücksichtigen:
Sie können verschiedene Anwendungen und Anwendungstypen in einer einzelnen Instanz von Azure Spring Apps bereitstellen. Durch die Bereitstellung mehrerer Anwendungen werden die Kosten der zugrunde liegenden Infrastruktur anwendungsübergreifend verteilt.
Azure Spring Apps unterstützt die automatische Skalierung von Anwendungen, die durch Metriken oder Zeitpläne ausgelöst wird. Dies kann die Auslastung und Kosteneffizienz verbessern.
Sie können Application Insights in Azure Monitor verwenden, um Betriebskosten zu senken. Die kontinuierliche Überwachung kann dazu beitragen, Probleme schneller zu beheben sowie Kosten und Leistung zu verbessern.
Wählen Sie die beste Preisstufe basierend auf Ihren Anforderungen aus:
Verwenden Sie die automatische Skalierung für Anwendungen, um je nach Bedarf nach oben und unten zu skalieren.
Geschätzte Kosten der Dienste für diese Architektur finden Sie im Azure-Preisrechner. Diese Schätzung verwendet angemessene Standardwerte für eine kleine Anwendung. Sie können diese Schätzung basierend auf den für Ihre Anwendung erwarteten Durchsatzwerten aktualisieren.
Optimaler Betrieb
Die Säule „Optimaler Betrieb“ deckt die Betriebsprozesse ab, die für die Bereitstellung einer Anwendung und deren Ausführung in der Produktion sorgen. Weitere Informationen finden Sie unter Übersicht über die Säule „Optimaler Betrieb“.
Implementieren Sie zusätzlich zu den zuvor behandelten Überwachungsanleitungen die folgenden Vorschläge, die Ihnen bei der Bereitstellung und Überwachung Ihrer Anwendung helfen.
Automatisieren Sie Anwendungsbereitstellungen mithilfe von Azure DevOps oder GitHub-Aktionen.
Überwachen von Azure Spring Apps mithilfe von Protokollen, Metriken und Ablaufverfolgung.
Überwachen von Metriken in der Azure-Datenbank für PostgreSQL mithilfe von Flexibler Server.
Verwenden Sie Azure Managed Grafana, um Anwendungs- und Infrastruktur-Telemetriedaten in Echtzeit anzuzeigen und zu analysieren.
Effiziente Leistung
Leistungseffizienz ist die Fähigkeit Ihrer Workload, auf effiziente Weise eine den Anforderungen der Benutzer entsprechende Skalierung auszuführen. Weitere Informationen finden Sie unter Übersicht über die Säule „Leistungseffizienz“.
Implementieren Sie die folgenden Vorschläge, um eine effizientere Anwendung zu erstellen:
Manuelles oder automatisches Skalieren von Apps.
Bereitstellen dieses Szenarios
Befolgen Sie die schrittweisen Anleitungen in der Referenzarchitektur für Azure Spring Apps mit mehreren Zonen, um diese Architektur bereitzustellen. Die Bereitstellung verwendet Terraform-Vorlagen.
Beitragende
Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:
Hauptautor:
- Gitte Vermeiren | FastTrack for Azure Engineer
Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.
Nächste Schritte
- Schnellstart: Bereitstellen Ihrer ersten Web-App in Azure Spring Apps
- Was sind verwaltete Identitäten für Azure-Ressourcen?