Migliorare l'efficienza grazie all'ottimizzazione

Completato
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, 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 del diritto del lavoro governativo e altri. La maggior parte delle integrazioni è Funzioni di Azure scritta in C# ospitata 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 rendono il team ansioso come 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 per monitorare in modo proattivo i modelli di prestazioni e ottimizzare anche l'applicazione.

Sfida di Contoso

  • Il team è piuttosto raschiato e il backlog è lungo. Nella maggior parte dei casi lavorano in una mentalità "fire and forget" durante la scrittura e la distribuzione di integrazioni; le integrazioni vengono scritte, distribuite e quindi il team passa all'attività successiva.
  • Il team è stato chiamato per problemi critici di supporto degli eventi imprevisti spesso a causa della leadership senior che non ha accesso ai dati in modo tempestivo.
  • Il team è profondamente consapevole del fatto che è necessario apportare miglioramenti, ma che non hanno la priorità di apportare le modifiche necessarie.

Applicazione dell'approccio e dei risultati

  • Il team alloca ora il 20% di ogni sprint per il debito tecnico e altre attività di ottimizzazione. Questo è l'acquisto del tempo del team di progettazione per assegnare 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 per risolvere i problemi di prestazioni che causano ritardi nell'elaborazione dei dati.

Cercare miglioramenti alla 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 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 per valutare le alternative a questo approccio.

Applicazione dell'approccio e dei 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 per affrontare le inefficienze delle prestazioni rispetto alle semplici ottimizzazioni del codice e alla pulizia dei dati.

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 app Azure lication 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 dei risultati

  • Anche se il feedback è importante, il team si rende conto che Application Insights esegue un buon lavoro per rilevare gli hotspot nelle applicazioni monitorate.
  • Il team inizia a sfruttare questa funzionalità e, in combinazione con la conoscenza dei flussi importanti, si sta trasformando in uno strumento prezioso per il 20% del lavoro del team sui miglioramenti tecnici e sull'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 leadership abbia riscontrato un problema.

Verificare le conoscenze

1.

In che modo il team contoso ha modificato il processo di sviluppo per risolvere i problemi di prestazioni in corso?

2.

Quale delle seguenti è una buona strategia per migliorare l'efficienza del carico di lavoro?

3.

Quale tipo di strumento consente di analizzare le tendenze delle prestazioni e identificare i colli di bottiglia dell'esecuzione?