Migliorare l'efficienza grazie all'ottimizzazione
Migliorare l'efficienza del sistema all'interno degli obiettivi di prestazioni definiti per aumentare il valore del carico di lavoro. |
---|
Le destinazioni impostate durante la fase iniziale si basano su un livello ragionevole di esperienza utente, considerando diversi vincoli. È consigliabile rivalutare e regolare le destinazioni per migliorare ulteriormente l'esperienza. Per migliorare ulteriormente l'esperienza, si richiede una chiara comprensione del modo in cui viene usato il sistema, della sua evoluzione e del modo in cui la piattaforma o la tecnologia sono cambiate nel tempo. Il ciclo di monitoraggio, ottimizzazione, test e distribuzione è un processo continuo.
Le attività di ottimizzazione dell'efficienza consentono a un carico di lavoro di lavorare con un consumo di risorse inferiore. Possono causare un sovraccarico del carico di lavoro con capacità di riserva. Usare tale capacità per migliorare l'affidabilità del sistema. Eliminare la capacità di migliorare il costo del sistema. In alternativa, riconfigurare la capacità per supportare nuove funzionalità del prodotto sulle risorse esistenti.
Quando il sistema ottiene efficienza, è possibile impostare e mantenere nuovi obiettivi di prestazioni.
Scenario di esempio
Il team di progettazione delle risorse umane di Contoso supporta integrazioni personalizzate nel sistema di informazioni sulle risorse umane dell'organizzazione (HRIS). Queste integrazioni includono integrazioni finanziarie per retribuzioni, statistiche di assunzione per la segnalazione delle leggi sul lavoro governative e altri. La maggior parte delle integrazioni sono Funzioni di Azure scritte in C# ospitate in un cluster Kubernetes abilitato per Azure Arc nel data center dell'organizzazione. La maggior parte dei processi è stata eseguita correttamente, ma a causa di un ritardo nell'elaborazione, alcuni di questi preoccupano il team,perché a volte i dati critici non sono disponibili quando il direttore delle risorse umane ne ha bisogno.
Assegnare priorità alle ottimizzazioni delle prestazioni
Allocare cicli dedicati per l'ottimizzazione delle prestazioni per soddisfare i requisiti non funzionali e le ottimizzazioni nelle aree funzionali. Le destinazioni per questa ottimizzazione sono risorse, codice, conservazione dei dati, query di database e altre.
Adottando questo approccio, è possibile creare una cultura dell'ottimizzazione basata sulle prestazioni. Il team è responsabile del monitoraggio proattivo dei modelli di prestazioni e anche dell'ottimizzazione dell'applicazione.
Sfida di Contoso
- Il team è piuttosto risicato e il backlog è lungo. Nella maggior parte dei casi lavorano con una mentalità "spara e dimentica" durante la scrittura e la distribuzione di integrazioni; le integrazioni vengono scritte, distribuite e poi il team passa all'attività successiva.
- Il team è stato chiamato per problemi critici di supporto degli eventi imprevisti, spesso perché la leadership senior che non ha accesso ai dati in modo tempestivo.
- Il team è profondamente consapevole del fatto che è necessario apportare miglioramenti, ma non hanno dato priorità all'effettuare le modifiche necessarie.
Applicazione dell'approccio e risultati
- Il team alloca ora il 20% di ogni sprint al debito tecnico e altre attività di ottimizzazione. Questo da tempo al team di progettazione di dare priorità e affrontare aree critiche e altre aree in cui l'impatto può essere più significativo.
- Adottando questo approccio, il team è in grado di dedicare il tempo necessario a risolvere i problemi di prestazioni che causano ritardi nell'elaborazione dei dati.
Cercare miglioramenti nella progettazione
Migliorare l'architettura con nuovi modelli e componenti di progettazione, che possono migliorare le prestazioni, in modi non considerati in precedenza a causa di tempi o budget limitati.
I nuovi componenti e la progettazione possono ottimizzare il sistema, migliorando l'esperienza utente e l'efficienza dei costi a lungo termine. Ad esempio, è possibile usare la memorizzazione nella cache o l'aggiunta di un componente di rete per la distribuzione di contenuti.
Sfida di Contoso
- Il team ha usato Funzioni di Azure e flussi basati su trigger per diversi anni e non ha dedicato tempo alla valutazione di alternative a questo approccio.
Applicazione dell'approccio e risultati
- Il team esamina altri modi per usare Funzioni di Azure e rileva che le funzioni durevoli supportano un modello fan-out che può aiutarli a parallelizzare una determinata attività di retribuzione.
- Il team incorpora questo modello nel catalogo di progettazione per la progettazione futura. È stato anche un buon promemoria per esaminare altri modi e affrontare le inefficienze delle prestazioni rispetto alle semplici ottimizzazioni del codice e alla pulizia dei dati.
Analizzare i dati di telemetria e le tendenze
Usare gli strumenti di monitoraggio per analizzare le tendenze cronologiche e identificare i flussi e i percorsi di implementazione del codice che trarranno il massimo vantaggio da uno sforzo di ottimizzazione delle prestazioni. A questo scopo, è consigliabile usare strumenti e profiler di monitoraggio delle prestazioni delle applicazioni. Identificare inoltre i percorsi di accesso frequente delle operazioni e altri potenziali colli di bottiglia nel sistema.
Quando si identificano le aree problematiche ricorrenti, il team può concentrarsi sulla posizione in cui i guadagni sono i più alti.
Sfida di Contoso
- Il team ha instrumentato tutte le funzioni con Azure Application Insights.
- Usano principalmente Application Insights per risolvere i problemi di interruzione e per il sink di registrazione.
- Storicamente, il loro approccio alle aree di destinazione per i miglioramenti si basa sul feedback proveniente dal team di leadership senior.
Applicazione dell'approccio e risultati
- Anche se il feedback è importante, il team si rende conto che Application Insights esegue un buon lavoro nel rilevare gli hotspot nelle applicazioni monitorate.
- Il team inizia a sfruttare questa funzionalità e, in combinazione con la conoscenza dei flussi importanti, la cosa si sta trasformando in uno strumento prezioso per il 20% del lavoro del team allocato ai miglioramenti tecnici e all'efficienza.
- Usando Application Insights, il team è in grado di identificare in modo proattivo un'integrazione rischiosa e gestirla prima che un membro del team di leader abbia riscontrato un problema.