Prendi in considerazione la modalità serverless. NET - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Prendi in considerazione la modalità serverless. NET

Panoramica

L'elaborazione serverless è diventata un approccio popolare per la creazione e la distribuzione di applicazioni. Ciò è dovuto principalmente alla scalabilità e all'agilità offerte dall'approccio serverless nella creazione di un'architettura moderna. Tuttavia, è importante considerare l'impatto sui costi dell'elaborazione serverless in alcuni scenari.

Lambda è una piattaforma di elaborazione serverless che consente agli sviluppatori di eseguire codice senza la necessità di server dedicati. Lambda è un'opzione particolarmente interessante per. NETsviluppatori che desiderano ridurre i costi dell'infrastruttura. Con Lambda,. NETgli sviluppatori possono sviluppare e distribuire applicazioni altamente scalabili e potenzialmente convenienti. Utilizzando un approccio serverless, gli sviluppatori non forniscono più server per gestire le richieste delle applicazioni. Gli sviluppatori possono invece creare funzioni che vengono eseguite su richiesta. Ciò rende un approccio serverless più scalabile, gestibile e potenzialmente più conveniente rispetto all'esecuzione, alla gestione e alla scalabilità delle macchine virtuali. Di conseguenza, paghi solo per le risorse utilizzate dall'applicazione, senza doversi preoccupare del sottoutilizzo delle risorse o dei costi di manutenzione del server.

Gli sviluppatori possono utilizzare sistemi moderni e multipiattaforma. NETversioni per creare applicazioni serverless veloci, efficienti ed economiche. Il. NETLe versioni core e più recenti sono un framework gratuito e open source più adatto all'esecuzione su piattaforme serverless rispetto alle versioni precedenti. NETVersioni del framework. Ciò consente agli sviluppatori di ridurre i tempi di sviluppo e aumentare le prestazioni delle applicazioni. Moderno. NETsupporta anche una serie di linguaggi di programmazione, tra cui C# e F#. Per questo motivo, è un'opzione interessante per gli sviluppatori che desiderano creare architetture moderne nel cloud.

Questa sezione spiega come è possibile ottenere risparmi sui costi utilizzando Lambda come opzione serverless. È possibile ottimizzare ulteriormente i costi perfezionando i profili di esecuzione delle funzioni Lambda, dimensionando correttamente l'allocazione di memoria delle funzioni Lambda, utilizzando Native e passando a funzioni basate su Graviton. AOT

Impatto sui costi

L'entità della riduzione dei costi dipende da diversi fattori, tra cui il numero di esecuzioni che verranno eseguite dalle funzioni serverless, oltre alla quantità di memoria allocata e alla durata di ciascuna funzione. AWS Lambda offre un piano gratuito, che include un milione di richieste gratuite al mese e 400.000 GB di secondi di elaborazione al mese. Puoi ridurre in modo significativo i costi mensili per i carichi di lavoro che rientrano o superano questi limiti del piano gratuito.

Potrebbero inoltre esserci costi aggiuntivi quando si utilizza un sistema di bilanciamento del carico con funzioni Lambda come destinazione. Viene calcolata come la quantità di dati elaborati dal load balancer per le destinazioni Lambda.

Consigli per l'ottimizzazione dei costi

Dimensiona correttamente le tue funzioni Lambda

Il giusto dimensionamento è una pratica essenziale per l'ottimizzazione dei costi in. NETfunzioni Lambda basate su. Questo processo prevede l'identificazione della configurazione di memoria ottimale che bilancia prestazioni ed economicità, senza richiedere modifiche al codice.

Configurando la memoria per una funzione Lambda, che va da 128 MB a 10.240 MB, si regola anche la quantità di CPU v disponibile durante la chiamata. Ciò consente alle applicazioni CPU legate alla memoria o alle applicazioni associate di accedere a risorse aggiuntive durante l'esecuzione, con una potenziale riduzione della durata delle chiamate e dei costi complessivi.

Tuttavia, identificando la configurazione ottimale per la tua. NETle funzioni Lambda basate su Lambda possono essere un processo manuale e dispendioso in termini di tempo, soprattutto se le modifiche sono frequenti. Lo strumento AWS Lambda Power Tuning può aiutarti a identificare la configurazione appropriata analizzando una serie di configurazioni di memoria rispetto a un payload di esempio.

Ad esempio, aumentare la memoria per un. NETla funzione Lambda basata può portare a un miglioramento del tempo totale di invocazione e alla riduzione dei costi senza influire sulle prestazioni. La configurazione di memoria ottimale per una funzione può variare. Lo strumento AWS Lambda Power Tuning può aiutare a identificare la configurazione più economica per ogni funzione.

Nel seguente grafico di esempio, il tempo totale di invocazione migliora all'aumentare della memoria per questa funzione Lambda. Ciò comporta una riduzione del costo dell'esecuzione totale senza influire sulle prestazioni originali della funzione. Per questa funzione, la configurazione di memoria ottimale per la funzione è di 512 MB, poiché è qui che l'utilizzo delle risorse è più efficiente rispetto al costo totale di ogni chiamata. Questo varia in base alla funzione e l'utilizzo dello strumento sulle funzioni Lambda può determinare se traggono vantaggio dal corretto dimensionamento.

Grafico del tempo di invocazione

Ti consigliamo di completare questo esercizio regolarmente, come parte di qualsiasi test di integrazione quando vengono rilasciati nuovi aggiornamenti. Se non viene aggiornato di frequente, esegui questo esercizio periodicamente per assicurarti che le funzioni siano ottimizzate e dimensionate correttamente. Dopo aver identificato l'impostazione di memoria appropriata per le funzioni Lambda, puoi aggiungere il giusto dimensionamento ai tuoi processi. Lo strumento AWS Lambda Power Tuning genera un output programmatico che può essere utilizzato dai flussi di lavoro CI/CD durante il rilascio del nuovo codice. Ciò consente di automatizzare la configurazione della memoria.

Puoi scaricare lo strumento AWS Lambda Power Tuning gratuitamente. Per istruzioni su come utilizzare lo strumento, vedi Come eseguire la macchina a stati in GitHub.

Lambda supporta anche la modalità nativaAOT, che consente. NETapplicazioni da precompilare. Questo può aiutare a ridurre i costi riducendo i tempi di esecuzione per. NETfunzioni. Per ulteriori informazioni sulla creazione di AOT funzioni native, vedere. NETfunzioni con AOT compilazione nativa nella documentazione di Lambda.

Evita i tempi di attesa dovuti a inattività

La durata della funzione Lambda è una dimensione utilizzata per il calcolo della fatturazione. Quando Function Code effettua una chiamata di blocco, ti viene fatturato il tempo di attesa per ricevere una risposta. Questo tempo di attesa può aumentare quando le funzioni Lambda sono concatenate o una funzione funge da orchestratore per altre funzioni. Se si utilizzano flussi di lavoro come operazioni in batch o sistemi di consegna degli ordini, ciò comporta un ulteriore sovraccarico di gestione. Inoltre, potrebbe non essere possibile completare tutta la logica del flusso di lavoro e la gestione degli errori entro il timeout Lambda massimo di 15 minuti.

Invece di gestire questa logica in un codice funzionale, consigliamo di riprogettare la soluzione per utilizzarla AWS Step Functionscome orchestratore del flusso di lavoro. Quando utilizzi un flusso di lavoro standard, ti viene addebitata la fattura per ogni transizione di stato all'interno del flusso di lavoro anziché per la durata totale del flusso di lavoro. Inoltre, puoi spostare il supporto per nuovi tentativi, condizioni di attesa, flussi di lavoro con errori e callback nella condizione di stato per consentire alle funzioni Lambda di concentrarsi sulla logica aziendale. Per ulteriori informazioni, consulta Ottimizzazione AWS Lambda dei costi — Parte 2 nel blog di Compute. AWS

Passa alle funzioni basate su Graviton

Le funzioni Lambda basate sui processori Graviton2 di nuova generazione sono ora generalmente disponibili. Le funzioni Graviton2, che utilizzano un'architettura ARM basata su processori, sono progettate per offrire prestazioni migliori fino al 19% a un costo inferiore del 20% per una varietà di carichi di lavoro serverless. Con una latenza inferiore e prestazioni migliori, le funzioni basate sui processori Graviton2 sono ideali per alimentare applicazioni serverless mission-critical.

La migrazione a funzioni Lambda basate su Graviton può essere un'opzione conveniente per. NETsviluppatori che desiderano ottimizzare i costi di Lambda. Le funzioni basate su Graviton utilizzano processori ARM basati invece dei tradizionali processori x86. Ciò può portare a significativi risparmi sui costi senza sacrificare le prestazioni.

Sebbene ci siano diversi vantaggi nel passare alle funzioni basate su Graviton, ci sono anche diverse sfide e considerazioni che consigliamo di prendere in considerazione. Ad esempio, le funzioni basate su Graviton richiedono l'uso di Amazon Linux 2, che potrebbe non essere compatibile con tutti. NETapplicazioni. Inoltre, potrebbero esserci problemi di compatibilità con librerie o dipendenze di terze parti che non sono compatibili con i processori ARM basati.

Se stai correndo. NETApplicazioni framework e desideri sfruttare la tecnologia serverless con Lambda, puoi prendere in considerazione la possibilità di portarle alla versione moderna. NETutilizzando Porting Assistant per. NET. Questo può aiutarvi ad accelerare il trasferimento delle versioni precedenti. NETapplicazioni moderne. NET, abilitando l'esecuzione dell'applicazione su Linux.

La tabella seguente confronta i risultati dell'architettura x86 e ARM /Graviton2 per una funzione che calcola numeri primi.

ARMConfronto tra l'architettura x86 e /Graviton2

La funzione utilizza un singolo thread. La durata minima per entrambe le architetture viene riportata quando la memoria è configurata con 1,8 GB. Oltre a ciò, le funzioni Lambda hanno accesso a più di 1 vCPU, ma in questo caso la funzione non può utilizzare l'alimentazione aggiuntiva. Per lo stesso motivo, i costi sono stabili con una memoria fino a 1,8 GB. Con una maggiore quantità di memoria, i costi aumentano perché non ci sono ulteriori vantaggi prestazionali per questo carico di lavoro. Il processore Graviton2 offre chiaramente prestazioni migliori e costi inferiori per questa funzione ad alta intensità di calcolo.

Per configurare la funzione in modo che utilizzi un processore ARM basato su Graviton, procedi come segue:

  1. Accedi AWS Management Console e apri la console Lambda.

  2. Scegli Crea funzione.

  3. Per Function name (Nome funzione) immettere un nome.

  4. Per Runtime, scegli. NET6 (C#/ PowerShell).

  5. Per Architettura, selezionare arm64.

  6. Effettua le configurazioni aggiuntive di cui hai bisogno, quindi scegli Crea funzione.

Risorse aggiuntive