Compromessi dell'efficienza delle prestazioni

Un carico di lavoro che soddisfa le destinazioni di prestazioni senza sovraprovisioning è efficiente. L'obiettivo dell'efficienza delle prestazioni è quello di avere una quantità sufficiente di offerta per gestire la domanda in ogni momento. Le strategie principali per l'efficienza delle prestazioni includono l'uso appropriato di ottimizzazioni del codice, modelli di progettazione, pianificazione della capacità e scalabilità. Chiare destinazioni di prestazioni e test supportano questo pilastro.

Durante il processo di negoziazione degli obiettivi di prestazioni di un carico di lavoro e la progettazione di un carico di lavoro per l'efficienza delle prestazioni, è importante essere consapevoli del modo in cui i principi di progettazione dell'efficienza delle prestazioni e le raccomandazioni nell'elenco di controllo Revisione progettazione per l'efficienza delle prestazioni potrebbero influire sugli obiettivi di ottimizzazione di altri pilastri. Alcune decisioni sull'efficienza delle prestazioni possono trarre vantaggio da alcuni pilastri, ma costituiscono compromessi per altri. Questo articolo elenca i compromessi di esempio che un team del carico di lavoro potrebbe riscontrare durante la progettazione dell'architettura e delle operazioni del carico di lavoro per l'efficienza delle prestazioni.

Efficienza delle prestazioni compromessi con affidabilità

Compromesso: riduzione della replica e aumento della densità. Un elemento fondamentale dell'affidabilità garantisce la resilienza usando la replica e limitando il raggio di esplosione di malfunzionamenti.

  • Un carico di lavoro che raggiunge l'efficienza ritardando la scalabilità fino all'ultimo momento responsabile soddisfa strettamente la domanda, ma è vulnerabile a errori imprevisti dei nodi e ritardi di ridimensionamento.

  • Il consolidamento delle risorse del carico di lavoro può usare capacità in eccesso e migliorare l'efficienza. Tuttavia, aumenta il raggio di esplosione di un malfunzionamento nel componente co-localizzato o nella piattaforma dell'applicazione.

  • Il ridimensionamento o il ridimensionamento per ridurre al minimo la capacità in eccedenza può lasciare un carico di lavoro sottovisionato durante i picchi di utilizzo, che comporta interruzioni del servizio a causa di interruzioni del servizio a causa di un'offerta insufficiente.

Compromesso: maggiore complessità. L'affidabilità assegna priorità alla semplicità.

  • L'uso della scalabilità automatica per bilanciare l'offerta del carico di lavoro contro la domanda introduce la variabilità nella topologia del carico di lavoro e aggiunge un componente che deve funzionare correttamente per l'affidabilità del sistema. La scalabilità automatica comporta l'attivazione di più eventi del ciclo di vita dell'applicazione, ad esempio l'avvio e l'arresto.

  • Il partizionamento dei dati e il partizionamento consentono di evitare problemi di prestazioni in set di dati di grandi dimensioni o di accesso frequente. Tuttavia, l'implementazione di questi modelli aumenta la complessità perché (finale) la coerenza deve essere mantenuta tra risorse aggiuntive.

  • La denormalizzazione dei dati per i modelli di accesso ottimizzati può migliorare le prestazioni, ma introduce complessità perché devono essere mantenute sincronizzate più rappresentazioni dei dati.

  • I modelli di progettazione cloud incentrati sulle prestazioni talvolta richiedono l'introduzione di componenti aggiuntivi. L'uso di questi componenti aumenta l'area di superficie del carico di lavoro. I componenti devono quindi essere resi affidabili per mantenere l'intero carico di lavoro affidabile. Alcuni esempi:

    • Un bus di messaggio per il livello di carico, che introduce un componente critico e con stato.
    • Un servizio di bilanciamento del carico per le repliche con scalabilità automatica, che richiede un'operazione affidabile e l'inserimento di repliche.
    • Offload dei dati in cache, che richiede approcci di invalidazione della cache affidabili.

Compromesso: test e osservazione in ambienti attivi. Evitare l'uso non necessario dei sistemi di produzione è un approccio di auto-conservazione per l'affidabilità.

  • I test delle prestazioni negli ambienti attivi, ad esempio l'uso delle transazioni sintetiche, comportano il rischio di causare malfunzionamenti a causa delle azioni o delle configurazioni di test.

  • I carichi di lavoro devono essere instrumentati con un sistema di monitoraggio delle prestazioni dell'applicazione (APM) che consente ai team di apprendere dagli ambienti attivi. Lo strumento APM è installato e configurato nel codice dell'applicazione o nell'ambiente di hosting. Uso non corretto, superamento delle limitazioni o configurazione errata dello strumento può compromettere la funzionalità e la manutenzione, potenzialmente compromettere l'affidabilità.

Efficienza delle prestazioni compromessi con la sicurezza

Compromesso: riduzione dei controlli di sicurezza. I controlli di sicurezza vengono stabiliti in più livelli, a volte ridondanti, per fornire la difesa in profondità.

Una strategia di ottimizzazione delle prestazioni consiste nel rimuovere o ignorare i componenti o i processi che contribuiscono a ritardi in un flusso, soprattutto quando il tempo di elaborazione non è giustificato. Tuttavia, questa strategia può compromettere la sicurezza e deve essere accompagnata da un'analisi approfondita dei rischi. Considera gli esempi che seguono:

  • La rimozione della crittografia in transito o inattivi per migliorare le velocità di trasferimento espone i dati a potenziali violazioni dell'integrità o della riservatezza.

  • La rimozione o la riduzione dell'analisi della sicurezza o l'ispezione degli strumenti per ridurre i tempi di elaborazione possono compromettere la riservatezza, l'integrità o la disponibilità che tali strumenti proteggono.

  • La riduzione della frequenza di patch di sicurezza per limitare l'impatto sulle prestazioni può lasciare un carico di lavoro più vulnerabile alle minacce emergenti.

  • La rimozione delle regole del firewall dai flussi di rete per migliorare la latenza di rete può consentire comunicazioni indesiderate.

  • Ridurre al minimo la convalida dei dati per l'elaborazione dei dati più veloce potrebbe compromettere l'integrità dei dati, soprattutto se gli input sono dannosi.

  • L'uso di meno entropia negli algoritmi di crittografia o hashing, ad esempio nel vettore di inizializzazione (IV), è più efficiente, ma rende più semplice la crittografia.

Compromesso: area di superficie del carico di lavoro aumentata. La sicurezza assegna priorità a un'area di superficie ridotta e contenuta per ridurre al minimo i vettori di attacco e ridurre la gestione dei controlli di sicurezza.

I modelli di progettazione cloud incentrati sulle prestazioni talvolta richiedono l'introduzione di componenti aggiuntivi. Questi componenti aumentano l'area di superficie del carico di lavoro. I nuovi componenti devono essere protetti, possibilmente in modi che non sono già usati nel sistema e spesso aumentano l'ambito di conformità. Prendere in considerazione questi componenti aggiunti di frequente:

  • Un bus di messaggi per il livello di carico

  • Servizio di bilanciamento del carico per le repliche con scalabilità automatica

  • Offload dei dati in cache, reti di distribuzione di applicazioni o reti di distribuzione di contenuti

  • Offload dell'elaborazione nei processi in background o anche nel calcolo client

Compromesso: rimozione della segmentazione. Il pilastro Sicurezza assegna priorità alla segmentazione forte per abilitare controlli di sicurezza con granularità fine e ridurre il raggio di esplosione.

La condivisione delle risorse è un approccio per migliorare l'efficienza. Aumenta la densità per ottimizzare l'utilizzo della capacità. Gli esempi includono scenari multitenancy o combinazione di applicazioni diverse in un'architettura in una piattaforma applicazione comune. L'aumento della densità può causare i problemi di sicurezza seguenti:

  • Maggiore rischio di spostamento laterale non autorizzato da un tenant a un altro.

  • Un'identità del carico di lavoro condivisa che viola il principio dei privilegi minimi e nasconde i singoli percorsi di controllo nei log di accesso.

  • Controlli di sicurezza perimetrali, ad esempio regole di rete, ridotte per coprire tutti i componenti che si trovano in co-localizzati, consentendo ai singoli componenti più di quanto necessario.

  • Compromissione dell'host della piattaforma applicazione o di un singolo componente a causa di un raggio di esplosione più grande. Questo aumento è causato da un accesso più semplice ai componenti localizzati.

  • La co-individuazione di componenti diversi che comportano più componenti nell'ambito della conformità a causa del relativo host condiviso.

Compromessi dell'efficienza delle prestazioni con Ottimizzazione costi

Compromesso: troppo offerta per la domanda. L'ottimizzazione dei costi e l'efficienza delle prestazioni hanno una priorità sufficiente per soddisfare la domanda.

  • Overprovisioning è un rischio quando i team tentano di attenuare i problemi di prestazioni in un carico di lavoro. Alcune cause comuni di overprovisioning includono:

    • La pianificazione iniziale della capacità è stata errata perché il team si è concentrato solo sulle stime del carico di picco, ignorando le strategie per il picco di smoothing nella progettazione del carico di lavoro.
    • Ridimensionamento o interruzione di una risorsa durante un passaggio di risoluzione dei problemi di una risposta agli eventi imprevisti.
  • La scalabilità automatica può essere configurata in modo errato. Alcuni esempi di scalabilità automatica non configurati includono:

    • Il ridimensionamento con modifiche minime in domanda o un periodo di cooldown esteso può comportare un costo maggiore rispetto alle richieste.
    • L'uso della scalabilità automatica senza un limite massimo impostato può causare una crescita incontrollata a causa di malfunzionamenti o abusi del sistema e superare i requisiti previsti per il carico di lavoro.
  • L'espansione in più aree può migliorare le prestazioni portando i carichi di lavoro più vicini all'utente e può evitare vincoli di capacità delle risorse temporanei. Tuttavia, aggiunge anche complessità e duplicazione delle risorse.

Compromesso: altri componenti. Una tecnica di ottimizzazione dei costi consiste nel consolidare con un numero minore di risorse aumentando la densità, rimuovendo la duplicazione e la co-individuazione delle funzionalità.

  • I modelli di progettazione cloud incentrati sulle prestazioni richiedono talvolta l'introduzione di componenti aggiuntivi. Questi componenti aggiuntivi comportano in genere un aumento complessivo dei costi per il carico di lavoro. Ad esempio, è possibile includere un bus di messaggi per il livello di carico o l'offload delle attività in un'applicazione o in una rete di distribuzione del contenuto per migliorare i tempi di risposta.

  • La segmentazione delle risorse consente a parti diverse di un carico di lavoro di avere caratteristiche di prestazioni distinte, consentendo l'ottimizzazione indipendente per ogni segmento. Tuttavia, può aumentare i costi totali di proprietà perché richiede più segmenti ottimizzati anziché un singolo componente generalizzato.

Compromesso: aumento degli investimenti sugli elementi che non sono allineati ai requisiti funzionali. Un approccio all'ottimizzazione dei costi sta valutando il valore fornito da qualsiasi soluzione distribuita.

  • Servizi Premium e SKU possono aiutare un carico di lavoro a soddisfare le destinazioni di prestazioni. Questi servizi in genere costano di più e possono fornire funzionalità aggiuntive. Potrebbero essere sottoutilizzati se molte delle funzionalità Premium non vengono usate in modo specifico per soddisfare gli obiettivi di prestazioni.

  • Un carico di lavoro efficiente richiede dati di telemetria per l'osservabilità che deve essere trasferita e archiviata. Un aumento dei dati di telemetria delle prestazioni raccolti può aumentare il costo del trasferimento e dell'archiviazione dei dati di telemetria.

  • Le attività di test delle prestazioni aggiungono costi non associati al valore del sistema di produzione. Esempi di costi di test delle prestazioni includono:

    • Creazione di istanze di ambienti dedicati ai test incentrati sulle prestazioni.
    • Uso di strumenti di prestazioni specializzati.
    • Dedicare tempo per eseguire i test.
  • I membri del team di formazione per attività di ottimizzazione delle prestazioni specializzate o il pagamento per i servizi di ottimizzazione delle prestazioni aggiungono al costo di un carico di lavoro.

Compromessi dell'efficienza delle prestazioni con l'eccellenza operativa

Compromesso: riduzione dell'osservabilità. L'osservabilità è necessaria per fornire un carico di lavoro con avvisi significativi e garantire la corretta risposta agli eventi imprevisti.

  • Ridurre il volume dei log e delle metriche per ridurre il tempo di elaborazione impiegato per raccogliere dati di telemetria anziché altre attività riduce l'osservabilità complessiva del sistema. Alcuni esempi dell'osservabilità ridotta risultante includono:

    • Limita i punti dati usati per compilare avvisi significativi.
    • Comporta lacune nella copertura delle attività di risposta agli eventi imprevisti.
    • Limita l'osservabilità nelle interazioni e nei limiti sensibili alla sicurezza o alla conformità.
  • Quando vengono implementati modelli di progettazione delle prestazioni, la complessità del carico di lavoro aumenta spesso. I componenti vengono aggiunti ai flussi critici. La strategia di monitoraggio del carico di lavoro e il monitoraggio delle prestazioni devono includere tali componenti. Quando un flusso si estende su più componenti o limiti dell'applicazione, la complessità del monitoraggio delle prestazioni del flusso aumenta. Le prestazioni del flusso devono essere correlate in tutti i componenti interconnessi.

Compromesso: maggiore complessità nelle operazioni. Un ambiente complesso ha interazioni più complesse e una maggiore probabilità di un impatto negativo da routine, ad hoc e operazioni di emergenza.

  • Migliorare l'efficienza delle prestazioni aumentando la densità aumenta il rischio nelle attività operative. Un errore in un singolo processo può avere un raggio di esplosione elevato.

  • Man mano che vengono implementati modelli di progettazione delle prestazioni, influiscono su procedure operative come backup, rotazioni chiave e strategie di ripristino. Ad esempio, il partizionamento dei dati e il partizionamento dei dati possono complicare le attività di routine quando i team tentano di assicurarsi che tali attività non influiscano sulla coerenza dei dati.

Compromesso: stress culturale. L'eccellenza operativa è radicata in una cultura di incolpevolità, rispetto e miglioramento continuo.

  • L'analisi della causa radice dei problemi di prestazioni identifica le carenze nei processi o nelle implementazioni che richiedono correzione. Il team deve considerare l'esercizio un'opportunità di apprendimento. Se i membri del team sono accusati di problemi, il morale può essere interessato.

  • I processi di routine e ad hoc possono influire sulle prestazioni del carico di lavoro. Spesso è considerato preferibile eseguire queste attività durante le ore di punta. Tuttavia, le ore di punta possono essere scomode o al di fuori delle ore regolari per i membri del team che sono responsabili o qualificati in queste attività.

Esplorare i compromessi per gli altri pilastri: