Freigeben über


Zuverlässigkeits-Reifegradmodell

Die Zuverlässigkeitsreise ist ein schrittweiser Prozess, bei dem jede Phase auf dem vorherigen aufbaut, um sicherzustellen, dass Systeme verfügbar bleiben und die Erwartungen der Benutzer erfüllen. Dieses Reifemodell soll Ihnen helfen, Ihren aktuellen Zustand zu bewerten und einen strukturierten Verbesserungspfad anzubieten.

Die Grundlage beginnt mit dem Bootstrapping grundlegender Zuverlässigkeitsfunktionen von Azure, indem integrierte Azure-Zuverlässigkeitsfeatures wie Zonenredundanz verwendet werden, um sofortige Verbesserungen ohne umfangreichen Optimierungsaufwand zu erzielen.

Kontraintuitiv ist der Weg, hohe Zuverlässigkeit zu erreichen, das Akzeptieren von Fehlern als unvermeidlich. Anstatt zu versuchen, jedes Problem zu verhindern, ist es effektiver zu planen, wie Ihr System reagiert, wenn Probleme auftreten. Ihre Geschäftlichen Anforderungen helfen dabei, zu bestimmen, welche Risiken proaktiv adressiert werden müssen. Teams investieren in erweiterte Überwachungsfunktionen mit strukturierter Beobachtbarkeit, erweitern die Ausfallminderung, um Bedenken auf Anwendungsebene einzuschließen, und beginnen mit dem Testen von Resilienzmaßnahmen.

Als Nächstes integrieren Teams Geschäftseinblicke mit technischen Fähigkeiten. Teams implementieren die Integritätsmodellierung, führen Fehlermodusanalysen durch und bereiten umfassende Notfallwiederherstellungspläne vor. Diese Stufe gewährleistet die Rechenschaftspflicht durch messbare Ziele und systematische Vorbereitung auf verschiedene Fehlerszenarien.

Nachdem das System live ist, bewegt sich der Schwerpunkt auf die Verwaltung der Herausforderungen der Produktionsumgebungen, einschließlich Änderungsmanagement und Umgang mit Datenwachstum und betriebstechnischer Komplexität, und wie sich diese auf die Zuverlässigkeit Ihres Systems auswirken.

Das abschließende Level läuft endlos, und das Ziel ist es, widerstandsfähig zu bleiben. Diese Stufe stellt die Entwicklung jenseits technischer Kontrollen zur architekturtechnischen Anpassungsfähigkeit dar. Diese Stufe konzentriert sich darauf, Systemen die Möglichkeit zu geben, neuen und unvorhergesehenen Risiken standzuhalten, während Sich Arbeitslasten entwickeln und wachsen.

Das Modell ist in fünf unterschiedliche Reifestufen unterteilt, die jeweils ein konkretes Ziel und eine Reihe von Kernstrategien haben. Verwenden Sie die nachstehenden Registerkartenansichten, um die einzelnen Ebenen zu erkunden. Achten Sie außerdem darauf, die hervorgehobenen Kompromisse und die damit verbundenen Risiken während des Fortschritts zu überprüfen.

Zielsymbol Legen Sie eine solide Grundlage für die Resilienz in der Workloadinfrastruktur und im Betrieb fest, anstatt Zeit für Optimierungsaufgaben zu verbringen.

Stufe 1 des Reifemodells wurde entwickelt, um Workloadteams dabei zu helfen, eine starke Grundlage für die Systemzulässigkeit zu schaffen. Der Fokus liegt auf dem Bootstrapping, bei dem es sich um die Einrichtung der Grundlagen für zukünftige Zuverlässigkeitsentscheidungen handelt. In dieser Phase werden hauptsächlich funktionale Implementierungen mit kleineren Erweiterungen für aktuelle Praktiken berücksichtigt.

Diese Phase umfasst Die Recherche, das Gewinnen von Erkenntnissen und das Erstellen eines Inventars Ihrer Systeme. Außerdem werden integrierte Zuverlässigkeitsfeatures in Azure verwendet, z. B. das Aktivieren von Zonenredundanz für sofortige Verbesserungen.

Durch die Festlegung dieser Grundlagen können Sie Ihr Team auf die Stufen des Zuverlässigkeitsreifemodells vorbereiten, um die Resilienz und Leistung Ihres Systems schrittweise zu verbessern.

Schlüsselstrategien

• Auswerten von Möglichkeiten zum Auslagern der operativen Verantwortung

Diese Strategie ist im Grunde eine bauen gegen ein kaufen oder vertrauen Ansatz. Die Entscheidung hängt davon ab, wie viel Verantwortung in dieser Phase verwaltbar ist und gleichzeitig die zukünftige Entwicklung unterstützt. Sie möchten Ressourcen verwenden, die für die Arbeitsauslastung relevant sind, aber Sie sollten immer Möglichkeiten zum Entladen ihrer Wartung erkunden. Im Folgenden finden Sie einige klassische Anwendungsfälle, in denen Sie diesen Ansatz anwenden möchten.

  • Verlagern Sie die Verantwortung auf die Cloud-Plattform indem Sie sich für Platform-as-a-Service (PaaS)-Lösungen entscheiden. Sie bieten vorgefertigte Lösungen für allgemeine Resilienzanforderungen wie Replikation, Failover und Sicherungsspeicher. Bei diesem Ansatz übernimmt der Cloudanbieter Hosting-, Wartungs- und Resilienzverbesserungen.

    Beispielsweise repliziert der Cloudanbieter Daten über mehrere Computeknoten hinweg und verteilt die Replikate über Verfügbarkeitszonen. Wenn Sie Ihre eigene Lösung auf virtuellen Computern (VMs) erstellen, müssen Sie diese Aspekte selbst verwalten, was zeitaufwändig und komplex sein kann.

  • Verantwortlichkeiten für Betriebsabläufe auslagern, die nicht direkt an die Geschäftsziele der Workload gebunden sind. Einige spezialisierte Vorgänge, z. B. Datenbankverwaltung und Sicherheit, können sich möglicherweise auf die Zuverlässigkeit Ihrer Workload auswirken. Erkunden Sie die Möglichkeit, erfahrene Teams, Technologien oder beides einzusetzen, um diese Aufgaben zu bewältigen.

    Wenn Ihr Team beispielsweise keine Datenbankkompetenz hat, verwenden Sie verwaltete Dienste, um die Verantwortung auf den Anbieter zu verschieben. Dieser Ansatz kann nützlich sein, wenn Sie mit dem Start beginnen, da es Ihrem Team ermöglicht, sich auf die Funktionalität der Workload zu konzentrieren. Viele Unternehmen haben gemeinsame, zentral verwaltete Dienste. Wenn Plattformteams verfügbar sind, verwenden Sie sie, um diese Vorgänge zu verarbeiten. Dieser Ansatz kann jedoch Abhängigkeiten und Organisationskomplexität hinzufügen.

    Alternativ können Sie, wenn Ihr Team über die richtige Expertise verfügt, eine explizite Entscheidung treffen, ihre Fähigkeiten zu verwenden und Dienste auszuwählen, die keine Verwaltungsfunktionen enthalten.

  • Entlastung von Zuständigkeiten an Nicht-Microsoft-Anbieter. Wählen Sie Off-the-Shelf-Produkte als Ausgangspunkt aus. Erstellen Sie angepasste Lösungen nur, wenn sie zum Geschäftlichen Wert Ihrer Workload beitragen.

Risiko: Wenn die Option 'Kaufen' oder 'Vertrauen' Ihre Anforderungen nur teilweise erfüllt, müssen Sie möglicherweise benutzerdefinierte Erweiterungen implementieren. Diese Methode kann zu einer "Anpassungssperre" führen, in der Updates und Modernisierungen unpraktisch werden. Überprüfen Sie regelmäßig Ihre Anforderungen, und vergleichen Sie sie mit den Funktionen der Lösung. Entwickeln Sie eine Exit-Strategie für den Zeitpunkt, zu dem eine signifikante Abweichung zwischen den beiden besteht.

Das gegenteilige Szenario ist auch ein Risiko. Obwohl die Kauf- oder Verlassen-Option zunächst einfacher erscheinen könnte, kann es später eine erneute Auswertung und Neugestaltung erfordern, wenn die Einschränkungen des PaaS-Dienstes, der Anbieterlösung oder der plattformeigenen Ressourcen nicht die erforderliche Granularität oder das Maß an Autonomie erfüllen, die für die Workload erforderlich sind.

– Identifizieren der kritischen Benutzer- und Systemflüsse

Das Aufteilen der Arbeit in Abläufe ist in dieser Phase von entscheidender Bedeutung. Konzentrieren Sie sich auf Benutzer- und Systemflüsse . Benutzerabläufe bestimmen Benutzerinteraktionen, und Systemflüsse bestimmen die Kommunikation zwischen Workloadkomponenten, die nicht direkt mit Benutzeraufgaben verknüpft sind.

Beispielsweise führen Kunden in einer E-Commerce-Anwendung Front-End-Aktivitäten wie Browsen und Bestellen aus. In der Zwischenzeit erfüllen Back-End-Transaktionen und vom System ausgelöste Prozesse Benutzeranforderungen und verarbeiten andere Aufgaben. Diese unterschiedlichen Flüsse sind Teil desselben Systems, aber sie umfassen unterschiedliche Komponenten und dienen verschiedenen Zwecken.

Beginnen Sie in dieser Phase mit dem Erstellen eines Katalogs mit Flüssen. Beobachten Sie Benutzerinteraktionen und Komponentenkommunikation. Auflisten und Kategorisieren von Abläufen, ihre Anfangs- und Endpunkte definieren und Abhängigkeiten notieren. Dokumentieren Sie Ergebnisse und Ausnahmen mithilfe von Diagrammen zur Übersichtlichkeit. Dieser Katalog kann als wichtiges Tool für die erste Unterhaltung mit den Geschäftsbeteiligten dienen, um die wichtigsten Aspekte aus ihrer Perspektive zu identifizieren. Diese Unterhaltung kann die erste Ebene der Priorisierung informieren.

Klassifizieren Sie einen Fluss als kritisch, indem Sie das Risiko und die Auswirkungen auf primäre Geschäftsaktivitäten bewerten. Wenn Sie einen Ausfall erwarten, konzentriert sich Graceful Degradation auf die Aufrechterhaltung dieser kritischen Abläufe. Im E-Commerce-Beispiel umfassen kritische Abläufe Produktsuchen, das Hinzufügen von Artikeln zum Warenkorb und das Auschecken, da diese Aufgaben für das Unternehmen unerlässlich sind. Andere Prozesse wie das Aktualisieren von Produktdaten und die Pflege von Produktimages sind nicht so wichtig. Stellen Sie sicher, dass kritische Flüsse während eines Ausfalls betriebsbereit bleiben, um Umsatzverluste zu verhindern, indem Benutzer weiterhin nach Produkten suchen und Artikel zum Warenkorb hinzufügen können.

Hinweis

Ein Geschäftsprozess kann auch dann kritisch sein, wenn er nicht zeitempfindlich ist. Zeitkritischität ist ein wichtiger Faktor. Beispielsweise ist die Erfüllung der Überwachungsanforderungen ein wichtiger Prozess, sie müssen jedoch möglicherweise keine Daten sofort für eine Überwachung präsentieren. Der Prozess bleibt wichtig, aber seine Zuverlässigkeit ist nicht zeitkritisch, da die Wiederherstellung innerhalb weniger Stunden akzeptabel ist.

Weitere Informationen finden Sie unter Azure Well-Architected Framework: Optimieren des Workloaddesigns mithilfe von Flüssen.

– Wählen Sie das richtige Designmodell, Ressourcen und Features aus.

Sie sollten diese Strategie auf den folgenden Ebenen anwenden:

  • Architektur: Der Workloadentwurf sollte die Zuverlässigkeitserwartungen auf verschiedenen Infrastrukturebenen berücksichtigen. Ihre anfänglichen Entscheidungen können die Wahl zwischen Containerisierung oder PaaS für das Hosten der Anwendung sein. Oder Sie können Netzwerksetups wie Hub und Speichen oder ein einzelnes virtuelles Netzwerk in Betracht ziehen.

    Sie sollten auch Abgrenzungen festlegen, die eine Segmentierung basierend auf der Funktionalität ermöglichen. Statt alle Funktionen auf einem einzigen virtuellen Computer mit einem virtuellen Datenträger in nur einer Zone zu hosten, sollten Sie Rechenkapazitäten und Datenspeicherung aufteilen und spezialisierte Dienste verwenden.

    Vorsicht

    In Migrationsszenarien kann die Einführung eines Lift-and-Shift-Ansatzes ohne Überprüfung neuer Möglichkeiten zu verpassten Vorteilen und Ineffizienzen führen. Es ist wichtig, Modernisierung frühzeitig in Betracht zu ziehen, um zu vermeiden, dass Sie mit schwer änderbaren Einrichtungen hängen bleiben, und um von besseren Optionen und Verbesserungen zu profitieren.

  • Azure-Dienste: Verwenden Sie Entscheidungsstrukturen, um Ihnen bei der Auswahl der richtigen Dienste für Ihr Design zu helfen. Wählen Sie Komponenten aus, die Ihren aktuellen Anforderungen entsprechen, aber flexibel bleiben, damit Sie dienste wechseln können, während Sich Ihre Workload weiterentwickelt und mehr Features erfordert.

  • SKUs oder Ebenen innerhalb von Azure-Diensten: Überprüfen Sie die Features jeder SKU, und verstehen Sie die Verfügbarkeitsgarantien der Plattform. Bewerten Sie die Service-Level-Vereinbarungen, um die Abdeckung zu verstehen, die um den veröffentlichten Prozentsatz bereitgestellt wird.

  • Features, die Zuverlässigkeit unterstützen: Wählen Sie cloudeigene Dienste aus, um die Verfügbarkeit durch einfache Konfigurationen zu verbessern, ohne den Code zu ändern. Es ist wichtig, die Optionen zu verstehen und absichtlich Konfigurationen auszuwählen, z. B. die Erhöhung der Zonenredundanz oder das Replizieren von Daten in einen sekundären Bereich.

✓ Bereitstellen mit einem Grundmaß an Redundanz.

Vermeiden Sie in jedem Teil Ihrer Lösung einzelne Fehlerquellen, wie z. B. einzelne Instanzen. Erstellen Sie stattdessen mehrere Instanzen für Redundanz. Azure-Dienste übernehmen häufig die Handhabung der Redundanz für Sie, insbesondere bei PaaS-Diensten, die standardmäßig lokale Redundanz umfassen, sowie Optionen für ein Upgrade. Verwenden Sie vorzugsweise Zonenredundanz, um diese Instanzen über mehrere Azure-Rechenzentren hinweg zu verteilen. Wenn Dies nicht der Fall ist, stellen Sie zumindest lokale Redundanz sicher, aber diese Methode ist mit höherem Risiko verbunden. In zukünftigen Ebenen bewerten Sie, ob Ihre Zuverlässigkeitsanforderungen erfüllt werden können, indem Sie die Lösung mit georedundanten Komponenten erweitern.

Ausgleich: Ein erheblicher Kompromiss ist die erhöhte Redundanzkosten. Außerdem kann die zonenübergreifende Kommunikation Latenzen einführen. Bei Legacyanwendungen, die eine minimale Latenz erfordern, kann Redundanz die Leistung beeinträchtigen.

Risiko: Wenn eine Anwendung nicht für eine Umgebung mit mehreren Instanzen konzipiert ist, kann es mit mehreren aktiven Instanzen zu kämpfen haben, was zu inkonsistenten Daten führen kann. Wenn eine Anwendung auch für ein lokales Setup mit geringer Latenz erstellt wird, kann die Verwendung von Verfügbarkeitszonen die Leistung beeinträchtigen.

• Aktivieren von Metriken, Protokollen und Ablaufverfolgungen zum Überwachen von Flüssen

Wählen Sie plattformeigene Tools wie Azure Monitor aus, um die Sichtbarkeit von Metriken, Protokollen und Ablaufverfolgungen sicherzustellen. Verwenden Sie integrierte Features, um Warnungen für potenzielle Probleme festzulegen. Sie sollten über grundlegende Warnungen verfügen, um Benachrichtigungen zu senden und Warnungen zu erhalten. Nutzen Sie die Azure-Plattformfunktionen, die Änderungen am Integritätsstatus von Diensten angeben, z. B.:

Richten Sie Azure Monitor-Aktionsgruppen sowohl für die Infrastruktur als auch für die Anwendung ein.

Kompromiss: Während Sie weitere Protokolle sammeln, müssen Sie die zunehmende Menge verwalten, was sich auf die speicherbezogenen Kosten dieser Protokolle auswirkt. Verwenden Sie Aufbewahrungsrichtlinien, um das Volume zu verwalten. Verwenden Sie Azure Monitor, um eine tägliche Obergrenze für einen Arbeitsbereich festzulegen. Weitere Informationen finden Sie unter Konfigurationsempfehlungen für Zuverlässigkeit.

Beginnen Sie mit dem Aufbau der Überwachbarkeit auf den folgenden Ebenen.

Infrastruktur

Beginnen Sie, indem Sie Diagnoseprotokolle aktivieren und sicherstellen, dass Sie systemeigene Metriken aus Plattformkomponenten für die Analyse sammeln. Sammeln Sie Informationen zur Ressourcenauslastung, z. B. CPU, Arbeitsspeicher, Eingabe/Ausgabe und Netzwerkaktivität.

Anwendung

Sammeln Sie Metriken auf Anwendungsebene, wie z. B. Speicherverbrauch oder Anforderungslatenz, und protokollieren Sie Anwendungsaktivitäten. Führen Sie Protokollierungsvorgänge in einem Thread oder Prozess durch, der vom Hauptanwendungsthread getrennt ist. Dieser Ansatz führt nicht dazu, dass die Protokollierung die primären Aufgaben der Anwendung verlangsamt.

Überprüfen Sie auch die grundlegenden Verfügbarkeitstests in Application Insights.

Daten

Um Datenbanken auf einer grundlegenden Ebene zu überwachen, sammeln Sie wichtige Metriken, die die Datenbankressourcen ausgeben. Ähnlich wie Infrastrukturkomponenten können Sie die Ressourcennutzung im Kontext von Datenspeichern nachverfolgen, z. B. Netzwerkmetriken. Das Sammeln von Daten darüber, wie Verbindungen zusammengefasst werden, ist wichtig, um die Effizienz in späteren Phasen zu verbessern.

Zur Zuverlässigkeit ist es wichtig, Verbindungsmetriken zu verfolgen, z. B. die Überwachung aktiver und fehlgeschlagener Verbindungen. In Azure Cosmos DB wird beispielsweise ein 429-Statuscode zurückgegeben, wenn die Anzahl der Anforderungen die zugewiesenen Anforderungseinheiten überschreitet und Verbindungen fehlschlagen.

Beginnen Sie mit dem Erstellen eines Handbuchs zur Fehlerbehebung.

Fehler reichen von sporadischen und leicht verlängerten vorübergehenden Ausfällen bis hin zu katastrophalen Ausfällen.

Konzentrieren Sie sich in Ebene 1 auf Plattformfehler. Obwohl sie über Ihre Kontrolle hinausgehen, sollten Sie dennoch Strategien für die Behandlung haben. Adressieren Sie z. B. Zonenausfälle mithilfe von Verfügbarkeitszonen.For example, address zonal outages by using availability zones. Antizipieren Sie vorübergehende Fehler auf Plattformebene, und behandeln Sie sie in Ihrer Workload.

Der Prozess der Behandlung dieser Fehler variiert je nach Komplexität. Beginnen Sie mit der Dokumentation potenzieller Fehler auf Plattformebene, deren zugehörigen Risiken und Strategien zur Risikominderung. Diese Übung ist in erster Linie theoretisch und reift mit Automatisierung auf späteren Ebenen.

Sie sollten Fehler dokumentieren, einschließlich Faktoren wie Wahrscheinlichkeit, Auswirkung und Gegenmaßnahmen. Verwenden Sie einen Kritischen Maßstab, der den Zielen Ihrer Workload entspricht. Ihre Skalierung kann Folgendes umfassen:

  • Hoch. Ein vollständiger Systemausfall, der zu erheblichen finanziellen Verlusten und einem Rückgang der Benutzervertrauensstellung führt.

  • Mittel. Eine temporäre Unterbrechung, die sich auf einen Teil der Workload auswirkt und zu Unannehmlichkeiten führt.

  • Niedrig. Ein kleineres Softwareproblem, das sich auf ein nicht wesentliches Feature der Anwendung auswirkt und für Benutzer minimale Ausfallzeiten verursacht.

Hier ist eine Beispielvorlage:

Das Problem Risiko Quelle Schweregrad Wahrscheinlichkeit Abschwächung
Vorübergehender Netzwerkfehler Der Client verliert seine Verbindung mit dem Anwendungsserver. Azure Platform High Sehr wahrscheinlich Verwenden Sie Entwurfsmuster in der clientseitigen Logik, wie z. B. Wiederholungslogik und Unterbrecher.
Ausfall der Zone Der Benutzer kann die Anwendung nicht erreichen. Azure Platform High Unwahrscheinlich Aktivieren Sie die Zonenresilienz für alle Komponenten.
Ablauf des TLS-Zertifikats (Transport Layer Security) Der Client kann keine TLS-Sitzung mit der Anwendung einrichten. Menschlicher Fehler High Wahrscheinlich Verwenden Sie die automatisierte TLS-Zertifikatverwaltung.
Die CPU- oder Arbeitsspeicherauslastung erreicht definierte Grenzwerte und führt dazu, dass der Server fehlschlägt. Anforderungen sind zeitlich begrenzt. Anwendung Mittelstufe Wahrscheinlich Implementieren Sie automatische Neustarts.
Die Komponente ist während eines Updates nicht verfügbar. Der Benutzer hat einen unbehandelten Fehler in der Anwendung. Bereitstellen oder Ändern der Konfiguration Low Höchstwahrscheinlich während Bereitstellungen und zu anderen Zeiten eher unwahrscheinlich Bearbeitung von Komponenten in der client-seitigen Logik.

Achten Sie auf Ebene 1 nicht auf Vollständigkeit, da es immer unvorhergesehene Fehlerfälle gibt. Wenn unerwartete Ausfälle auftreten, dokumentieren Sie die Ursachen und Gegenmaßnahmen im Playbook. Behandeln Sie diese Ressource als lebendiges Dokument, das Sie im Laufe der Zeit aktualisieren.

Hinzufügen von Mechanismen zur Wiederherstellung bei vorübergehenden Fehlern

In einer Cloudumgebung sind vorübergehende Fehler üblich. Sie weisen auf kurzfristige Probleme hin, die durch erneute Versuche in der Regel innerhalb von Sekunden behoben werden können.

Verwenden Sie integrierte SDKs und Konfigurationen, um diese Fehler zu behandeln, um das System aktiv zu halten. Integrierte Konfigurationen sind häufig die Standardeinstellung, daher müssen Sie möglicherweise testen, um die Implementierung zu überprüfen. Implementieren Sie außerdem Muster, die für die Behandlung vorübergehender Fehler in Ihrer Architektur konzipiert sind. Weitere Informationen finden Sie unter Architekturentwurfsmuster, die Zuverlässigkeit unterstützen.

Persistante Probleme können auf einen Fehler hinweisen, der nicht vorübergehend oder der Beginn eines Ausfalls ist. Dieses Szenario erfordert mehr als nur das Beheben lokalisierter Probleme innerhalb der Anwendung. Es umfasst die Untersuchung der kritischen Benutzer- und Systemflüsse des Systems und das Hinzufügen von Selbsterhaltungstechniken und Wiederherstellungsmaßnahmen. Diese Methoden sind ausgereifte Methoden, die von Level 2 beschrieben werden.

• Ausführen grundlegender Tests

Integrieren Sie grundlegende Zuverlässigkeitstests in die frühen Phasen des Softwareentwicklungslebenszyklus. Suchen Sie nach Möglichkeiten zum Testen, beginnend mit Komponententests, um Funktionen und Konfigurationen zu überprüfen.

Entwickeln Sie auch einfache Testfälle für die Probleme, die Sie im Playbook zur Risikominderung identifizieren. Konzentrieren Sie sich auf höhere Auswirkungen, geringere Leistungsminderungen. Simulieren Sie beispielsweise Netzwerkausfälle oder zeitweilige Verbindungsprobleme, um zu sehen, wie Ihre Wiederholungslogik die Unterbrechungen löst.

Risiko: Tests führen häufig zu Reibungen im Entwicklungszyklus. Um dieses Risiko zu verringern, machen Sie zuverlässigkeitstests zusammen mit Entwicklungsaufgaben nachverfolgbar.

Die Featureentwicklung ist die Priorität, und Tests können im Entwicklungszyklus Reibungspunkte bringen. Es ist einfacher, mit dem Testen zu beginnen, bevor die Featureentwicklung abgeschlossen ist. Wenn Sie nicht funktionsfreie Aspekte der Anwendung am Anfang entwerfen, können Sie diese erweitern, während Sie funktionale Funktionen hinzufügen, anstatt einen Backlog von Problemen zu erstellen, die später behoben werden können. Obwohl dieser Ansatz zunächst mehr Aufwand erfordert, ist er überschaubar und verhindert später größere Probleme.

Nächste Schritte