Freigeben über


Kompromisse bei der Leistungseffizienz

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.

Während des Verhandlungsvorgangs der Leistungsziele einer Workload und der Gestaltung einer Arbeitsauslastung zur Leistungseffizienz ist es wichtig zu wissen, wie sich die Designprinzipien der Leistungseffizienz und die Empfehlungen in der Prüfliste zur Entwurfsüberprüfung für Die Leistungseffizienz auf die Optimierungsziele anderer Säulen auswirken können. Bestimmte Entscheidungen zur Leistungseffizienz können einigen Säulen zugute kommen, stellen aber Gegensätze für andere dar. In diesem Artikel werden Beispiele für Kompromisse aufgeführt, auf die ein Workloadteam beim Entwerfen von Workloadarchitektur und -vorgängen zur Leistungseffizienz stoßen kann.

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 der Replikation und die Begrenzung des Strahlradius von Fehlfunktionen.

  • Eine Workload, die Effizienz erreicht, indem die Skalierung bis zum letzten verantwortlichen Moment genau die Nachfrage erfüllt, aber anfällig für unvorhergesehene Knotenfehler und Skalierungsverzögerungen ist.

  • Das Konsolidieren von Arbeitsauslastungsressourcen kann übermäßige Kapazität nutzen und die Effizienz verbessern. Sie erhöht jedoch den Strahlradius einer Fehlfunktion in der gemeinsam installierten Komponente oder Anwendungsplattform.

  • Die Skalierung oder Skalierung nach unten, um die Überschusskapazität zu minimieren, kann eine Während der Nutzungsspitzen unterprovisioniert werden, was zu Dienstunterbrechungen aufgrund unzureichender Versorgung führt.

Kompromiss: Erhöhte Komplexität. Zuverlässigkeit priorisiert Einfachheit.

  • Die Verwendung der automatischen Skalierung zum Ausgleich der Arbeitsauslastungsversorgung mit der Nachfrage führt zu einer Variabilität in der Topologie der Workload und fügt eine Komponente hinzu, die ordnungsgemäß funktionieren muss, damit das System zuverlässig ist. Die automatische Skalierung führt dazu, dass mehr Anwendungslebenszyklusereignisse ausgelöst werden, z. B. das Starten und Beenden.

  • Datenpartitionierung und Sharding helfen, Leistungsprobleme in großen oder häufig aufgerufenen Datasets zu vermeiden. Die Implementierung dieser Muster erhöht jedoch 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 zuverlässig gemacht werden, um die gesamte Arbeitsauslastung zuverlässig zu halten. Beispiele:

    • Ein Nachrichtenbus zum Kapazitätsausgleich, der eine kritische, zustandsbehaftete Komponente einführt.
    • Ein Lastenausgleichsmodul für autoskalierte Replikate, das einen zuverlässigen Betrieb und die Auflistung von Replikaten 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 zu Verzögerungen in einem Fluss beitragen, insbesondere, wenn ihre Verarbeitungszeit nicht gerechtfertigt ist. Diese Strategie kann jedoch die Sicherheit gefährden und sollte mit einer gründlichen Risikoanalyse einhergehen. Betrachten Sie die folgenden Beispiele:

  • Durch das Entfernen der Verschlüsselung während der Übertragung oder ruhenden Daten, um die Übertragungsgeschwindigkeiten zu verbessern, werden die Daten potenziellen Integritäts- oder Vertraulichkeitsverstößen zur Verfügung stellen.

  • 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 Sicherheitspatching, um die Leistungseinbußen zu begrenzen, kann eine Workload anfälliger für neue Bedrohungen sein.

  • 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 in Der Weise, die noch nicht im System verwendet werden, und sie erhöhen häufig den Complianceumfang. 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 Hintergrundaufträge oder sogar Client-Compute

Tradeoff: Entfernen der Segmentierung. Die Sicherheitssäule priorisiert eine starke Segmentierung, um feinkörnige Sicherheitskontrollen zu ermöglichen und den Strahlradius 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 freigegebene Workload-Identität, die gegen das Prinzip der geringsten Berechtigungen verstößt und einzelne Überwachungspfade 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.

  • Die gemeinsame Suche nach unterschiedlichen Komponenten führt zu mehr Komponenten im Bereich der Compliance aufgrund ihres gemeinsam genutzten Hosts.

Leistungseffizienz-Kompromisse mit Kostenoptimierung

Tradeoff: Zu viel Angebot für Nachfrage. Sowohl Die Kostenoptimierung als auch die Leistungseffizienz priorisieren nur genügend Angebot, um nachfragen zu können.

  • Die Überlastung ist ein Risiko, wenn Teams versuchen, Leistungsprobleme in einer Workload zu mindern. Einige häufige Ursachen für die Überteilung sind:

    • Die Anfängliche Kapazitätsplanung wurde falsch beurteilt, da sich das Team nur auf Spitzenlastschätzungen konzentriert und Strategien für spitzen Glättungsleistungen im Arbeitsauslastungsentwurf vernachlässigt.
    • Skalieren einer Ressource während eines Problembehandlungsschritts einer Vorfallreaktion nach oben oder außerhalb.
  • 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: Weitere Komponenten. Eine Kostenoptimierungsmethode besteht darin, eine kleinere Anzahl von Ressourcen zu konsolidieren, indem sie die Dichte erhöhen, Duplizierungen entfernen und funktionen gemeinsam auffinden.

  • 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 services and SKUs can help a workload meet performance targets. Diese Dienste kosten in der Regel mehr und können zusätzliche Features bereitstellen. Sie können nicht verwendet werden, wenn viele der Premium-Features nicht speziell für die Erfüllung von Leistungszielen verwendet werden.

  • Eine leistungsfähige Workload erfordert Telemetriedaten zur Observierbarkeit, die übertragen und gespeichert werden müssen. Eine Erhöhung der gesammelten Leistungs telemetrie kann die Kosten der Telemetriedatenübertragung und -speicherung erhöhen.

  • Leistungstests fügen Kosten hinzu, die nicht mit dem Wert des Produktionssystems verbunden sind. Beispiele für Leistungstests sind:

    • Instanziieren von Umgebungen, die leistungsorientierten Tests gewidmet sind.
    • Verwenden sie spezielle Leistungstools.
    • Verbringen Sie Zeit, um die Tests auszuführen.
  • Schulungsteammitglieder für spezielle Leistungsoptimierungsaufgaben oder das Bezahlen von Leistungsoptimierungsdiensten werden zu den Kosten einer Workload hinzugefügt.

Leistungseffizienz-Kompromisse mit Operational Excellence

Tradeoff: Reduzierte Beobachtbarkeit. Observability ist erforderlich, um eine Arbeitsauslastung mit aussagekräftigen Warnungen bereitzustellen und eine erfolgreiche Reaktion auf Vorfälle sicherzustellen.

  • Das Reduzieren des Protokoll- und Metrikvolumens, um die Verarbeitungszeit für das Sammeln von Telemetrie anstelle anderer Aufgaben zu reduzieren, reduziert die Gesamt observierbarkeit des Systems. Einige Beispiele für die resultierende reduzierte Observability sind:

    • Sie beschränkt die Datenpunkte, die zum Erstellen aussagekräftiger Warnungen verwendet werden.
    • Dies führt zu Lücken bei der Abdeckung von Vorfallreaktionsaktivitäten.
    • Sie beschränkt die Observability in sicherheitssensitiven oder compliancesensiblen Interaktionen und Grenzen.
  • Wenn Leistungsentwurfsmuster implementiert werden, erhöht sich die Komplexität der Arbeitsauslastung häufig. Komponenten werden kritischen Flüssen hinzugefügt. Die Workloadüberwachungsstrategie und Die Leistungsüberwachung müssen diese Komponenten enthalten. Wenn ein Fluss mehrere Komponenten oder Anwendungsgrenzen umfasst, erhöht sich die Komplexität der Überwachung der Leistung dieses Flusses. Die Flussleistung muss über alle miteinander verbundenen Komponenten 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 Leistungsentwurfsmuster implementiert werden, beeinflussen sie operative Verfahren wie Sicherungen, Schlüsseldrehungen 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 Spitzenzeiten 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.

Erkunden Sie die Kompromisse für die anderen Säulen: