Progettare per soddisfare i requisiti di capacità

Completato
Fornire una fornitura sufficiente per soddisfare la domanda prevista.

È importante misurare in modo proattivo le prestazioni. La misurazione delle prestazioni comporta la misurazione delle linee di base e la comprensione preliminare dei componenti del sistema che potrebbero rappresentare sfide. È possibile ottenerlo senza eseguire un test completo delle prestazioni o tramite un'ottimizzazione granulare. Eseguendo questi passaggi iniziali, si stabilisce una base per una gestione efficace delle prestazioni all'inizio del ciclo di vita dello sviluppo.

Esaminare il sistema nel suo complesso, invece di concentrarsi sui singoli componenti. Evitare l'ottimizzazione in questa fase. Un miglioramento granulare delle prestazioni comporta compromessi in altre aree. Man mano che si procede nel ciclo di vita e si iniziano i test di accettazione dell'utente o si passa alla produzione, è possibile identificare rapidamente quali aree richiedono un'ulteriore ottimizzazione.

Scenario di esempio

Contoso Manufacturing ha sviluppato un'app di microservizi basata su Java Spring internamente usata per monitorare e ottimizzare i processi di produzione. Il team del carico di lavoro sta eseguendo la migrazione dell'app, attualmente ospitata in locale, ad Azure.

L'app ospitata in Azure sarà basata su Azure Spring Apps, Database di Azure per MySQL e hub IoT di Azure. Contoso ha una connessione ExpressRoute ad Azure.

Progettare il carico di lavoro in modo efficace

Scegliere le risorse appropriate nello stack di tecnologie, che consente di soddisfare gli obiettivi di prestazioni e di integrarsi con il sistema. Prendere in considerazione le funzionalità che possono soddisfare i requisiti di scalabilità e trovare il giusto equilibrio tra allocazione delle risorse e requisiti di sistema, per gestire in modo efficiente picchi imprevisti.

Analizzando le diverse funzionalità delle risorse, si garantisce che ogni componente contribuisca alla funzionalità e alle prestazioni complessive del sistema ed è possibile identificare le funzionalità di ridimensionamento che è possibile sfruttare.

Le risorse di ridimensionamento corrette possono soddisfare le variazioni della domanda senza il provisioning eccessivo, con un risparmio sui costi.

Sfida di Contoso

  • L'infrastruttura dell'ambiente dell'app locale esistente è completamente gestita da Contoso, che comporta un notevole carico di lavoro per il team. Attualmente effettuano il provisioning e la gestione di server, reti e archiviazione, nonché configurare e aggiornare il runtime del servizio Java Spring e tutte le dipendenze.
  • Il team è in attesa di eseguire la migrazione a un modello PaaS con Azure Spring Apps, che consentirà al team di concentrarsi maggiormente sull'energia necessaria per assicurarsi che l'applicazione fornisca il valore aziendale previsto e dedicare meno tempo alla gestione dell'infrastruttura.
  • Questa applicazione è fondamentale per l'azienda di Contoso e ha requisiti di prestazioni rigorosi, quindi è necessario assicurarsi che le scelte tecnologico effettuate nell'ambito della migrazione consentano di soddisfare tali requisiti.

Applicazione dell'approccio e dei risultati

  • Dopo aver confrontato i diversi piani disponibili, il team sceglie il piano Standard di Azure Spring Apps, che fornisce un servizio completamente gestito per le app Spring Boot, ottimizzato per il traffico di produzione. Con un massimo di 500 istanze per app, il piano Standard è in grado di fornire capacità di calcolo sufficienti per l'utilizzo previsto massimo.
  • Inoltre, il servizio può essere configurato per aumentare il numero di istanze in base alle esigenze e ridimensiona le risorse di calcolo quando la capacità aggiuntiva non è necessaria.
  • Il team ha esaminato il piano Enterprise, che è in grado di aumentare fino a 1000 istanze per app, ma ha deciso di non aver bisogno di tale quantità di capacità a questo punto. Sono anche sicuri che non hanno bisogno del livello di supporto delle offerte del piano Enterprise o del resto delle sue funzionalità esclusive.

Prevedere correttamente le esigenze di capacità

Eseguire la pianificazione della capacità in base alla domanda e alla capacità delle risorse selezionate per arricchire il modello di prestazioni. Usare tecniche di modellazione predittiva per prevedere le modifiche previste nella capacità che possono verificarsi con modifiche prevedibili e impreviste. Definire obiettivi di prestazioni che possono essere convertiti in requisiti tecnici.

Adottando questo approccio, è possibile usare in modo efficiente le risorse e soddisfare la domanda senza effettuare il provisioning eccessivo, evitando così costi non necessari. Inoltre, consente di comprendere in che modo le scelte di progettazione influiscono sulle prestazioni.

Sfida di Contoso

  • Per ottimizzare l'uso efficiente dei macchinari di produzione, la linea di produzione di Contoso opera su una pianificazione ciclica, producendo prodotti diversi in momenti diversi del giorno.
  • Ogni prodotto richiede operazioni diverse e quindi esigenze di calcolo diverse dall'applicazione di controllo. Durante la modifica tra i prodotti, l'applicazione di controllo deve eseguire un'ampia gamma di attività che richiedono una maggiore capacità di calcolo, ad esempio l'analisi dei dati dell'esecuzione di produzione precedente e l'aggiornamento degli algoritmi di controllo per i computer.

Applicazione dell'approccio e dei risultati

  • Per soddisfare la domanda più elevata durante i periodi di modifica, il team identifica innanzitutto i flussi che gestiscono la funzionalità di modifica, documentando i requisiti di prestazioni e stimando i volumi delle transazioni in base alla versione locale dell'applicazione. Con questi dati, il team procede alla stima della capacità di calcolo necessaria dai microservizi che fanno parte dei flussi di destinazione.
  • La scalabilità automatica è configurata per questi componenti, assicurandosi che venga effettuato il provisioning di risorse aggiuntive prima del periodo di cambio e rilasciate al termine delle attività.
  • Le impostazioni di scalabilità automatica verranno modificate prima di distribuire l'app nell'ambiente di produzione, in base alle prestazioni effettive nel nuovo ambiente.

Distribuzione del modello di verifica

Implementare un modello di verifica (POC) che convalida i requisiti tecnici e le scelte di progettazione.

Un modello di verifica è fondamentale per convalidare la progettazione per determinare se il sistema può soddisfare gli obiettivi di prestazioni e se tali obiettivi sono realistici. In base al carico previsto, è possibile verificare se la capacità prevista può soddisfare gli obiettivi di prestazioni.

Verificare anche le implicazioni relative ai costi delle scelte di progettazione.

Sfida di Contoso

  • Durante lo sviluppo, il team esegue test completi di carico e prestazioni delle funzionalità dell'applicazione usando simulatori di dispositivi e usa queste informazioni per ottimizzare la configurazione della scalabilità automatica.
  • Un aspetto che può influire sull'efficacia della configurazione della scalabilità automatica è la potenziale latenza di rete che comunica dall'ambiente Azure Spring Apps ai dispositivi IoT nel piano di produzione, che è connesso ad Azure tramite ExpressRoute. Il team specifica che la latenza sarà superiore in Azure rispetto alla versione locale se l'app e tale latenza potrebbe anche essere influenzata da altri fattori, ad esempio l'ora del giorno o la posizione del dispositivo.
  • È probabile che un aumento della latenza abbia un impatto sul volume delle transazioni per ogni istanza di microservizio in grado di elaborare.

Applicazione dell'approccio e dei risultati

  • Il team decide di distribuire un modello di verifica in Azure per convalidare le proprie ipotesi e raccogliere le metriche che possono essere usate per ottimizzare la configurazione. Creano un'app Azure Spring di test per comunicare con i dispositivi IoT distribuiti nel piano di produzione. I dispositivi IoT sono connessi alla rete locale e vengono registrati con hub IoT di Azure. L'applicazione di test si connette in modo casuale ai dispositivi durante tutto il giorno inviando un semplice ping e registra il tempo necessario per ricevere una risposta.
  • I dati acquisiti durante questo modello di verifica, combinati con i risultati dei test di carico, consentiranno al team di stimare in modo più accurato la capacità di calcolo necessaria, durante la preparazione per il lancio iniziale della produzione.
  • Il team sta anche esaminando i modi per migliorare ulteriormente i test case usati per i test di carico per simulare tempi di risposta più realistici in base alle informazioni apprese dal modello di verifica.

Verificare le conoscenze

1.

Nel contesto della progettazione per soddisfare i requisiti di capacità, qual è un modo per scegliere le risorse appropriate per il carico di lavoro?

2.

Per cosa è consigliabile usare la modellazione predittiva?

3.

Qual è un'ipotesi che Contoso stava tentando di convalidare con la distribuzione del modello di verifica?