Verbessern der Effizienz durch Optimierung
Verbessern Sie die Systemeffizienz innerhalb der definierten Leistungsziele, um den Wert der Workload zu erhöhen. |
---|
Die während der Anfangsphase festgelegten Ziele basieren auf einer angemessenen Benutzererfahrung unter Berücksichtigung verschiedener Einschränkungen. Sie sollten Ziele neu bewerten und anpassen, um die Erfahrung weiter zu verbessern. Um die Erfahrung weiter zu verbessern, erfordert es ein klares Verständnis dafür, wie das System verwendet wird, wie es sich entwickelt 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.
Bemühungen zur Effizienzoptimierung ermöglichen es einer Workload, mit einem geringeren Ressourcenverbrauch zu arbeiten. Sie können dazu führen, dass sich die Workload in einem übermäßig bereitgestellten Zustand mit freier Kapazität befindet. Nutzen Sie diese Kapazität, um die Zuverlässigkeit des Systems zu verbessern. Eliminieren Sie Kapazität, um die Kosten des Systems zu verbessern. Oder nutzen Sie die Kapazität neu, um neue Produktfeatures mit vorhandenen Ressourcen zu unterstützen.
Wenn das System Effizienz gewinnt, nutzen Sie die Chance, um neue Leistungsziele festzulegen und aufrechtzuerhalten.
Beispielszenario
Das HR-Engineering-Team von Contoso unterstützt benutzerdefinierte Integrationen in das Personalinformationssystem (Human Ressource Information System, HRIS) der Organisation. Zu diesen Integrationen gehören Finanzintegrationen für Lohn- und Gehaltsabrechnungen, Einstellungsstatistiken für die arbeitsrechtliche Berichterstellung und andere. Die meisten Integrationen sind in C# geschriebene Azure Functions, die in einem Azure Arc-fähigen Kubernetes-Cluster im Rechenzentrum der Organisation gehostet werden. Die meisten Aufträge wurden gut ausgeführt, aber einige machen dem Team aufgrund von Verzögerungen bei der Verarbeitung Sorgen, da manchmal wichtige Daten nicht verfügbar sind, wenn Personalleiter*innen sie brauchen.
Priorisieren von Leistungsoptimierungen
Weisen Sie dedizierte Zyklen für die Leistungsoptimierung zu, um nicht funktionale Anforderungen und Optimierungen in funktionalen Bereichen zu berücksichtigen. Ziele für diese Optimierung sind Ressourcen, Code, Datenaufbewahrung, Datenbankabfragen und andere.
Durch die Einführung dieses Ansatzes können Sie eine Kultur der leistungsorientierten Optimierung aufbauen. Sie halten das Team verantwortlich für die proaktive Überwachung von Leistungsmustern und auch das Optimieren der Anwendung.
Herausforderung von Contoso
- Das Team ist ziemlich zusammengewürfelt, und sein Backlog ist lang. Meistens arbeitet es in einer „Feuern und Vergessen“-Denkweise beim Schreiben und Bereitstellen von Integrationen. Die Integrationen werden geschrieben, bereitgestellt und dann geht das Team zur nächsten Aufgabe über.
- Das Team wurde häufig zur Unterstützung bei kritischen Vorfällen hinzugezogen, weil die Führungsebene nicht rechtzeitig Zugriff zu den Daten hatte.
- Das Team ist sich sehr wohl bewusst, dass Verbesserungen vorgenommen werden müssen, hat aber keine Prioritäten für die notwendigen Änderungen gesetzt.
Umsetzung und Ergebnisse
- Das Team weist nun 20 % jedes Sprints für technische Schulden und andere Optimierungsaktivitäten zu. Dadurch gewinnt das Entwicklungsteam Zeit, um Prioritäten zu setzen und sich mit kritischen und anderen Bereichen zu befassen, in denen die Auswirkungen am größten sein können.
- Auf diese Weise kann das Team die notwendige Zeit aufwenden, um die Leistungsprobleme zu lösen, die zu Verzögerungen bei der Datenverarbeitung führen.
Suchen nach Designverbesserungen
Verbessern Sie die Architektur mit neuen Entwurfsmustern und Komponenten, welche die Leistung steigern können, in einer Weise, die Sie zuvor aufgrund begrenzter Zeit oder eines begrenzten Budgets nicht berücksichtigten.
Neue Designs und Komponenten können das System optimieren, was zu einer besseren Erfahrung und langfristiger Kosteneffizienz führt. Sie können z. B. Zwischenspeichern verwenden oder eine Content Delivery Network-Komponente hinzufügen.
Herausforderung von Contoso
- Das Team hat seit mehreren Jahren Azure Functions und triggerbasierte Flows verwendet und hat keine Zeit für die Bewertung von Alternativen zu diesem Ansatz aufgewendet.
Umsetzung und Ergebnisse
- Das Team untersucht andere Möglichkeiten zur Verwendung von Azure Functions und stellt fest, dass dauerhafte Funktionen ein Fan-Out-Modell unterstützen, das ihnen helfen kann, eine bestimmte Lohnbuchhaltungsaufgabe zu parallelisieren.
- Das Team integriert dieses Muster in seinen Designkatalog für zukünftige Designs. Es war auch eine gute Erinnerung, andere Möglichkeiten zur Behandlung von Leistungsineffizienzen zu betrachten, als nur Codeoptimierungen und Datenbereinigung.
Analysieren von Telemetriedaten und Trends
Verwenden Sie Überwachungstools, um historische Trends zu analysieren und die Flows und Codeimplementierungspfade zu identifizieren, die am meisten von einem Leistungsoptimierungsaufwand profitieren würden. Für diesen Zweck empfehlen wir Tools und Profiler zur Anwendungsleistungsüberwachung (Application Performance Monitoring, APM). Identifizieren Sie außerdem betriebliche langsamste Pfade und andere potenzielle Engpässe im System.
Wenn Sie die wiederkehrenden problematischen Bereiche identifizieren, kann das Team den Fokus dorthin legen, wo Gewinne am höchsten sind.
Herausforderung von Contoso
- Das Team hat alle Funktionen mit Azure Application Insights instrumentiert.
- Es verwendet hauptsächlich Application Insights für Problemlösungsissues und für die Protokollierungssenke.
- In der Vergangenheit basierte ihr Ansatz zur Ermittlung verbesserungswürdiger Bereiche auf dem Feedback der Führungskräfte.
Umsetzung und Ergebnisse
- Das Feedback ist zwar wichtig, aber das Team hat festgestellt, dass Application Insights recht gut in der Lage ist, Hotspots in den überwachten Anwendungen zu erkennen.
- Das Team beginnt mit der Nutzung dieser Funktionalität, und in Kombination mit dem Wissen, welche Flows wichtig sind, wird es zu einem wertvollen Tool für die 20% Anstrengungen des Teams bei technischen Verbesserungen und Effizienz.
- Mithilfe von Application Insights kann das Team eine riskante Integration proaktiv identifizieren und behandeln, bevor ein Mitglied des Führungsteams ein Problem erlebt.