Vorgehensweise bei zuverlässigen und robusten Cloud-Topologien

Die Architektur einer zuverlässigen Anwendung in der Cloud unterscheidet sich in der Regel von einer herkömmlichen Anwendungsarchitektur. In der Vergangenheit haben Sie möglicherweise redundante High-End-Hardware erworben, um die Wahrscheinlichkeit eines Ausfalls einer gesamten Anwendungsplattform zu minimieren. In der Cloud ist es wichtig, im Voraus zu bestätigen, dass Fehler auftreten. Anstatt Fehler insgesamt zu vermeiden, besteht das Ziel darin, die Auswirkungen einer einzelnen fehlerhaften Komponente (SPOF) zu minimieren. Befolgen Sie diese Best Practices, um die Zuverlässigkeit in jedem Schritt Ihres Entwurfsprozesses zu erhöhen.

Zuverlässige Anwendungen:

  • Sorgen Sie für eine angemessene und zuverlässige Wiederherstellung nach Fehlern und arbeiten Sie weiterhin mit minimaler Ausfallzeit und Datenverlust vor vollständiger Wiederherstellung.
  • Hochverfügbar (HA) und laufen wie konstruiert in einem gesunden Zustand ohne nennenswerte Ausfallzeiten.
  • Schutz vor Regionsausfällen durch ein gutes Disaster Recovery-(DR-)Design.

Für die Erstellung einer zuverlässigen Anwendung ist es unerlässlich, die Zusammenarbeit dieser Elemente und ihre Auswirkungen auf die Kosten zu verstehen. Damit können Sie feststellen, wie viel Ausfallzeit akzeptabel ist, welche Kosten für Ihr Unternehmen entstehen können und welche Funktionen während einer Wiederherstellung erforderlich sind.

Architektur für Zuverlässigkeit

Verwenden Sie beim Erstellen einer Cloud-Anwendung Folgendes, um die Zuverlässigkeit zu erhöhen.

  1. Auf dieser Seite definieren Sie die Anforderungen.

    Definieren Sie Ihre Verfügbarkeits- und Recovery-Anforderungen basierend auf den Workloads, die Sie in die Cloud und die Geschäftsanforderungen aufnehmen.

  2. Best Practices für die Architektur anwenden.

    Befolgen Sie bewährte Vorgehensweisen, identifizieren Sie mögliche Fehlerpunkte in der Architektur und bestimmen Sie, wie die Anwendung auf Fehler reagiert.

  3. Testen Sie mit Simulationen und erzwungenen Failover.

    Simulieren Sie Fehler, lösen Sie erzwungene Failover aus, und testen Sie die Erkennung und das Recovery dieser Fehler.

  4. Stellen Sie Anwendungen konsistent bereit.

    Stellen Sie die Produktion mit zuverlässigen und wiederholbaren Prozessen frei und automatisieren Sie sie nach Möglichkeit.

  5. Überwachen Sie den Anwendungszustand.

    Erkennen Sie Fehler, überwachen Sie Indikatoren für potenzielle Fehler, und bewerten Sie den Zustand Ihrer Anwendungen.

  6. Fehler und Katastrophen verwalten

    Ermitteln Sie, wann ein Fehler auftritt, und legen Sie anhand festgelegter Strategien fest, wie der Fehler behoben werden kann.

Anforderungen definieren

Definieren Sie Ihre Verfügbarkeits- und Recovery-Anforderungen basierend auf den Workloads, die Sie in die Cloud und die Geschäftsanforderungen aufnehmen.

Beachten Sie Folgendes, wenn Sie Ihre Geschäftsanforderungen identifizieren und Ihren Zuverlässigkeitsplan mit ihnen abgleichen:

  • Identifizieren von Workloads und deren Anforderungen

    Eine Workload ist eine eindeutige Funktion oder Aufgabe, die in Bezug auf die Anforderungen an Geschäftslogik und Datenspeicherung logisch von anderen Workloads getrennt ist. Jede Workload bietet unterschiedliche Anforderungen an Verfügbarkeit, Skalierbarkeit, Datenkonsistenz und Disaster Recovery.

  • Verwendungsmuster bestimmen

    Die Verwendung einer Anwendung spielt eine Rolle bei Anforderungen. Ermitteln Sie Unterschiede bei den Anforderungen während kritischer und nicht kritischer Perioden. Beispiel: Eine Anwendung, die die Verarbeitung am Monatsende verarbeitet, kann während des Monats nicht fehlschlagen, kann jedoch zu anderen Zeiten einen Fehler behandeln. Zur Sicherstellung der Betriebszeit können zusätzliche Komponenten oder Redundanz während kritischer Zeiträume hinzugefügt und entfernt werden, wenn sie keinen Wert mehr hinzufügen.

  • Kritische Komponenten und Pfade identifizieren

    Nicht alle Systemkomponenten sind möglicherweise so wichtig wie andere. Beispiel: Sie verfügen über eine optionale Komponente, die einen inkrementellen Wert hinzufügt, die Workload jedoch bei Bedarf nicht ausgeführt werden kann. Erfahren Sie, wo sich diese Komponenten befinden und wo die kritischen Teile Ihrer Workload liegen. Dadurch können Sie Ihre Verfügbarkeits- und Zuverlässigkeitsmetriken erweitern und Ihre Recovery-Strategien planen, um die wichtigsten Komponenten zu priorisieren.

  • Externe Abhängigkeiten und Auswirkungen von nachgelagerten Fehlern identifizieren

    Wenn Ihre Workload von externen Services abhängt, kann sich ein Fehler in diesen Abhängigkeiten negativ auf die Verfügbarkeit der Workload auswirken. Implementieren Sie Methoden zur Entkopplung der Integration, um gegen nachgelagerte Ausfälle zu isolieren.

  • Verfügbarkeitsanforderungen für Workload bestimmen

    Hochverfügbarkeit (HA) wird normalerweise im Sinne eines Ziels für die Hochverfügbarkeit definiert. Ein 99 % HA-Ziel bedeutet, dass eine bestimmte Ressource für 3.65 Tage im Jahr nicht verfügbar sein kann. Oracle Cloud Infrastructure (OCI) ist so konzipiert, dass Sie eine hochverfügbare Umgebung erhalten. OCI veröffentlicht ein Service Level Agreement (SLA) für jeden seiner Services, in dem die Verpflichtungen von Oracle hinsichtlich Verfügbarkeit und Konnektivität zu diesen Services beschrieben werden. Sie sollten diese Services prüfen, um festzustellen, wie sie Ihren Anforderungen entsprechen. Einige Services auf OCI verfügen über hohe HA-Niveaus, insbesondere von Oracle verwaltete Services wie die autonome Datenbank. Um sicherzustellen, dass eine Anwendungsarchitektur Ihren Geschäftsanforderungen entspricht, definieren Sie Ziel-SLAs für jede Workload einschließlich externer Abhängigkeiten. Berücksichtigen Sie neben Anwendungsabhängigkeiten auch die Kosten und Komplexität der Erfüllung von Verfügbarkeitsanforderungen.

  • Legen Sie Ihre Recovery-Metriken fest: Recovery Time Object (RTO) und Recovery Point Object (RPO)

    RTO ist die maximal zulässige Zeit, die eine Anwendung nach einem Katastrophenfall nicht mehr verfügbar sein kann.

    RPO ist die maximale Dauer des Datenverlusts, die während einer Katastrophe akzeptabel ist.

    Um diese Werte abzuleiten, führen Sie eine Risikobewertung durch und stellen sicher, dass Sie die Kosten und das Risiko von Ausfallzeiten oder Datenverlust in Ihrem Unternehmen verstehen.

  • Katastrophe definieren

    Es ist wichtig, gut dokumentierte Disaster-Recovery-Pläne und -Anforderungen zu haben, aber die chaotische Natur einer solchen Veranstaltung kann Verwirrung schaffen. Verstehen Sie, was eine Katastrophe für Ihr Unternehmen darstellt, identifizieren Sie wichtige Rollen, die während einer Katastrophe erforderlich sein werden, und erstellen Sie einen gut definierten Kommunikationsplan, um eine Katastrophenreaktion zu initiieren.

Best Practices für Architekturen anwenden

Konzentrieren Sie sich beim Design Ihrer Architektur auf die Implementierung von Übungen, die Ihren Geschäftsanforderungen entsprechen, identifizieren Sie Fehlerpunkte, und minimieren Sie den Umfang der Fehler.

Beachten Sie die folgenden Best Practices:

  • Ermitteln, wo Fehler auftreten können

    Analysieren Sie Ihre Architektur, um die Art von Fehlern zu identifizieren, die bei Ihrer Anwendung auftreten können, die potenziellen Auswirkungen jeder Anwendung und mögliche Recovery-Strategien.

  • Bestimmen Sie die erforderliche Redundanzstufe basierend auf Ihren HA- und DR-Anforderungen.

    Die Redundanzstufe, die für jede Workload erforderlich ist, hängt von Ihren Geschäftsanforderungen und Faktoren in Bezug auf die Gesamtkosten Ihrer Anwendung ab.

  • Entwicklung für Skalierbarkeit

    Eine Cloud-Anwendung muss skalierbar sein, um Nutzungsänderungen zu berücksichtigen. Beginnen Sie mit diskreten Komponenten, und entwerfen Sie die Anwendung so, dass sie automatisch auf Ladeänderungen reagiert, wenn möglich. Berücksichtigen Sie Skalierungslimits beim Entwurf, damit Sie sich in Zukunft leicht erweitern können.

  • Load Balancing zum Verteilen von Anforderungen verwenden

    Load Balancing verteilt die Anforderungen Ihrer Anwendung auf fehlerhafte Serviceinstanzen, indem nicht fehlerhafte Instanzen aus der Rotation entfernt werden. Durch das Externalisieren von Statusinformationen wird die Backend-Skalierung für den Endbenutzer transparent. Wenn der Status in der Session verfolgt wird, ist möglicherweise Stickiness erforderlich.

  • Erstellen Sie Verfügbarkeits- und Resilienzanforderungen in Ihrem Design

    Kompetenz ist die Fähigkeit eines Systems, nach Fehlern wiederherzustellen und weiter zu funktionieren. Verfügbarkeit ist der Anteil der Zeit, den Ihr System funktions- und funktionsfähig ist. Implementieren Sie Best Practices mit hoher Verfügbarkeit, wie die Vermeidung einzelner Fehlerpunkte und die Zersetzung von Workloads nach Service-Level-Ziel. Nutzen Sie die Standardfunktionen Ihrer Datenschicht, wie die Anwendungskontinuität und asynchrone Transaktionen, um Verfügbarkeit und Resilienz zu gewährleisten.

  • DR implementieren

    Entwerfen Sie Ihre Lösung, um die ermittelten RTO- und RPO-Anforderungen zu erfüllen. Stellen Sie sicher, dass Sie alle Komponenten Ihrer DR-Lösung in Ihrem RTO online setzen können. Schützen Sie Ihre Daten, damit Sie Ihr RPO erfüllen können. Wie Sie Daten speichern, sichern und replizieren, ist entscheidend.

    • Backup Ihrer Daten

      Selbst bei einer vollständig replizierten DR-Umgebung sind regelmäßige Backups immer noch wichtig. Sichern und validieren Sie Daten regelmäßig, und stellen Sie sicher, dass kein Benutzeraccount Zugriff auf Produktions- und Backupdaten hat.

    • Replikationsmethoden für Ihre Anwendungsdaten auswählen

      Ihre Anwendungsdaten werden in verschiedenen Datenspeichern gespeichert und können unterschiedliche Verfügbarkeitsanforderungen erfüllen. Bewerten Sie die Replikationsmethoden und Speicherorte für jeden Datenspeichertyp, um sicherzustellen, dass sie Ihren HA-Anforderungen und RPO entsprechen.

    • Verstehen der Auswirkungen von Überfällen und Auswirkungen auf die Katastrophenbereitschaft

      Müssen Sie eine andere Region für die Replikation instanziieren, um Ihre Workload-Anforderungen zu erfüllen? Müssen Sie sich um Datenkonsistenz bei Failback sorgen?

    • Failover- und Failback-Prozesse dokumentieren und testen

      Dokumentieren Sie Anweisungen, um ein Failover zu einem neuen Datenspeicher vorzunehmen, und testen Sie sie regelmäßig, um sicherzustellen, dass sie korrekt und einfach zu befolgen sind.

    • Stellen Sie sicher, dass Ihr Datenwiederherstellungsplan Ihre RTO erfüllt

      Stellen Sie sicher, dass Ihre Backup- und Replikationsstrategie Datenwiederherstellungszeiten vorsieht, die sowohl Ihrem RTO als auch Ihrem RPO entsprechen. Berücksichtigen Sie alle Datentypen, die Ihre Anwendung verwendet, einschließlich Referenzdaten, Dateien und Datenbanken.

Tests mit Simulationen und erzwungenen Fehlern

Bei der Prüfung auf Zuverlässigkeit muss gemessen werden, wie die End-to-End-Workload unter Fehlerbedingungen ausführt, die nur intermittierend auftreten.

  • Auf allgemeine Fehlerszenarios testen, indem tatsächliche Fehler ausgelöst oder simuliert werden

    Verwenden Sie Fault-Injection-Tests, um gängige Szenarios (einschließlich Fehlerkombinationen) und Recovery-Zeit zu testen.

  • Fehler erkennen, die nur unter Last auftreten

    Testen Sie die Spitzenlast anhand von Produktionsdaten oder synthetischen Daten, die möglichst nahe an den Produktionsdaten liegen, um zu sehen, wie sich die Anwendung unter realen Bedingungen verhält.

  • Führen Sie Disaster Recovery-Protokolle aus

    Erstellen Sie einen Disaster-Recovery-Plan, und testen Sie ihn regelmäßig, um sicherzustellen, dass er funktioniert.

  • Failover- und Failback-Tests ausführen

    Stellen Sie sicher, dass die abhängigen Services der Anwendung überschrieben und in der richtigen Reihenfolge nicht erfolgreich ausgeführt werden.

  • Simulationstests ausführen

    Durch das Testen von realen Szenarien können Probleme hervorgehoben werden, die behoben werden müssen. Szenarien sollten steuerbar und für das Unternehmen unterbrechungsfrei sein. Informiertes Management von Simultestplänen.

  • Health Probes testen

    Konfigurieren Sie Integritätsprüfungen für Load Balancer und Traffic Manager, um wichtige Systemkomponenten zu prüfen. Testen Sie sie, um sicherzustellen, dass sie angemessen reagieren.

  • Testüberwachungssysteme

    Stellen Sie sicher, dass Überwachungssysteme zuverlässige Berichte zu kritischen Informationen und genauen Daten liefern, damit potenzielle Fehler erkannt werden.

  • Drittanbieter-Services in Testszenarien einbeziehen

    Testen Sie mögliche Fehlerpunkte aufgrund von Serviceunterbrechungen Dritter zusätzlich zur Wiederherstellung.

  • Aus Problemen lernen, die während Tests aufgetreten sind

    Wenn Tests Probleme oder Lücken erkennen, stellen Sie sicher, dass sie identifiziert und behoben werden, indem Sie zusätzliche Überwachungs- oder Anpassungsvorgänge hinzufügen.

Anwendungen konsistent bereitstellen

Das Deployment umfasst das Provisioning von Oracle Cloud Infrastructure-(OCI-)Services und -Ressourcen, das Deployment von Anwendungscode und das Anwenden von Konfigurationseinstellungen. Eine Aktualisierung kann alle drei Aufgaben oder eine Untergruppe davon umfassen.

  • Automatisieren Sie Ihren Anwendungsbereitstellungsprozess

    Automatisieren Sie so viele Prozesse wie möglich. Wenn möglich sollten manuelle Deployments in der Produktion beseitigt werden, obwohl dies in niedrigeren Umgebungen akzeptabel sein kann, um Geschwindigkeit und Flexibilität zu fördern.

  • Nutzen Sie die Automatisierung, um Ihren Code vor der Bereitstellung zu testen

    Tests auf Bugs, Sicherheitslücken, Funktionalität, Performance und Integrationen sind entscheidend, um Probleme zu minimieren, die Endbenutzer erkennen. Testfehler sollten verhindern, dass Code in die Produktion freigegeben wird.

  • Entwerfen Sie Ihren Freigabeprozess, um die Verfügbarkeit zu maximieren

    Wenn für Ihren Releaseprozess Services während des Deployments offline gesetzt werden müssen, ist Ihre Anwendung erst verfügbar, wenn sie wieder online sind. Profitieren Sie von Plattform-Staging- und Produktionsfunktionen. Wenn möglich, geben Sie neue Deployments für eine Teilmenge von Benutzern frei, um frühstündige Fehler zu überwachen.

  • Rollback-Plan für Deployment

    Entwerfen Sie einen Rollback-Prozess, um zu einer letzten bekannten fehlerhaften Version zurückzukehren und Ausfallzeiten zu minimieren. Die Automatisierung des Rollbacks bei nicht erfolgreichem Deployment kann unnötige Ausfallzeiten verhindern.

  • Log- und Audit-Deployments

    Wenn Sie bereitgestellte Deployment-Verfahren verwenden, wird mehr als eine Version der Anwendung in der Produktion ausgeführt. Implementieren Sie eine robuste Loggingstrategie, um möglichst viele versionsspezifische Informationen zu erfassen.

  • Anwendungsfreigabeprozess dokumentieren

    Definieren und dokumentieren Sie Ihren Freigabeprozess, und stellen Sie sicher, dass er für das gesamte Betriebsteam verfügbar ist.

Anwendungszustand überwachen

Implementieren Sie Best Practices für das Monitoring und Warnungen in Ihrer Anwendung, damit Sie Fehler erkennen und einen Benutzer darauf aufmerksam machen können, diese zu beheben.

  • Verfolgung von Serviceaufrufen implementieren

    Basisplandaten können dabei helfen, Trenddaten bereitzustellen, mit denen Performanceprobleme proaktiv identifiziert werden können, bevor sie sich auf die Benutzer auswirken.

  • Integritätsprüfungen implementieren

    Führen Sie sie regelmäßig von außerhalb der Anwendung aus, um eine Beeinträchtigung der Anwendungsintegrität und -performance zu erkennen. Diese Sonden sollten mehr sein als nur statische Seitentests, sie sollten die ganzheitliche Anwendungsintegrität widerspiegeln.

  • Prüfen Sie Workflows mit langer Ausführungszeit

    Die frühzeitige Behebung von Problemen kann die Notwendigkeit, den gesamten Workflow zurückzusetzen oder mehrere Vergütungstransaktionen auszuführen, minimieren.

  • System-, Anwendungs- und Auditprotokolle verwalten

    Nutzen Sie einen zentralen Logging-Service zum Speichern Ihrer Logs.

  • Frühwarnsystem einrichten

    Identifizieren Sie die Key Performance Indicators (KPIs) für den Zustand einer Anwendung, wie vorübergehende Ausnahmen und Remote Call Latenzzeiten, und legen Sie für jede Anwendung entsprechende Schwellenwerte fest. Senden Sie einen Alert an Vorgänge, wenn der Schwellenwert erreicht ist.

  • Trainieren Sie mehrere Operatoren, um die Anwendung zu überwachen und manuelle Wiederherstellungsschritte auszuführen

    Stellen Sie sicher, dass immer mindestens ein geschulter Operator aktiv ist.

Fehler und Katastrophen verwalten

Erstellen Sie einen Wiederherstellungsplan, und stellen Sie sicher, dass er Datenwiederherstellungen, Netzwerkausfälle, abhängige Serviceausfälle und regionale Serviceunterbrechungen abdeckt. Berücksichtigen Sie Ihre VMs, Speicher, Datenbanken und andere OCI-Services in Ihrer Wiederherstellungsstrategie.

  • Planung von OCI-Support-Interaktionen

    Stellen Sie vor Bedarf einen Prozess zur Kontaktaufnahme mit OCI Support her.

  • Dokumentieren und Testen des Disaster Recovery-Plans

    Erstellen Sie einen Disaster Recovery-Plan, der die Auswirkungen von Anwendungsfehlern auf das Geschäft widerspiegelt. Automatisieren Sie den Recovery-Prozess so weit wie möglich, und dokumentieren Sie alle manuellen Schritte. Testen Sie regelmäßig Ihren Disaster Recovery-Prozess, um den Plan zu validieren und zu verbessern.

  • Wichtige Rollen für die DR-Koordination verstehen

    Stellen Sie sicher, dass die DR-Bemühungen gut koordiniert sind und Anwendungen basierend auf dem geschäftlichen Nutzen priorisiert werden.

  • Auf Anwendungsfehler vorbereiten

    Bereiten Sie eine Reihe von Fehlern vor, einschließlich automatisch gehandelten Fehlern, Fehlern, Fehlern, die zu verringerter Funktionalität führen, und solche, die dazu führen, dass die Anwendung nicht mehr verfügbar ist. Die Anwendung sollte die Nutzer über vorübergehende Probleme informieren.

  • Recovery bei Datenbeschädigung

    Wenn ein Fehler in einem Datenspeicher auftritt, prüfen Sie auf Dateninkonsistenzen, wenn der Speicher wieder verfügbar wird, insbesondere wenn die Daten repliziert wurden. Stellen Sie beschädigte Daten aus einem Backup wieder her.

  • Wiederherstellung aus einem Netzwerkausfall

    Möglicherweise können Sie gecachte Daten verwenden, um lokal mit reduzierter Anwendungsfunktionalität auszuführen. Andernfalls sollten Sie Anwendungsausfallzeiten oder Failover in eine andere Region in Betracht ziehen. Speichern Sie Ihre Daten an einem alternativen Speicherort, bis die Konnektivität wiederhergestellt ist.

  • Recovery nach einem abhängigen Servicefehler

    Legen Sie fest, welche Funktionalität weiterhin verfügbar ist und wie die Anwendung reagieren soll.

  • Recovery nach einer regionalen Serviceunterbrechung

    Regionale Serviceunterbrechungen sind gelegentlich, aber Sie sollten eine Strategie zur Bewältigung dieser Probleme haben, insbesondere bei kritischen Anwendungen. Möglicherweise können Sie die Anwendung in einer anderen Region erneut bereitstellen oder den Datenverkehr neu verteilen.

  • Aus DR-Tests lernen und Prozesse verbessern

    Stellen Sie sicher, dass bei DR-Tests aufgetretene Probleme erfasst werden, und planen, diese Probleme in zukünftigen Tests oder Failover zu beheben.