Compromessi per l'efficienza delle prestazioni
Un carico di lavoro che soddisfa gli obiettivi di prestazioni senza provisioning eccessivo è efficiente. L'obiettivo dell'efficienza delle prestazioni è avere un'offerta sufficiente per gestire sempre la domanda. Le strategie chiave per l'efficienza delle prestazioni includono l'uso appropriato di ottimizzazioni del codice, modelli di progettazione, pianificazione della capacità e scalabilità. Obiettivi di prestazioni chiari e test alla base di 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 di revisione della progettazione per l'efficienza delle prestazioni potrebbero influire sugli obiettivi di ottimizzazione di altri pilastri. Alcune decisioni relative all'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.
Compromessi dell'efficienza delle prestazioni con affidabilità
Compromesso: riduzione della replica e aumento della densità. Un elemento fondamentale dell'affidabilità è garantire 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 o nella piattaforma dell'applicazione.
Il ridimensionamento o il ridimensionamento per ridurre al minimo la capacità in eccesso può lasciare un carico di lavoro sottoposto a provisioning durante i picchi di utilizzo, che causa 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 rispetto alla domanda introduce variabilità nella topologia del carico di lavoro e aggiunge un componente che deve funzionare correttamente affinché il sistema sia affidabile. 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 orizzontale consentono di evitare problemi di prestazioni in set di dati di grandi dimensioni o a cui si accede di frequente. Tuttavia, l'implementazione di questi modelli aumenta la complessità perché la coerenza (finale) deve essere mantenuta tra risorse aggiuntive.
La denormalizzazione dei dati per i modelli di accesso ottimizzati può migliorare le prestazioni, ma introduce complessità perché è necessario mantenere 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 la superficie di attacco del carico di lavoro. I componenti devono quindi essere resi affidabili per mantenere affidabile l'intero carico di lavoro. Alcuni esempi:
- Bus di messaggi per il livellamento del carico, che introduce un componente critico con stato.
- Un servizio di bilanciamento del carico per le repliche con scalabilità automatica, che richiede un'operazione affidabile e l'integrazione delle repliche.
- Offload dei dati nelle 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 e prevenzione dei rischi per l'affidabilità.
I test delle prestazioni in ambienti attivi, come l'uso di 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 APM (Application Performance Monitoring) che consente ai team di apprendere dagli ambienti attivi. Gli strumenti APM vengono installati e configurati nel codice dell'applicazione o nell'ambiente di hosting. Uso improprio, superamento delle limitazioni o configurazione errata dello strumento può compromettere la funzionalità e la manutenzione, potenzialmente compromettendo l'affidabilità.
Compromessi per l'efficienza delle prestazioni con la sicurezza
Compromesso: riduzione dei controlli di sicurezza. I controlli di sicurezza vengono stabiliti in più livelli, a volte ridondanti, per fornire una difesa approfondita.
Una strategia di ottimizzazione delle prestazioni consiste nel rimuovere o ignorare componenti o 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. Vedi gli esempi seguenti:
La rimozione della crittografia in transito o inattivi per migliorare la 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 applicazione delle patch di sicurezza per limitare l'impatto sulle prestazioni può rendere 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 i controlli di convalida dei dati o sicurezza dei contenuti per un'elaborazione dei dati più rapida potrebbe compromettere l'integrità dei dati, soprattutto se gli input sono dannosi.
L'uso di meno entropia negli algoritmi di crittografia o hash, ad esempio nel vettore di inizializzazione (IV), è più efficiente, ma semplifica la crittografia.
Compromesso: maggiore area di superficie del carico di lavoro. La sicurezza assegna priorità a una superficie di attacco 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 la superficie di attacco del carico di lavoro. I nuovi componenti devono essere protetti, possibilmente in modi non già usati nel sistema e spesso aumentano l'ambito di conformità. Considerare questi componenti comunemente aggiunti:
Bus di messaggi per il livellamento del carico
Un servizio di bilanciamento del carico per le repliche con scalabilità automatica
Offload dei dati nelle cache, nelle reti di distribuzione di applicazioni o nelle reti per la distribuzione di contenuti
Offload dell'elaborazione in processi in background o persino nell'ambiente di calcolo client
Compromesso: rimozione della segmentazione. Il pilastro Sicurezza assegna priorità alla segmentazione avanzata per abilitare controlli di sicurezza con granularità fine e ridurre il raggio di esplosione.
La condivisione delle risorse tramite una maggiore densità è un approccio per migliorare l'efficienza. Gli esempi includono scenari multi-tenancy o combinazioni di applicazioni diverse in un'architettura in una piattaforma applicativa comune. L'aumento della densità può causare i seguenti problemi di sicurezza:
Aumento del 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 audit trail nei log di accesso.
Controlli di sicurezza perimetrale, ad esempio regole di rete, ridotte per coprire tutti i componenti che si trovano in modo condiviso, offrendo ai singoli componenti un accesso maggiore del necessario.
Compromissione dell'host della piattaforma dell'applicazione o di un singolo componente a causa di un raggio di esplosione maggiore. Questo aumento è causato da un accesso più semplice ai componenti localizzati.
La condivisione di componenti diversi che portano a più componenti nell'ambito della conformità a causa dell'host condiviso.
Compromessi dell'efficienza delle prestazioni con Ottimizzazione costi
Compromesso: troppa offerta per la domanda. Sia l'ottimizzazione dei costi che l'efficienza delle prestazioni hanno la priorità di avere una quantità sufficiente per soddisfare la domanda.
L'overprovisioning è un rischio quando i team tentano di attenuare i problemi di prestazioni in un carico di lavoro. Alcune cause comuni dell'overprovisioning includono:
- La pianificazione iniziale della capacità non è stata valutata correttamente 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.
- Aumento o riduzione delle prestazioni 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 configurata in modo errato includono:
- La scalabilità verticale con variazioni minime della domanda o un periodo di raffreddamento 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 del sistema o abusi e di 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 ed evitare vincoli di capacità delle risorse temporanei. Tuttavia, tale topologia aggiunge anche complessità e duplicazione delle risorse.
Compromesso: più componenti. Una tecnica di ottimizzazione dei costi consiste nel consolidare con un numero minore di risorse aumentando la densità, rimuovendo la duplicazione e la funzionalità di individuazione condivisa.
I modelli di progettazione cloud incentrati sulle prestazioni talvolta richiedono 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 livellamento del carico o l'offload delle attività in un'applicazione o in una rete per la distribuzione di contenuti 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, abilitando l'ottimizzazione indipendente per ogni segmento. Tuttavia, può aumentare i costi di proprietà totali perché richiede più segmenti ottimizzati anziché un singolo componente generalizzato.
Compromesso: aumento degli investimenti sugli articoli non allineati ai requisiti funzionali. Un approccio all'ottimizzazione dei costi consiste nella valutazione del valore fornito da qualsiasi soluzione distribuita.
I servizi Premium e gli SKU possono aiutare un carico di lavoro a soddisfare gli obiettivi di prestazioni. Questi servizi in genere costano di più e possono fornire funzionalità aggiuntive. Potrebbero essere sottoutilizzate se molte delle funzionalità Premium non vengono usate in modo specifico per soddisfare gli obiettivi di prestazioni.
Un carico di lavoro con prestazioni elevate richiede dati di telemetria per l'osservabilità che devono essere trasferiti e archiviati. 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 che non sono associati al valore del sistema di produzione. Esempi di costi di test delle prestazioni includono:
- Creazione di istanze di ambienti dedicati a test incentrati sulle prestazioni.
- Uso di strumenti specializzati per le prestazioni.
- Dedicare tempo per eseguire i test.
I membri del team di formazione per le attività di ottimizzazione delle prestazioni specializzate o il pagamento per i servizi di ottimizzazione delle prestazioni aggiunge 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 una risposta corretta agli eventi imprevisti.
La riduzione del volume di log e metrica per ridurre il tempo di elaborazione impiegato per raccogliere dati di telemetria anziché altre attività riduce l'osservabilità complessiva del sistema. Di seguito sono riportati alcuni esempi dell'osservabilità ridotta risultante:
- Limita i punti dati usati per creare avvisi significativi.
- Comporta lacune nella copertura per le 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 operazioni di routine, ad hoc e 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 delle chiavi e strategie di ripristino. Ad esempio, il partizionamento dei dati e il partizionamento orizzontale possono complicare le attività di routine quando i team tentano di garantire 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'esecuzione dell'analisi della causa radice dei problemi di prestazioni identifica le carenze nei processi o nelle implementazioni che richiedono la correzione. Il team deve considerare l'esercizio un'opportunità di apprendimento. Se i membri del team sono incolpati per problemi, il morale può essere influenzato.
I processi routine e ad hoc possono influire sulle prestazioni del carico di lavoro. È spesso considerato preferibile eseguire queste attività durante le ore di minore attività. Tuttavia, le ore non di punta possono essere scomode o al di fuori delle ore regolari per i membri del team responsabili o qualificati in queste attività.
Collegamenti correlati
Esplorare i compromessi per gli altri pilastri: