Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Arbeitsauslastung, die ihren Leistungszielen ohne Überlastung entspricht, ist effizient. Das Ziel der Leistungseffizienz ist es, immer nur genügend Angebot zu haben, um die Nachfrage zu bewältigen. Zu den wichtigsten Strategien zur Leistungseffizienz gehören die ordnungsgemäße Verwendung von Codeoptimierungen, Entwurfsmustern, Kapazitätsplanung und Skalierung. Klare Leistungsziele und Tests untermauern diese Säule.
Wenn Sie Leistungsziele aushandeln und eine Workload für die Leistungseffizienz entwerfen, sollten Sie berücksichtigen, wie Entscheidungen basierend auf den Designprinzipien und den Empfehlungen in der Prüfliste für die Entwurfsüberprüfung für Die Leistungseffizienz die Ziele und Optimierungen anderer Säulen beeinflussen können. Einige Entscheidungen zur Leistungseffizienz profitieren von einer Säule, stellen aber Kompromisse für eine andere dar. In diesem Artikel werden Beispiele für Abwägungen beschrieben, die ein Workload-Team bei der Entwurfsarbeit von Workload-Architektur und Betrieb zur Leistungseffizienz gegenwärtig könnte.
Leistungseffizienz-Kompromisse mit Zuverlässigkeit
Tradeoff: Reduzierte Replikation und erhöhte Dichte. Ein Eckpfeiler der Zuverlässigkeit ist die Sicherstellung der Resilienz durch die Verwendung von Replikation und die Begrenzung des Auswirkungsbereichs von Fehlfunktionen.
Eine Arbeitslast, die Effizienz erzielt, indem die Skalierung bis zum letzten verantwortlichen Moment hinausgezögert wird, um die Nachfrage effektiv zu erfüllen, ist anfällig für unvorhergesehene Knotenausfälle und Verzögerungen bei der Skalierung.
Das Konsolidieren von Arbeitsauslastungsressourcen kann übermäßige Kapazität nutzen und die Effizienz verbessern. Dies erhöht jedoch den Explosionsradius einer Fehlfunktion in der mitortierten Komponente oder Anwendungsplattform.
Die Skalierung nach innen oder Reduzierung der Skalierung, um überschüssige Kapazitäten zu minimieren, kann während Lastspitzen unterprovisioniert werden, was zu Dienstunterbrechungen aufgrund unzureichender Ressourcen führt.
Kompromiss: Erhöhte Komplexität. Zuverlässigkeit priorisiert Einfachheit.
Die Verwendung der automatischen Skalierung zum Ausgleich von Workload-Angebot und Nachfrage führt zu Veränderungen in der Workload-Topologie und fügt eine Komponente hinzu, die ordnungsgemäß funktionieren muss, um die Zuverlässigkeit des Systems zu gewährleisten. Die automatische Skalierung führt dazu, dass mehr Anwendungslebenszyklusereignisse ausgelöst werden, z. B. das Starten und Beenden.
Durch Die Datenpartitionierung und Sharding können Leistungsprobleme in großen oder häufig aufgerufenen Datasets vermieden werden, aber sie erhöhen die Komplexität, da (letztendlich) die Konsistenz über zusätzliche Ressourcen hinweg beibehalten werden muss.
Das Denormalieren von Daten für optimierte Zugriffsmuster kann die Leistung verbessern, führt jedoch zu einer Komplexität, da mehrere Datendarstellungen synchronisiert werden müssen.
Leistungsorientierte Clouddesignmuster erfordern manchmal die Einführung zusätzlicher Komponenten. Die Verwendung dieser Komponenten erhöht die Fläche der Arbeitsauslastung. Die Komponenten müssen dann selbst zuverlässig sein, um die gesamte Systembelastung zuverlässig zu halten. Beispiele:
- Ein Nachrichtenbus zum Kapazitätsausgleich, der eine kritische, zustandsbehaftete Komponente einführt.
- Ein Load-Balancer für autoskalierte Replikate, der einen zuverlässigen Betrieb und die Auflistung der Replikate erfordert.
- Das Auslagern von Daten in Caches, was zuverlässige Ansätze für die Ungültigierung von Caches erfordert.
Kompromiss: Testen und Beobachten in aktiven Umgebungen. Die Vermeidung der unnötigen Verwendung von Produktionssystemen ist ein Selbsterhaltungs- und Risikovermeidungsansatz für Zuverlässigkeit.
Leistungstests in aktiven Umgebungen, z. B. die Verwendung synthetischer Transaktionen, tragen das Risiko, dass aufgrund der Testaktionen oder Konfigurationen Fehlfunktionen verursacht werden.
Workloads sollten mit einem APM-System (Application Performance Monitoring) instrumentiert werden, mit dem Teams aus aktiven Umgebungen lernen können. Die APM-Tools werden im Anwendungscode oder in der Hostingumgebung installiert und konfiguriert. Falsche Verwendung, Überschreitung von Einschränkungen oder Fehlkonfigurationen des Tools können ihre Funktionalität und Wartung beeinträchtigen, was möglicherweise die Zuverlässigkeit beeinträchtigt.
Leistungseffizienz-Kompromisse mit Sicherheit
Kompromiss: Verringerung der Sicherheitskontrollen. Sicherheitskontrollen werden auf mehreren Ebenen, manchmal redundant, eingerichtet, um die Verteidigung im Detail zu gewährleisten.
Eine Strategie zur Leistungsoptimierung besteht darin, Komponenten oder Prozesse zu entfernen oder zu umgehen, die einen Ablauf verzögern, wenn die Verarbeitungszeit nicht gerechtfertigt ist. Diese Strategie kann die Sicherheit gefährden und erfordert eine gründliche Risikoanalyse. Betrachten Sie die folgenden Beispiele:
Durch das Entfernen der Verschlüsselung sowohl während der Übertragung als auch im Ruhezustand, um die Übertragungsgeschwindigkeit zu verbessern, werden die Daten potenziellen Risiken von Integritäts- oder Vertraulichkeitsverletzungen ausgesetzt.
Durch das Entfernen oder Reduzieren von Sicherheitsüberprüfungs- oder Überprüfungstools kann die Vertraulichkeit, Integrität oder Verfügbarkeit, die diese Tools schützen, beeinträchtigt werden, um die Verarbeitungszeiten zu verringern.
Das Verringern der Häufigkeit von Sicherheitspatches, um Leistungseinbußen zu minimieren, kann eine Arbeitslast anfälliger für neue Bedrohungen machen.
Das Entfernen von Firewallregeln aus Netzwerkflüssen zur Verbesserung der Netzwerklatenz kann unerwünschte Kommunikation ermöglichen.
Die Minimierung von Datenüberprüfungen oder Inhaltssicherheitsprüfungen für eine schnellere Datenverarbeitung kann die Datenintegrität beeinträchtigen, insbesondere, wenn Eingaben bösartig sind.
Die Verwendung weniger Entropie in Verschlüsselungs- oder Hashingalgorithmen, z. B. für den Initialisierungsvektor (IV), ist effizienter, macht die Verschlüsselung jedoch einfacher zu knacken.
Kompromiss: Erhöhte Arbeitsauslastungsfläche. Die Sicherheit priorisiert einen reduzierten und enthaltenen Oberflächenbereich, um Angriffsvektoren zu minimieren und die Verwaltung von Sicherheitskontrollen zu verringern.
Leistungsorientierte Clouddesignmuster erfordern manchmal die Einführung zusätzlicher Komponenten. Diese Komponenten erhöhen die Fläche der Arbeitsauslastung. Die neuen Komponenten müssen gesichert werden, möglicherweise auf eine Weise, die im System noch nicht verwendet wird, und sie erhöhen häufig den Umfang der Compliance. Berücksichtigen Sie die folgenden häufig hinzugefügten Komponenten:
Ein Nachrichtenbus zum Kapazitätsausgleich
Ein Lastenausgleichsmodul für automatisch skalierte Replikate
Entladen von Daten in Caches, Anwendungsübermittlungsnetzwerke oder Inhaltsübermittlungsnetzwerke
Auslagern der Verarbeitung in Hintergrundprozesse oder sogar auf Client-Computing
Kompromiss: Verzicht auf Segmentierung. Die Säule der Sicherheit priorisiert eine starke Segmentierung, um detaillierte Sicherheitskontrollen zu ermöglichen und das Schadensausmaß zu reduzieren.
Das Teilen von Ressourcen durch erhöhte Dichte ist ein Ansatz zur Verbesserung der Effizienz. Beispiele hierfür sind Szenarien mit mehreren Mandanten oder das Kombinieren unterschiedlicher Anwendungen in einer Architektur auf einer gemeinsamen Anwendungsplattform. Die erhöhte Dichte kann zu folgenden Sicherheitsbedenken führen:
Erhöhtes Risiko einer nicht autorisierten Lateralbewegung von einem Mandanten zu einem anderen.
Eine gemeinsame Workload-Identität, die gegen das Prinzip der geringsten Berechtigungen verstößt und individuelle Auditpfade in Zugriffsprotokollen verdeckt.
Umkreissicherheitskontrollen, z. B. Netzwerkregeln, die reduziert werden, um alle gemeinsam gespeicherten Komponenten abzudecken, wodurch einzelne Komponenten mehr Zugriff als nötig erhalten.
Eine Kompromittierung des Anwendungsplattformhosts oder einer einzelnen Komponente aufgrund eines größeren Strahlradius. Diese Erhöhung wird durch einfacheren Zugriff auf gemeinsam gespeicherte Komponenten verursacht.
Das Zusammenführen unterschiedlicher Komponenten führt zu einer Ausweitung der zu berücksichtigenden Komponenten unter Compliance-Gesichtspunkten, da sie einen gemeinsamen Host nutzen.
Tradeoff: Veralteter Sicherheitszustand. Die Sicherheitssäule erfordert Autorisierungs-, Inhalts- und Vertrauensentscheidungen, um den aktuellen Zustand des Systems widerzuspiegeln.
Zwischenspeichern, Vorkompilierung und Edgeverteilung verbessern die Leistung, indem Antworten aus einer Kopie bereitgestellt werden, anstatt sie neu zu komputieren oder neu zu überprüfen. Je weiter die Kopie von der Quelle der Wahrheit entfernt ist und je länger ihre Lebensdauer ist, desto wahrscheinlicher ist es, dass sie einen Sicherheitszustand widerspiegelt, der nicht mehr gültig ist.
Zwischengespeicherte Authentifizierungstoken, Autorisierungsentscheidungen oder Sitzungsdaten können den Zugriff ermöglichen, nachdem ein Benutzer deaktiviert wurde, eine Rolle widerrufen oder ein Token gedreht wird. Das Fenster zwischen Sperr- und Cacheablauf ist ein Fenster mit nicht autorisiertem Zugriff.
Von einem CDN- oder Browsercache bereitgestellte Inhalte können weiterhin Daten bereitstellen, die zurückgezogen oder neu klassifiziert wurden. Diese Persistenz kann gegen datenverarbeitungs-, Aufbewahrungs- oder Datenschutzanforderungen verstoßen.
Leistungseffizienz-Kompromisse mit Kostenoptimierung
Tradeoff: Zu viel Angebot für die Nachfrage. Sowohl die Kostenoptimierung als auch die Leistungseffizienz priorisieren, nur genügend Angebot vorzuhalten, um die Nachfrage zu bedienen.
Die Überprovisionierung ist ein Risiko, wenn Teams versuchen, Leistungsprobleme in einer Arbeitslast zu mindern. Einige häufige Ursachen für die Überbereitstellung sind:
- Die anfängliche Kapazitätsplanung wurde fehleingeschätzt, da sich das Team nur auf die Schätzungen der Spitzenlast konzentrierte und Strategien zur Glättung der Spitzen in der Arbeitslastgestaltung vernachlässigte.
- Skalierung einer Ressource bei einem Problembehebungsschritt in der Reaktion auf einen Vorfall, entweder nach oben oder horizontal.
Die automatische Skalierung kann falsch konfiguriert werden. Einige Beispiele für falsch konfigurierte automatische Skalierung sind:
- Die Skalierung mit minimalen Änderungen der Nachfrage oder einer erweiterten Abkühlperiode kann mehr Kosten als die Nachfrage verursachen.
- Die Verwendung der automatischen Skalierung ohne festgelegte Obergrenze kann zu einem unkontrollierten Wachstum aufgrund von Systemfehlern oder Missbrauch führen und die erwarteten Workloadanforderungen überschreiten.
Durch die Erweiterung in mehrere Regionen kann die Leistung verbessert werden, indem Workloads dem Benutzer näher gebracht werden und temporäre Ressourcenkapazitätseinschränkungen vermieden werden können. Diese Topologie fügt jedoch auch Komplexität und Ressourcenduplizierung hinzu.
Kompromiss: Mehr Komponenten. Eine Kostenoptimierungsmethode besteht darin, eine kleinere Anzahl von Ressourcen zu konsolidieren, indem die Dichte erhöht, Duplizierungen entfernt und Funktionen zusammengeführt werden.
Leistungsorientierte Clouddesignmuster erfordern manchmal die Einführung zusätzlicher Komponenten. Diese zusätzlichen Komponenten führen in der Regel zu einer Erhöhung der Gesamtkosten für die Arbeitsauslastung. Sie können z. B. einen Nachrichtenbus zum Kapazitätsabgleich oder Auslagern von Aufgaben in eine Anwendung oder ein Inhaltsübermittlungsnetzwerk einschließen, um die Reaktionszeiten zu verbessern.
Die Ressourcensegmentierung ermöglicht es verschiedenen Teilen einer Workload, unterschiedliche Leistungsmerkmale zu haben, wodurch eine unabhängige Optimierung für jedes Segment ermöglicht wird. Sie kann jedoch die Gesamtbetriebskosten erhöhen, da sie mehrere optimierte Segmente anstelle einer einzigen, generalisierten Komponente erfordert.
Tradeoff: Erhöhte Investitionen auf Gegenstände, die nicht den funktionalen Anforderungen entsprechen. Ein Ansatz zur Kostenoptimierung ist die Bewertung des Werts, der von jeder bereitgestellten Lösung bereitgestellt wird.
Premium-Dienste und SKUs können dazu beitragen, dass eine Arbeitslast Leistungsziele erreicht. Diese Dienste kosten in der Regel mehr und können zusätzliche Features bereitstellen. Sie könnten möglicherweise nicht voll genutzt werden, wenn viele der Premium-Funktionen nicht speziell zur Erreichung von Leistungszielen verwendet werden.
Eine leistungsfähige Workload erfordert Telemetriedaten zur Observierbarkeit, die übertragen und gespeichert werden müssen. Eine Zunahme der gesammelten Leistungstelemetrie kann die Kosten für die Übertragung und Speicherung von Telemetriedaten erhöhen.
Leistungstests fügen Kosten hinzu, die nicht mit dem Wert des Produktionssystems verbunden sind. Beispiele für Leistungstestkosten umfassen:
- Instanziieren von Umgebungen, die leistungsorientierten Tests gewidmet sind.
- Verwenden Sie spezielle Performance-Tools.
- Verbringen Sie Zeit, um die Tests auszuführen.
Die Schulung von Teammitgliedern für spezielle Leistungsoptimierungsaufgaben oder das Bezahlen von Leistungsoptimierungsdiensten trägt zu den Kosten einer Workload bei.
Leistungseffizienz-Kompromisse mit Operational Excellence
Tradeoff: Reduzierte Beobachtbarkeit. Beobachtbarkeit ist notwendig, um eine Arbeitslast mit aussagekräftigen Alarmen zu versehen und eine erfolgreiche Reaktion auf Vorfälle zu gewährleisten.
Das Reduzieren des Protokoll- und Metrikvolumens, um weniger Verarbeitungszeit für die Telemetriesammlung zu verwenden, reduziert die Gesamtbeobachtbarkeit. Beispiele:
- Weniger Datenpunkte zum Erstellen aussagekräftiger Warnungen.
- Abdeckungslücken bei Vorfallreaktionsaktivitäten.
- Eingeschränkte Beobachtbarkeit bei sicherheitssensitiven oder compliancesensiblen Interaktionen und Grenzen.
Leistungsentwurfsmuster fügen häufig Komplexität hinzu, indem Komponenten in kritische Flüsse eingeführt werden. Die Workloadüberwachungsstrategie muss diese Komponenten enthalten. Wenn sich ein Fluss über mehrere Komponenten oder Anwendungsgrenzen erstreckt, muss die Leistung über alle miteinander korreliert werden.
Tradeoff: Erhöhte Komplexität bei den Vorgängen. Eine komplexe Umgebung hat komplexere Interaktionen und eine höhere Wahrscheinlichkeit einer negativen Auswirkung von Routine-, Ad-hoc- und Notfallvorgängen.
Die Verbesserung der Leistungseffizienz durch erhöhung der Dichte erhöht das Risiko in operativen Vorgängen. Ein Fehler in einem einzelnen Prozess kann einen großen Strahlradius aufweisen.
Wenn Performance-Designmuster implementiert werden, beeinflussen sie betriebliche Verfahren wie z. B. Sicherungen, Schlüsselrotationen und Wiederherstellungsstrategien. Beispielsweise kann die Datenpartitionierung und das Sharding Routineaufgaben erschweren, wenn Teams versuchen, sicherzustellen, dass diese Aufgaben keine Auswirkungen auf die Datenkonsistenz haben.
Kompromiss: Kulturstress. Operational Excellence ist in einer Kultur von Schuldlosigkeit, Respekt und kontinuierlicher Verbesserung verwurzelt.
Die Durchführung der Ursachenanalyse von Leistungsproblemen identifiziert Mängel in Prozessen oder Implementierungen, die Korrektur erfordern. Das Team sollte die Übung als Lernmöglichkeit betrachten. Wenn Teammitglieder für Probleme verantwortlich sind, kann die Moral beeinträchtigt werden.
Routine- und Ad-hoc-Prozesse können sich auf die Arbeitsauslastung auswirken. Es wird häufig als bevorzugt angesehen, diese Aktivitäten während der Nebenzeiten durchzuführen. Außerhalb der Spitzenzeiten kann es jedoch unannelich oder außerhalb der regulären Stunden für die Teammitglieder sein, die für diese Aufgaben verantwortlich oder qualifiziert sind.
Verwandte Links
Erkunden Sie die Kompromisse für die anderen Säulen: