Kompromisse bei der Leistungseffizienz

Eine Workload, die ihre Leistungsziele ohne Überbereitstellung erreicht, ist effizient. Das Ziel der Leistungseffizienz ist es, über ein ausreichendes Angebot zu verfügen, um die Nachfrage jederzeit bedienen zu können. Zu den wichtigsten Strategien für die Leistungseffizienz gehören die ordnungsgemäße Verwendung von Codeoptimierungen, Entwurfsmustern, Kapazitätsplanung und Skalierung. Klare Leistungsziele und Tests untermauern diese Säule.

Beim Aushandeln der Leistungsziele einer Workload und beim Entwerfen einer Workload für die Leistungseffizienz ist es wichtig, sich darüber bewusst zu sein, wie sich die Entwurfsprinzipien für die Leistungseffizienz und die Empfehlungen in der Prüfliste der Entwurfsüberprüfung für die Leistungseffizienz auf die Optimierungsziele anderer Säulen auswirken können. Bestimmte Entscheidungen über die Leistungseffizienz können einigen Säulen zugutekommen, für andere jedoch Kompromisse darstellen. In diesem Artikel werden Beispiel-Kompromisse aufgeführt, die einem Workloadteam beim Entwerfen von Workloadarchitektur und -vorgängen zur Leistungseffizienz begegnen können.

Leistungseffizienz-Kompromisse mit Zuverlässigkeit

Kompromiss: 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 erzielt, indem sie die Skalierung verzögert, bis der letzte verantwortliche Moment der Nachfrage genau entspricht, aber anfällig für unvorhergesehene Knotenfehler und Skalierungsverzögerungen ist.

  • Das Konsolidieren von Workloadressourcen kann überschüssige Kapazität nutzen und die Effizienz verbessern. Es erhöht jedoch den Explosionsradius einer Fehlfunktion in der gemeinsam lokalisierten Komponente oder Anwendungsplattform.

  • Die Skalierung in oder herunterskalieren, um überschüssige Kapazität zu minimieren, kann dazu führen, dass eine Workload während Nutzungsspitzen nicht bereitgestellt wird, was zu Dienstunterbrechungen aufgrund unzureichender Bereitstellung führt.

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

  • Die Verwendung der automatischen Skalierung zum Ausgleich des Workloadangebots mit der Nachfrage führt zu 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 weitere Lebenszyklusereignisse der Anwendung ausgelöst werden, z. B. 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 (letztendliche) Konsistenz über zusätzliche Ressourcen hinweg beibehalten werden muss.

  • Die Denormalisierung von Daten für optimierte Zugriffsmuster kann die Leistung verbessern, führt jedoch zu komplexität, da mehrere Darstellungen von Daten synchronisiert werden müssen.

  • Leistungsorientierte Cloudentwurfsmuster erfordern manchmal die Einführung zusätzlicher Komponenten. Die Verwendung dieser Komponenten erhöht die Oberfläche der Workload. Die Komponenten müssen dann selbst zuverlässig gemacht werden, um die gesamte Workload zuverlässig zu halten. Beispiele:

    • Ein Nachrichtenbus für das Lastenausgleich, der eine kritische, zustandsbehaftete Komponente einführt.
    • Ein Lastenausgleich für automatisch skalierte Replikate, der einen zuverlässigen Betrieb und die Aufnahme von Replikaten erfordert.
    • Auslagerung von Daten in Caches, was zuverlässige Ansätze zur Cachevalidierung erfordert.

Kompromiss: Testen und Beobachten in aktiven Umgebungen. Die Vermeidung unnötiger Nutzung von Produktionssystemen ist ein Selbsterhaltungsansatz für Zuverlässigkeit.

  • Leistungstests in aktiven Umgebungen, wie die Verwendung synthetischer Transaktionen, bergen das Risiko, aufgrund der Testaktionen oder Konfigurationen Fehlfunktionen zu verursachen.

  • 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. Eine unsachgemäße Verwendung, das Überschreiten von Einschränkungen oder eine fehlkonfigurierte Konfiguration des Tools können die Funktionalität und Wartung beeinträchtigen und die Zuverlässigkeit beeinträchtigen.

Leistungseffizienz-Kompromisse mit Sicherheit

Kompromiss: Reduzierung der Sicherheitskontrollen. Sicherheitskontrollen werden über mehrere Ebenen hinweg eingerichtet, manchmal redundant, um die Verteidigung zu vertiefen.

Eine Strategie zur Leistungsoptimierung besteht darin, Komponenten oder Prozesse zu entfernen oder zu umgehen, die zu Verzögerungen in einem Flow beitragen, insbesondere wenn ihre Verarbeitungszeit nicht gerechtfertigt ist. Diese Strategie kann jedoch die Sicherheit gefährden und sollte von einer gründlichen Risikoanalyse begleitet werden. Betrachten Sie die folgenden Beispiele:

  • Das Entfernen der Verschlüsselung während der Übertragung oder im Ruhezustand, um die Übertragungsgeschwindigkeit zu verbessern, setzt die Daten potenziellen Integritäts- oder Vertraulichkeitsverletzungen aus.

  • Das Entfernen oder Reduzieren von Sicherheitsüberprüfungs- oder Überprüfungstools zur Verkürzung der Verarbeitungszeiten kann die Vertraulichkeit, Integrität oder Verfügbarkeit beeinträchtigen, die diese Tools schützen.

  • Die Verringerung der Häufigkeit von Sicherheitspatches, um die Auswirkungen auf die Leistung zu begrenzen, kann eine Workload 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 der Datenüberprüfung für eine schnellere Datenverarbeitung kann die Datenintegrität beeinträchtigen, insbesondere wenn Eingaben böswillig sind.

  • Die Verwendung weniger Entropie in Verschlüsselungs- oder Hashingalgorithmen, z. B. für den Initialisierungsvektor (IV), ist effizienter, erleichtert jedoch das Knacken der Verschlüsselung.

Kompromiss: Die Workloadoberfläche wurde erhöht. Die Sicherheit priorisiert eine reduzierte und geschlossene Oberfläche, um Angriffsvektoren zu minimieren und die Verwaltung von Sicherheitskontrollen zu reduzieren.

Leistungsorientierte Cloudentwurfsmuster erfordern manchmal die Einführung zusätzlicher Komponenten. Diese Komponenten erhöhen die Oberfläche der Workload. Die neuen Komponenten müssen gesichert werden, möglicherweise auf eine Weise, die noch nicht im System verwendet wird, und sie erhöhen häufig den Complianceumfang. Betrachten Sie die folgenden häufig hinzugefügten Komponenten:

  • Ein Nachrichtenbus zum Lastenausgleich

  • Ein Lastenausgleich für automatisch skalierte Replikate

  • Auslagerung von Daten in Caches, Anwendungsbereitstellungsnetzwerke oder Content Delivery Networks

  • Auslagerung der Verarbeitung an Hintergrundaufträge oder sogar Clientcomputing

Kompromiss: Segmentierung wird entfernt. Die Säule Sicherheit priorisiert eine starke Segmentierung, um differenzierte Sicherheitskontrollen zu ermöglichen und den Strahlradius zu verringern.

Die gemeinsame Nutzung von Ressourcen ist ein Ansatz zur Verbesserung der Effizienz. Es erhöht die Dichte, um die Kapazitätsauslastung zu optimieren. Beispiele hierfür sind Szenarien mit mehreren Mandanten oder die Kombination 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 Querbewegung von einem Mandanten zum anderen.

  • Eine freigegebene Workloadidentität, die gegen das Prinzip der geringsten Berechtigungen verstößt und einzelne Überwachungspfade in Zugriffsprotokollen verdeckt.

  • Perimetersicherheitskontrollen, z. B. Netzwerkregeln, die reduziert werden, um alle gemeinsam lokalisierten Komponenten abzudecken, sodass einzelne Komponenten mehr Zugriff als erforderlich haben.

  • Eine Kompromittierung des Anwendungsplattformhosts oder einer einzelnen Komponente aufgrund eines größeren Strahlradius. Dieser Anstieg wird durch den einfacheren Zugriff auf gemeinsam lokalisierte Komponenten verursacht.

  • Die gemeinsame Suche von unterschiedlichen Komponenten führt aufgrund ihres freigegebenen Hosts zu mehr Komponenten, die für die Compliance verfügbar sind.

Leistungseffizienz-Kompromisse mit Kostenoptimierung

Kompromiss: Zu viel Angebot für die Nachfrage. Sowohl die Kostenoptimierung als auch die Leistungseffizienz priorisieren, dass gerade genug Angebot vorhanden ist, um die Nachfrage zu bedienen.

  • Die Überbereitstellung ist ein Risiko, wenn Teams versuchen, Leistungsprobleme in einer Workload zu minimieren. Zu den häufigsten Ursachen für Überbereitstellung gehören:

    • Die anfängliche Kapazitätsplanung wurde falsch eingeschätzt, da sich das Team nur auf Spitzenlastschätzungen konzentrierte und Strategien für die Spitzenglättung im Workloadentwurf vernachlässigte.
    • Hochskalieren einer Ressource während eines Schritts zur Problembehandlung einer Incidentantwort.
  • Die automatische Skalierung kann falsch konfiguriert sein. Beispiele für falsch konfigurierte automatische Skalierung sind:

    • Das Hochskalieren mit minimalen Änderungen der Nachfrage oder einer längeren Abkühlungszeit kann zu mehr Kosten führen, als die Nachfrage erfordert.
    • Die Verwendung der automatischen Skalierung ohne festgelegte Obergrenze kann aufgrund von Systemfehlern oder Missbrauch zu einem unkontrollierten Wachstum führen und die erwarteten Workloadanforderungen überschreiten.
  • Die Erweiterung in mehrere Regionen kann die Leistung verbessern, indem Workloads näher an den Benutzer gebracht werden, und temporäre Ressourcenkapazitätseinschränkungen vermieden werden. Es erhöht jedoch auch die Komplexität und Ressourcenduplizierung.

Kompromiss: Weitere Komponenten. Eine Kostenoptimierungsmethode besteht darin, mit einer geringeren Anzahl von Ressourcen zu konsolidieren, indem die Dichte erhöht, Duplizierungen entfernt und Funktionen gemeinsam ermittelt werden.

  • Leistungsorientierte Cloudentwurfsmuster 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 Workload. Beispielsweise können Sie einen Nachrichtenbus zum Lastenausgleich oder Zum Auslagern von Aufgaben an eine Anwendung oder ein Inhaltsübermittlungsnetzwerk für verbesserte Antwortzeiten einschließen.

  • Durch die Ressourcensegmentierung können verschiedene Teile einer Workload unterschiedliche Leistungseigenschaften aufweisen, sodass eine unabhängige Optimierung für jedes Segment möglich ist. Es kann jedoch die Gesamtbetriebskosten erhöhen, da mehrere optimierte Segmente anstelle einer einzelnen generalisierten Komponente erforderlich sind.

Kompromiss: Erhöhte Investitionen in Elemente, die nicht an den funktionalen Anforderungen ausgerichtet sind. Ein Ansatz zur Kostenoptimierung besteht darin, den Von jeder bereitgestellten Lösung bereitgestellten Wert zu bewerten.

  • Premium-Dienste und SKUs können eine Workload dabei unterstützen, Leistungsziele zu erreichen. Diese Dienste kosten in der Regel mehr und können zusätzliche Funktionen bereitstellen. Sie können unter Umständen nicht ausgelastet sein, wenn viele der Premium-Features nicht speziell für die Erfüllung von Leistungszielen verwendet werden.

  • Für eine leistungsfähige Workload sind Telemetriedaten für die Beobachtbarkeit erforderlich, die übertragen und gespeichert werden müssen. Eine Erhöhung der erfassten Leistungstelemetriedaten kann die Kosten für die Übertragung und Speicherung von Telemetriedaten erhöhen.

  • Leistungstests führen zu Kosten, die nicht dem Wert des Produktionssystems zugeordnet sind. Beispiele für Kosten für Leistungstests sind:

    • Instanziieren von Umgebungen, die leistungsorientierte Tests gewidmet sind.
    • Verwenden von spezialisierten Leistungstools.
    • Zeit für die Ausführung der Tests aufwenden.
  • Das Trainieren von Teammitgliedern für spezialisierte Aufgaben zur Leistungsoptimierung oder die Bezahlung für Leistungsoptimierungsdienste erhöhen die Kosten einer Workload.

Leistungseffizienz-Kompromisse mit Operational Excellence

Kompromiss: Verringerte Beobachtbarkeit. Die Beobachtbarkeit ist erforderlich, um eine Workload mit aussagekräftigen Warnungen bereitzustellen und eine erfolgreiche Reaktion auf Vorfälle sicherzustellen.

  • Das Reduzieren des Protokoll- und Metrikvolumens, um die Verarbeitungszeit zu reduzieren, die für die Erfassung von Telemetriedaten anstelle anderer Aufgaben aufgewendet wird, verringert die Gesamtbeobachtungsfähigkeit des Systems. Einige Beispiele für die resultierende reduzierte Beobachtbarkeit sind:

    • Es schränkt die Datenpunkte ein, die zum Erstellen aussagekräftiger Warnungen verwendet werden.
    • Dies führt zu Lücken bei der Abdeckung von Aktivitäten zur Reaktion auf Vorfälle.
    • Es schränkt die Beobachtbarkeit bei sicherheits- oder compliancesensitiven Interaktionen und Grenzen ein.
  • Wenn Leistungsentwurfsmuster implementiert werden, erhöht sich häufig die Komplexität der Workload. Komponenten werden kritischen Flows hinzugefügt. Die Strategie für die Workloadüberwachung und die Leistungsüberwachung müssen diese Komponenten enthalten. Wenn ein Flow mehrere Komponenten oder Anwendungsgrenzen umfasst, erhöht sich die Komplexität der Überwachung der Leistung dieses Flows. Die Flussleistung muss über alle miteinander verbundenen Komponenten hinweg korreliert werden.

Kompromiss: Erhöhte Komplexität bei Vorgängen. Eine komplexe Umgebung hat komplexere Interaktionen und eine höhere Wahrscheinlichkeit für negative Auswirkungen durch Routine-, Ad-hoc- und Notfallvorgänge.

  • Die Verbesserung der Leistungseffizienz durch Erhöhung der Dichte erhöht das Risiko bei operativen Aufgaben. Ein Fehler in einem einzelnen Prozess kann einen großen Strahlradius aufweisen.

  • Wenn Leistungsentwurfsmuster implementiert werden, beeinflussen sie operative Verfahren wie Sicherungen, Schlüsselrotationen und Wiederherstellungsstrategien. Beispielsweise können Datenpartitionierung und Sharding Routineaufgaben erschweren, wenn Teams sicherstellen möchten, dass sich diese Aufgaben nicht auf die Datenkonsistenz auswirken.

Kompromiss: Kulturstress. Operational Excellence basiert auf einer Kultur der Schuldlosigkeit, des Respekts und der kontinuierlichen Verbesserung.

  • Die Durchführung der Grundursachenanalyse von Leistungsproblemen identifiziert Mängel in Prozessen oder Implementierungen, die korrigiert werden müssen. Das Team sollte die Übung als Lernmöglichkeit betrachten. Wenn Teammitglieder für Probleme verantwortlich gemacht werden, kann die Moral beeinträchtigt werden.

  • Routine- und Ad-hoc-Prozesse können sich auf die Workloadleistung auswirken. Es wird oft als vorzuziehen angesehen, diese Aktivitäten außerhalb der Stoßzeiten auszuführen. Für die Teammitglieder, die für diese Aufgaben verantwortlich sind oder in diesen Aufgaben ausgebildet sind, können sich außerhalb der regulären Zeiten jedoch außerhalb der regulären Zeiten befinden.

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