Progettazione di applicazioni di carichi di lavoro sostenibili in Azure

Quando si creano applicazioni nuove o aggiornate esistenti, è fondamentale considerare come la soluzione influirà sul clima e se ci sono modi per migliorare e ottimizzare. Informazioni su considerazioni e consigli per ottimizzare il codice e le applicazioni per una progettazione di applicazioni più sostenibile.

Importante

Questo articolo fa parte della serie di carichi di lavoro sostenibili di Azure Well-Architected . Se non si ha familiarità con questa serie, è consigliabile iniziare con che cos'è un carico di lavoro sostenibile?

Efficienza del codice

Le richieste sulle applicazioni possono variare ed è essenziale considerare i modi per stabilizzare l'utilizzo per evitare sovrautilizzazioni o sottoutilizzo delle risorse, che possono causare perdite di energia non necessarie.

Valutare lo spostamento di monoliti in un'architettura di microservizi

Le applicazioni monolitiche in genere vengono ridimensionate come unità, lasciando spazio sufficiente per ridimensionare solo i singoli componenti che potrebbero essere necessari.

Allineamento Green Software Foundation: Efficienza energetica, Efficienza hardware

Consiglio:

  • Valutare le linee guida per l'architettura dei microservizi .
  • Un'architettura di microservizi consente di ridimensionare solo i componenti necessari durante il picco di carico; garantire che i componenti inattive vengano ridimensionati o in basso. Inoltre, può ridurre il sovraccarico e le risorse necessarie per la distribuzione di applicazioni monolitiche.
  • Considerare questo compromesso: riducendo le risorse di calcolo necessarie, è possibile aumentare la quantità di traffico nella rete e la complessità dell'applicazione può aumentare in modo significativo.
  • Si consideri questo altro compromesso: il passaggio ai microservizi può comportare un sovraccarico di distribuzione aggiuntivo con numerose analogie nelle pipeline di distribuzione. Considerare attentamente le risorse di distribuzione necessarie per le architetture monolitiche rispetto alle architetture di microservizi.
  • Leggere anche informazioni sull'inserimento in contenitori di applicazioni monolitiche.

Migliorare l'efficienza delle API

Molte applicazioni cloud moderne sono progettate per eseguire transazioni asincrone di molti messaggi tra servizi e componenti. Si consideri il formato usato per codificare i dati del payload. Quante informazioni è necessario comunicare all'applicazione e c'è spazio per ridurre la chattiness?

Allineamento Green Software Foundation: Efficienza energetica

Consiglio:

Garantire la compatibilità software con le versioni precedenti per assicurarsi che funzioni su hardware legacy

Valutare come le applicazioni eseguono il rendering delle informazioni. L'applicazione deve servire in modo critico tutto nella massima qualità, con conseguente maggiore larghezza di banda e elaborazione? C'è spazio per ridurre la qualità dei componenti nell'interfaccia utente per soddisfare meglio gli obiettivi di sostenibilità?

Allineamento verde di Software Foundation: efficienza hardware

Consiglio:

  • Supportare più dispositivi consumer degli utenti finali, ad esempio browser e sistemi operativi meno recenti. Questa compatibilità con le versioni precedenti migliora l'efficienza hardware riutilizzando hardware esistente invece di richiedere un aggiornamento hardware per il funzionamento della soluzione.
  • Considera questo compromesso: se gli aggiornamenti software più recenti hanno miglioramenti significativi delle prestazioni, l'uso di versioni software precedenti potrebbe non essere più efficiente.

Sfruttare i modelli di progettazione nativi del cloud

Informazioni sui modelli di progettazione nativi del cloud è utile per la creazione di applicazioni, sia che siano ospitate in Azure o in esecuzione altrove. L'ottimizzazione delle prestazioni e dei costi dell'applicazione cloud ridurrà anche l'utilizzo delle risorse, di conseguenza le emissioni di carbonio.

Allineamento Green Software Foundation: Efficienza energetica, Efficienza hardware

Consiglio:

Prendere in considerazione l'uso di modelli di interruttore

Valutare e impedire alle applicazioni di eseguire operazioni che potrebbero non riuscire. Gli errori ripetuti possono causare un sovraccarico e un'elaborazione non necessaria che è possibile evitare con modelli di progettazione appropriati.

Allineamento Green Software Foundation: Efficienza energetica

Consiglio:

  • Un interruttore può fungere da proxy per le operazioni che potrebbero non riuscire e monitorare il numero di errori recenti che si sono verificati e usare tali informazioni per decidere se procedere.
  • Studiare il modello interruttore e quindi valutare come implementare i modelli di interruttore per le applicazioni.
  • Prendere in considerazione l'uso di Monitoraggio di Azure per monitorare gli errori e configurare gli avvisi.

Ottimizzare il codice per un utilizzo efficiente delle risorse

Le applicazioni distribuite usando codice inefficiente possono comportare un impatto intrinseco sulla sostenibilità.

Allineamento Green Software Foundation: Efficienza energetica, Efficienza hardware

Consiglio:

  • Ridurre i cicli della CPU e il numero di risorse necessarie per l'applicazione.
  • Usare algoritmi ottimizzati ed efficienti e modelli di progettazione.
  • Si consideri il principio Don't repeat yourself (DRY).

Ottimizzare per i modelli di accesso asincroni

Le richieste sulle applicazioni possono variare ed è essenziale considerare i modi per stabilizzare l'utilizzo per evitare sovrautilizzazioni o sottoutilizzo delle risorse, che possono causare perdite di energia non necessarie.

Allineamento Green Software Foundation: Efficienza energetica

Consiglio:

  • Le richieste di accodamento e buffer che non richiedono l'elaborazione immediata, quindi elaborano in batch. La progettazione delle applicazioni in questo modo consente di ottenere un utilizzo stabile e consente di appiattire il consumo per evitare richieste spiky.
  • Informazioni sull'ottimizzazione per i modelli di accesso asincroni.

Valutare il rendering lato server e lato client

Determinare se eseguire il rendering sul lato server o sul lato client durante la compilazione di applicazioni con un'interfaccia utente.

Allineamento Green Software Foundation: Efficienza energetica, Efficienza hardware

Consiglio:

  • Considerare questi vantaggi del rendering lato server:

    • Quando la potenza del server proviene da alternative meno inquinanti rispetto alle impostazioni locali del client.
    • Quando l'hardware nel server ha rapporti di elaborazione-energia migliori.
    • Può usare la memorizzazione nella cache centralizzata per ridurre più rendering non necessari.
    • La riduzione del numero di round trip da browser a server può essere particolarmente importante quando il dispositivo del client ha un collegamento perso.
    • Quando i dispositivi client sono meno recenti e hanno CPU più lente. Gli utenti non devono aggiornare i dispositivi per supportare un browser moderno.
  • Considerare questi vantaggi del rendering lato client:

    • Quando i dispositivi degli utenti finali sono più adatti, il push della responsabilità del rendering ai client.
    • È più efficiente solo eseguire il rendering di ciò che è necessario e come richiesto, anziché eseguire il rendering di tutto almeno una volta.
    • Non è necessario un server, perché è possibile basarsi sull'archiviazione statica.
    • La memorizzazione nella cache del browser viene usata nei client.

Essere consapevoli della progettazione dell'esperienza utente per la sostenibilità

Valutare in che modo la progettazione dell'esperienza utente di un carico di lavoro influisce sulla sostenibilità e determinare quali opzioni esistono per migliorare l'efficienza energetica e ridurre il carico di rete, l'elaborazione dei dati e le risorse di calcolo non necessarie.

Allineamento Green Software Foundation: Efficienza energetica

Consiglio:

  • Valutare la possibilità di ridurre il numero di componenti da caricare ed eseguire il rendering nelle pagine.
  • Determinare se l'applicazione può eseguire il rendering di immagini e video con risoluzione inferiore.
    • Non eseguire il rendering di immagini a dimensione intera come anteprime in cui il browser esegue il ridimensionamento.
    • L'uso di immagini a dimensione intera come anteprime o immagini ridimensionate trasferisce più dati, traffico di rete non necessario e utilizzo aggiuntivo della CPU sul lato client a causa del ridimensionamento delle immagini e del pre-rendering.
  • Assicurarsi che non ci siano pagine inutilizzate contribuirà a ridurre al minimo la progettazione dell'esperienza utente.
  • Prendere in considerazione la ricerca e la trovabilità. Semplificando la ricerca degli utenti, gli utenti possono ridurre la quantità di dati archiviati e recuperati.
  • Valutare la possibilità di fornire un'interfaccia utente più leggera, usando meno risorse e con un impatto inferiore sulla sostenibilità e fornire agli utenti una scelta informata.
  • Risparmiare energia offrendo app e siti Web in modalità scura, con sfondi scuri.
  • Optare per l'uso di tipi di carattere di sistema quando possibile per evitare di forzare i client a scaricare tipi di carattere aggiuntivi, causando un carico di rete maggiore.

Aggiornare il codice legacy

Valutare la possibilità di aggiornare o deprecare il codice legacy se non è in esecuzione nell'infrastruttura cloud moderna o con gli aggiornamenti più recenti.

Allineamento verde di Software Foundation: efficienza hardware

Consiglio:

  • Identificare codice legacy inefficiente adatto per la modernizzazione.
  • Verificare se sono disponibili opzioni per passare a serverless o a una delle opzioni PaaS ottimizzate.
  • Considerare questo compromesso: l'aggiornamento del codice precedente che potrebbe finire per essere deprecato può richiedere tempo prezioso.

Passaggio successivo

Esaminare le considerazioni sulla progettazione per la piattaforma dell'applicazione.