Entwurfsprinzipien für die Leistungseffizienz

Leistungseffizienz ist die Fähigkeit Ihrer Workload, sich an Änderungen an Anforderungen anzupassen. Eine Workload muss in der Lage sein, eine Erhöhung der Last zu bewältigen, ohne die Benutzerfreundlichkeit zu beeinträchtigen. Umgekehrt muss die Workload bei einer Verringerung der Auslastung ihre Ressourcen schonen. Die Kapazität, die die Ressourcenverfügbarkeit (CPU und Arbeitsspeicher) angibt, ist ein wichtiger Faktor.

Der Workloadentwurf sollte nicht nur auf der vorab bereitgestellten Kapazität basieren, was die Leistung bis zu einem bestimmten Grenzwert garantiert. Wenn dieser Grenzwert überschritten wird, kann es bei der Workload zu Leistungsproblemen oder sogar zu Ausfällen kommen. Wenn die Auslastung unter diesem Grenzwert liegt, werden Die Ressourcen weiterhin unnötig ausgeführt, was Kosten verursacht.

Sie benötigen eine umfassende Strategie, um die Leistungsziele im Laufe der Zeit aufrechtzuerhalten. Leistungsüberlegungen sollten im Entwurfsprozess nicht nachträglich berücksichtigt werden, sie sollten nur behandelt werden, wenn Probleme in der Produktion auftreten. Übernehmen Sie stattdessen eine Denkweise, bei der Leistung ein wichtiger Aspekt in den frühen Phasen des Entwurfs ist. Erstellen Sie zunächst das System ohne spezifische Leistungsziele. Aber von dort aus testen und messen Sie die Leistung in jeder Phase der Entwicklung, um Fortschritt und Effektivität sicherzustellen. Eine kontinuierliche Optimierung dieser Ziele während des gesamten Prozesses und die Einbeziehung von Erkenntnissen aus der Produktion können potenzielle Probleme im Voraus erheblich verringern.

Diese Entwurfsprinzipien können Ihnen helfen , Ihre Strategie zum Verwalten der Kapazität von Ressourcen zu entwickeln, um Ihre Geschäftsanforderungen für die erwartete Nutzung ausreichend zu erfüllen. Reduzieren Sie auch den Abfall außerhalb der Spitzenzeiten. Nachdem Sie sich für eine Strategie entschieden haben, verfestigen Sie Ihren Entwurf mithilfe der Checkliste zur Leistungseffizienz.

Bei der Leistungseffizienz geht es um die effektive Nutzung von Workloadressourcen. Ohne eine gute Strategie sind Sie möglicherweise nicht in der Lage, Benutzeranforderungen zu antizipieren und zu erfüllen. Möglicherweise müssen Sie auf einen Ansatz der langfristigen Vorhersage und der vorab bereitgestellten Kapazität zurückgreifen, wodurch Sie Ihre Cloudplattform nicht in vollem Umfang nutzen können.

Aushandeln realistischer Leistungsziele

Symbol Die beabsichtigte Benutzererfahrung ist definiert, und es gibt eine Strategie zum Entwickeln eines Benchmarks und zur Messung von Zielen für die vordefinierten Geschäftsanforderungen.

Aus Leistungssicht ist es ideal, über klar definierte Leistungsziele zu verfügen, um Ihren Entwurfsprozess zu starten. Um diese Ziele festzulegen, müssen Sie über ein gutes Verständnis der Geschäftsanforderungen und der erwarteten Servicequalität verfügen, die von der Workload erwartet wird. Definieren Sie die Erwartungen in Zusammenarbeit mit den Geschäftsbeteiligten. Anstatt sich nur auf technische Metriken zu konzentrieren, bestimmen Sie die akzeptablen Auswirkungen auf die Benutzererfahrung für die Key Flows.

Es gibt eine zirkuläre Abhängigkeit. Sie können nicht messen, was Sie nicht definiert haben, und Sie können nicht ohne Messung definieren. Daher ist es auch wichtig, die Leistung der Arbeitsauslastung zu messen, bis Sie eine zufriedenstellende Definition der akzeptablen Schwelle mit Tarifvertrag erreicht haben.

Es besteht eine starke Korrelation zwischen Leistungs- und Zuverlässigkeitszielen, die dazu beitragen, die Dienstqualität in Bezug auf Leistung, Verfügbarkeit und Resilienz zu bestimmen. Ohne eine klare Definition ist es schwierig, die Leistung zu messen, zu warnen und zu testen. Nachdem Sie die Ziele festgelegt und tatsächliche Zahlen durch Tests im Zeitverlauf identifiziert haben, können Sie eine Automatisierung für kontinuierliche Tests mit diesen Zielen implementieren.

Befolgen Sie bewährte Methoden beim Definieren von Zielen auf Makroebene, auch wenn sie ungefähr oder innerhalb eines Bereichs liegen.

Vorgehensweise Vorteile
Bereiten Sie sich auf effektive Verhandlungen vor , indem Sie technische Konzepte verstehen, Gestaltungsmöglichkeiten mit der verfügbaren Infrastruktur erkunden und ergebnisse aus konkreten Experimenten nutzen, sofern verfügbar.

Verwenden Sie verlaufsbezogene Daten , um Einblick in Nutzungsmuster und Engpässe zu erhalten.

Gewinnen Sie Erkenntnisse aus externen Faktoren, z. B . Beiträgen aus Marktanalysen, Experten und Branchenstandards.
Sie können fundierte Entscheidungen basierend auf praktischen Erkenntnissen treffen.

Die Leistungsziele konzentrieren sich auf die Benutzererfahrung, die auf dem Machbaren, bewährten Methoden der Branche und aktuellen Markttrends basiert.
Arbeiten Sie mit den Geschäftsinhabern zusammen, um die Benutzerzusagen in Bezug auf Qualität und Einhaltung gesetzlicher Bestimmungen zu verstehen, falls zutreffend.

Behalten Sie eine breite Perspektive bei, und vermeiden Sie es, in dieser Phase in präzise Details einzutauchen.

Geben Sie auf der Grundlage der Investitionen explizit an, was eine akzeptable Leistung darstellt.

Verstehen sie den Geschäftskontext und das erwartete Wachstum.
Sie vermeiden Es, Annahmen zu treffen , die möglicherweise nicht mit den Geschäftszielen übereinstimmen. Außerdem fördert dies die Klarheit und Motivation innerhalb des Workloadteams.

Wenn Sie einen geschäftsbezogenen Kontext zu funktionalen und nicht funktionalen Anforderungen haben, können Sie Entwurfsänderungen in anderen Azure Well-Architected-Säulen aufdecken und fundierte Kompromisse treffen.

Die frühzeitige Festlegung von Parametern hilft, Kosten im Zusammenhang mit potenziellen Lösungsneugestaltungen später zu vermeiden.

Dadurch können Sie sicherstellen, dass Leistungsziele zukünftige Projektionen abdecken, sodass Sie die aktuellen Bemühungen an langfristigen Zielen ausrichten können.
Identifizieren Sie die Workloadflows , und priorisieren Sie die Flows im Architekturdiagramm.

Definieren Sie die Leistungstoleranz jedes Flows als bereich von einer angestrebten bis hin zu inakzeptablen Leistung.

Bewerten Sie die Einstiegs- und Ausgangspunkte für jeden Flow unter Berücksichtigung der Wichtigkeit, der Nutzungshäufigkeit und der Architekturintensität des Pfads.
Indem Sie Flows priorisieren, können Sie Ihre Ressourcen auf kritische Bereiche konzentrieren , die die meisten Auswirkungen auf Benutzer- und Geschäftsergebnisse haben.

Indem Sie das System in seine Teile und Abhängigkeiten unterteilen, verstehen Sie die Funktion der einzelnen Komponenten und den Einfluss auf die Leistung. Sie werden auch auf potenzielle Probleme aufmerksam.

Sie hilft dabei, eine Leistungsbasislinie zu erstellen und die Optimierung zu fördern.
Erstellen eines Leistungsmodells Überlegen Sie, ob Nutzungsmuster saisonale oder tägliche Schwankungen aufweisen. Berücksichtigen Sie die Kosten, Vorgänge und Wichtigkeit für das Unternehmen.

Verwenden Sie Branchenstandards, um Metriken und Aggregationsmethoden zu quantifizieren , z. B. mithilfe von Perzentilen.

Bewerten Sie die Erwartungen und Einschränkungen von Nachfrage und Angebot , die geschäftsbedingte Einschränkungen erfordern.

Integrieren Sie Wachstumsaussichten.
Ein Leistungsmodell bietet Einblicke in die optimale Nutzung von Ressourcen und hilft bei der strategischen Planung.

Branchenstandards helfen beim Benchmarking.

Durch die Zukunftssicherheit wird sichergestellt, dass die Leistungsziele relevant bleiben und sich an Änderungen anpassen können.

Entwerfen, um Kapazitätsanforderungen zu erfüllen

Symbol Stellen Sie genügend Angebot bereit, um die erwartete Nachfrage zu decken.

Es ist wichtig, die Leistung proaktiv zu messen. Die Messung der Leistung umfasst die Messung von Baselines und ein vorläufiges Verständnis dafür, welche Komponenten des Systems wahrscheinlich Herausforderungen darstellen. Sie können dies erreichen, ohne einen vollständigen Leistungstest oder eine präzise Optimierung durchzuführen. Mit diesen ersten Schritten schaffen Sie eine Grundlage für ein effektives Leistungsmanagement zu einem frühen Zeitpunkt des Entwicklungslebenszyklus.

Untersuchen Sie das System als Ganzes, anstatt sich auf einzelne Komponenten zu konzentrieren. Vermeiden Sie die Optimierung in dieser Phase. Präzise Leistungsverbesserungen führen zu Kompromissen in anderen Bereichen. Wenn Sie den Lebenszyklus durchlaufen und mit Tests zur Benutzerakzeptanz beginnen oder in die Produktion wechseln, können Sie schnell ermitteln, welche Bereiche eine weitere Optimierung erfordern.

Vorgehensweise Vorteil
Bewerten Sie die Elastizitätsanforderungen für die identifizierten Flows.

Untersuchen Sie Entwurfsmuster , die im gesamten Technologiestapel implementiert werden können, und berücksichtigen Sie dabei die Anwendung und die zugrunde liegenden Compute- und Datenebenen.
Sie können Skalierbarkeitsanforderungen für vorhandene Komponenten definieren, die mehr Kapazität benötigen, und die Bereiche, in denen Sie zusätzliche Komponenten zum Verteilen der Last benötigen.

Sie sind sich der potenziellen Engpässe im System bewusst und entwerfen ausgleichende Steuerelemente, z. B. das Hinzufügen von Zwischenspeicherungsfunktionen zur Verringerung der Latenz und der Systemlast.
Wählen Sie die richtigen Ressourcen für den gesamten Technologiestapel aus, sodass Sie Leistungsziele erreichen und in das System integrieren können.

Berücksichtigen Sie Features , die die Skalierbarkeitsanforderungen erfüllen können.

Finden Sie das richtige Gleichgewicht zwischen Ressourcenzuordnung und Systemanforderungen, um unerwartete Anstiege effizient zu bewältigen.
Durch die Analyse der unterschiedlichen Funktionen der Ressourcen stellen Sie sicher, dass jede Komponente zur Gesamtfunktionalität und Leistung des Systems beiträgt.

Sie können die integrierten Funktionen nutzen , die automatisch Skalierungsvorgänge auslösen.

Die rechte Dimensionierung von Ressourcen kann Änderungen der Nachfrage ohne Überbereitstellung erfüllen, was zu Kosteneinsparungen führt.
Führen Sie die Kapazitätsplanung basierend auf dem Bedarf und der Leistungsfähigkeit ausgewählter Ressourcen durch, um Ihr Leistungsmodell zu erweitern.

Verwenden Sie Vorhersagemodellierungstechniken , um erwartete Kapazitätsänderungen vorherzusagen, die mit vorhersagbaren und unerwarteten Änderungen auftreten können.

Definieren Sie Leistungsziele , die in technische Anforderungen übersetzt werden können.
Sie können Ressourcen effizient nutzen und den Bedarf ohne Überbereitstellung decken, wodurch unnötige Kosten vermieden werden.

Sie verstehen, wie sich die Entwurfsentscheidungen auf die Leistung auswirken.
Implementieren Sie einen Proof of Concept, der die technischen Anforderungen und Entwurfsentscheidungen überprüft. Ein Proof of Concept ist entscheidend für die Überprüfung des Entwurfs , um festzustellen, ob das System die Leistungsziele erfüllen kann und ob diese Ziele realistisch sind. Basierend auf der erwarteten Auslastung können Sie überprüfen, ob die erwartete Kapazität die Leistungsziele erfüllen kann.

Überprüfen Sie auch die Kostenauswirkungen der Entwurfsentscheidungen.
Dokumentieren Sie Ihre Strategie für Leistungstests.

Schließen Sie Anwendungsfälle, verschiedene Methoden und den Rhythmus Ihrer Testpläne ein.

Definieren Sie einen Prozess für den Vorgang, der im Leistungstestplan beschrieben ist.

Selektieren und priorisieren Sie die Testfälle im Plan. Konzentrieren Sie sich auf Fälle, die wertvolle Einblicke in Leistungsziele bieten, und richten Sie die Kapazitätsplanung aus.
Sie stellen sicher, dass die richtigen Aspekte des Systems getestet werden.

Sie können Ressourcen effektiv zuordnen und Tests auf eine Weise durchführen, die den geschäftlichen Prioritäten und Anforderungen entspricht.
Dokumentieren Sie Ihre Strategie für die Leistungsüberwachung.

Bewerten Sie Metriken auf unterschiedlichen Abstraktionsebenen für jeden identifizierten Flow.
Sie können den Fortschritt bei der Erreichung von Leistungszielen während des gesamten Entwicklungszyklus nachverfolgen.

Erreichen und Erhalten der Leistung

Symbol Schutz vor Leistungseinbußen, während das System verwendet wird und sich weiterentwickelt.

Die Entwicklung ist kein einmaliger Aufwand. Es handelt sich um einen fortlaufenden Prozess. Erwarten Sie Änderungen an der Leistung, wenn sich die Features ändern. Es gibt Abweichung bei Benutzermustern und Profilen, sogar Änderungen an Optimierungen in anderen Azure Well-Architected Säulen. Jede Änderung kann Arbeitsauslastungsressourcen belasten.

Schützen Sie das System vor Änderungen , damit es nicht auf Leistungsziele zurückgeschoben wird. Integrieren sie Tests und Überwachung in den Entwicklungsprozess. Testen Sie die Leistung des Systems in der Produktion mit realer Auslastung, und simulieren Sie diese Auslastung mit automatisierten Tests vor der Produktion. In beiden Fällen sollten Sie zu Überprüfungszwecken über Überwachungspraktiken verfügen.

Führen Sie während des gesamten Entwicklungslebenszyklus verschiedene Arten von Tests in verschiedenen Phasen durch. Testen Sie in den Anfangsphasen den Proof of Concept, um sicherzustellen, dass die Leistungsergebnisse nicht völlig unerwartet sind. Führen Sie im Verlauf der Entwicklung manuelle Tests mit geringem Aufwand durch, um Benchmarks zu erstellen. Beginnen Sie in der Buildphase mit der Entwicklung automatisierter Routineleistungstests , die Latenz, Belastungsstufen, Auslastungskapazität und andere in den Testplänen definierte Merkmale bewerten.

Die Überwachung muss ein integraler Bestandteil dieser Bemühungen sein, anstatt eine isolierte Übung zu sein. Sie können sehen, wie sich das System und seine Ressourcen im Laufe der Zeit abschneiden. Sie können sie dann optimieren, um ihren Wert zu maximieren und sicherzustellen, dass sie weiterhin die Leistungsstandards erfüllen.

Beachten Sie, dass die Leistungsziele aufgrund von Änderungen im Laufe der Zeit variieren. Aktualisieren Sie das Leistungsmodell basierend auf getesteten und überwachten Metriken. Geben Sie eindeutig eine erhöhte, reduzierte oder keine Auswirkung auf die Leistung der Flows an.

Seien Sie immer bereit, neu zu verhandeln und die Erwartungen mit den Projektbeteiligten des Unternehmens zurückzusetzen.

Vorgehensweise Vorteil
Integrieren von Routineleistungstests in Azure Pipelines.

Wählen Sie Pipelines aus, die Tests integrieren können. Wählen Sie dagegen Testtools aus, die in die Pipelines integriert werden können.
Automatisierte Tests sparen Zeit und sorgen für Konsistenz, die das Erkennen von Regressionen oder Verbesserungen erleichtert.

Diese Artefakte ermöglichen eine kontinuierliche Überwachung von Abweichungen oder Abweichungen im Zeitverlauf, sodass Sie eine konsistente Leistung und Qualität beibehalten können.
Formalisieren Sie Leistungstests als Qualitätsgates , die die Freigabeaufstufung und die endgültige Bereitstellung in der Produktion genehmigen oder verweigern können. Diese Prüfpunkte stellen sicher, dass jede Phase der Bereitstellung die erforderlichen Leistungsstandards erfüllt , bevor Sie mit der nächsten fortfahren. Die Prüfpunkte helfen dabei, eine unbeabsichtigte Leistungsregression zu verhindern.

Wenn die Leistung für instance deutlich unter den Erwartungen liegt, können Sie ein Release blockieren, bis Verbesserungen vorgenommen wurden.
Richten Sie einen wiederholbaren Prozess ein, um reale Transaktionen in der Produktion und Abweichungen gegenüber Ihren Leistungszielen zu überwachen.

Verwenden Sie synthetische Transaktionen in der Produktion.

Richten Sie Überwachungswarnungen für Leistungsregressionen ein.
Sie möchten einblicke in die tatsächliche Leistung Ihres Systems unter realer Auslastung , die nicht durch Tests simuliert werden konnte.

Anschließend können Sie Proaktiv Probleme und Verbesserungsbereiche wie potenzielle Engpässe, unzureichend ausgelastete Ressourcen und andere Probleme identifizieren.
Überprüfen Sie Leistungstestergebnisse und Überwachungsdaten sorgfältig, und optimieren Sie sie, bis Sie die Leistungsziele erreichen.

Priorisieren Sie von diesen Überprüfungen abgeleitete Aktionen, und fügen Sie sie dem Backlog für die geplante Ausführung hinzu.
Basierend auf Testergebnissen können Sie Daten erfassen und vergleichen und mit der Analyse von Trends beginnen.

Ihre Optimierungsbemühungen sind datengesteuert.
Erstellen Sie Programmierkenntnisse, die sich auf die Leistung konzentrieren.

Sie verfügen über Codierungsstandards, die leistungsgesteuerte Codierungsmuster veranzeugen.
Code ohne Leistungsprobleme kann Testzyklen effizienter gestalten, da tests sich auf wichtigere Probleme konzentrieren können.

Codierungsmuster helfen, Überarbeitungen zu vermeiden und ihren Codierungsstil konsistent zu halten.
Beheben Sie Leistungserosionen , wenn die Nutzung zunimmt, sich Features ändern und Daten im Laufe der Zeit angesammelt werden, um die Leistung zu erhalten.

Setzen Sie Die Erwartungen zurück, und setzen Sie neue Ziele, wenn die Optimierung nur kurzfristige Vorteile bringt.
Sie können den Leistungszustand beibehalten , bevor sich die Beeinträchtigung zu Problemen entwickelt, die sich über den zulässigen Bereich hinaus negativ auf die Benutzererfahrung auswirken.

Das Ändern von Zielen setzt das Leistungsmodell zurück, und Sie verschwenden keine Zeit mit der Optimierung des Systems, das seine Kapazität bereits erreicht hat.

Effizienzsteigerung durch Optimierung

Symbol Verbessern Sie die Systemeffizienz innerhalb der definierten Leistungsziele, um den Workloadwert zu erhöhen.

Die in der Anfangsphase festgelegten Ziele basieren unter Berücksichtigung verschiedener Einschränkungen auf einem angemessenen Maß an Benutzerfreundlichkeit. Sie sollten ziele neu bewerten und anpassen, um die Erfahrung weiter zu verbessern. Um die Erfahrung weiter zu verbessern, ist ein klares Verständnis dafür erforderlich, wie das System verwendet wird, wie es sich weiterentwickelt hat und wie sich die Plattform oder Technologie im Laufe der Zeit verändert hat. Der Zyklus der Überwachung, Optimierung, Tests und Bereitstellung ist ein kontinuierlicher Prozess.

Effizienzoptimierungsbemühungen ermöglichen es einer Workload, mit einem geringeren Ressourcenverbrauch zu arbeiten. Sie können dazu führen, dass sich die Workload in einem überdimensionierten Zustand mit einer freien Kapazität befindet. Verwenden Sie diese Kapazität, um die Zuverlässigkeit des Systems zu verbessern. Beseitigen Sie die Kapazität, um die Kosten des Systems zu verbessern. Oder nutzen Sie die Kapazität neu, um neue Produktfeatures für vorhandene Ressourcen zu unterstützen.

Wenn das System effizienzgewinnt, nutzen Sie die Gelegenheit, neue Leistungsziele zu setzen und beizubehalten.

Vorgehensweise Vorteil
Ordnen Sie dedizierte Zyklen für die Leistungsoptimierung zu, um nicht funktionale Anforderungen und Optimierungen in Funktionsbereichen zu erfüllen. Ziele für diese Optimierung sind Ressourcen, Code, Datenaufbewahrung, Datenbankabfragen und andere. Sie können eine Kultur der leistungsgesteuerten Optimierung erstellen. Sie halten das Team für die proaktive Überwachung von Leistungsmustern verantwortlich und optimieren auch die Anwendung.
Verbessern Sie die Architektur mit neuen Entwurfsmustern und Komponenten, die die Leistung steigern können, auf eine Weise, die Sie zuvor aufgrund begrenzter Zeit oder des begrenzten Budgets nicht berücksichtigt haben. Neue Designs und Komponenten können das System optimieren, was zu einer besseren Benutzererfahrung führt. Sie können z. B. die Zwischenspeicherung oder das Hinzufügen einer Netzwerkkomponente für die Inhaltsübermittlung verwenden.

Dies kann auch zu langfristigen Kostenvorteilen führen.
Verwenden Sie Überwachungstools, um Verlaufstrends zu analysieren und die Flows und Codeimplementierungspfade zu identifizieren, die am meisten von einer Leistungsoptimierung profitieren würden. Zu diesem Zweck empfehlen wir Tools zur Anwendungsleistungsüberwachung (Application Performance Monitoring, APM) und Profiler.

Identifizieren Sie betriebsbereite Pfade und andere potenzielle Engpässe im System.
Wenn Sie die wiederkehrenden problematischen Bereiche identifizieren, kann sich das Team darauf konzentrieren, wo die Gewinne am höchsten sind.
Erhalten Sie den aktuellen Stand und bleiben Sie mit technologischen Innovationen auf dem laufenden , die die Leistung verbessern können.

Nutzen Sie die neuen Versionen, die für die abhängigen Frameworks und Bibliotheken veröffentlicht werden.

Verwenden Sie entsprechend die neuen Features für Plattformressourcen, während sie aktualisiert und gepatcht werden.
Die Einführung neuer Technologien kann oft der motivierende Faktor sein, nach Verbesserungsmöglichkeiten zu suchen.

Code, der in der Vergangenheit möglicherweise langsam war, kann mit diesen Updates schneller werden. Sie möchten auch wissen, wie sich bestimmte Updates negativ auf die Leistung auswirken.

Nächste Schritte