PERF04-BP05 Scelta dei protocolli di rete per migliorare le prestazioni
Prendi decisioni sui protocolli per la comunicazione tra sistemi e reti in base all’impatto sulle prestazioni del carico di lavoro.
Esiste una relazione tra latenza e larghezza di banda per ottenere il throughput desiderato. Se per il trasferimento file si usa il protocollo TCP, latenze più elevate molto probabilmente ridurranno il throughput complessivo. Alcuni approcci risolvono questo problema tramite l’ottimizzazione del TCP e l’utilizzo di protocolli di trasferimento ottimizzati, ma una soluzione prevede l’utilizzo del protocollo User Datagram Protocol (UDP).
Anti-pattern comuni:
-
Puoi utilizzare il TCP per tutti i carichi di lavoro, indipendentemente dai requisiti prestazionali.
Vantaggi dell’adozione di questa best practice: la verifica del protocollo adeguato per la comunicazione tra utenti e componenti del carico di lavoro contribuisce a migliorare l’esperienza utente complessiva per le applicazioni. Ad esempio, l’UDP senza connessione garantisce velocità elevata, ma non offre ritrasmissione o elevata affidabilità. Il TCP è un protocollo completo, ma richiede un sovraccarico maggiore per l’elaborazione dei pacchetti.
Livello di rischio associato se questa best practice non fosse adottata: medio
Guida all’implementazione
Se hai la possibilità di scegliere protocolli diversi per la tua applicazione e hai esperienza in questo campo, ottimizza l’applicazione e l’esperienza dell’utente finale utilizzando un protocollo diverso. Tieni conto che questo approccio presenta notevoli difficoltà e dovrebbe essere tentato solo dopo l’ottimizzazione dell’applicazione in altri modi.
Un aspetto fondamentale per il miglioramento delle prestazioni del tuo carico di lavoro consiste nell’identificare i requisiti in termini di latenza e throughput, quindi scegliere i protocolli di rete che ottimizzano le prestazioni.
Quando valutare se usare TCP
Il protocollo TCP permette la trasmissione affidabile dei dati e può essere usato per la comunicazione tra i componenti del carico di lavoro quando l’affidabilità e la garanzia di trasmissione dei dati sono due aspetti importanti. Molte applicazioni Web usano protocolli basati su TCP, come HTTP e HTTPS, per aprire socket TCP per la comunicazione tra i componenti dell’applicazione. Il TCP viene comunemente usato per il trasferimento di dati di posta elettronica e di file, in quanto è un meccanismo di trasferimento semplice e affidabile tra i componenti dell’applicazione. L’uso di TLS con TCP può aggiungere un certo sovraccarico alla comunicazione, il che produce maggiore latenza e throughput inferiore, ma presenta come vantaggio una maggiore sicurezza. Il sovraccarico è dovuto perlopiù al processo di handshake, il cui completamento può richiedere diversi round trip. Al termine del processo di handshake, il sovraccarico dovuto alla crittografia e alla decrittografia dei dati è relativamente ridotto.
Quando valutare se usare UDP
UDP è un protocollo di tipo connection-less (senza connessione) e di conseguenza è ideale per applicazioni che necessitano di una trasmissione veloce ed efficiente, ad esempio per i log, il monitoraggio e i dati VoIP. Valuta se usare UDP anche se in presenza di componenti del carico di lavoro che rispondono a piccole query provenienti da grandi quantità di client per garantire prestazioni ottimali del carico di lavoro. Datagram Transport Layer Security (DTLS) è l’equivalente UDP di Transport Layer Security (TLS). In caso di utilizzo di DTLS con UDP, il sovraccarico è dovuto alla crittografia e alla decrittografia dei dati, in quanto il processo di handshake è semplificato. DTLS aggiunge anche un piccolo sovraccarico ai pacchetti UDP, poiché comprende altri campi per indicare i parametri di sicurezza e rilevare la manomissione.
Quando valutare se usare SRD
SRD (Scalable Reliable Datagram) è un protocollo di trasporto di rete ottimizzato per carichi di lavoro a elevato throughput grazie alla sua capacità di bilanciatore del carico del traffico tra più percorsi e di recuperare rapidamente dalla perdita di pacchetti e da errori di collegamento. Di conseguenza, SRD è ideale per carichi di lavoro di calcolo ad alte prestazioni (HPC) che richiedono comunicazioni tra nodi di calcolo a throughput elevato e a bassa latenza. Possono essere incluse attività di elaborazione in parallelo come la simulazione, la modellazione e l’analisi dei dati che implicano il trasferimento di grandi quantità di dati tra nodi.
Passaggi dell’implementazione
-
Utilizzare i servizi AWS Global Accelerator
e AWS Transfer Family per migliorare il throughput delle applicazioni di trasferimento file online. Il servizio AWS Global Accelerator ti permette di ottenere latenze inferiori tra i dispositivi client e il carico di lavoro in AWS. Con AWS Transfer Family puoi usare protocolli basati su TCP come SFTP (Secure Shell File Transfer Protocol) e FTPS (File Transfer Protocol over SSL) per scalare e gestire i trasferimenti file in servizi di archiviazione AWS in tutta sicurezza. -
Usa la latenza di rete per determinare se TCP sia il protocollo appropriato per la comunicazione tra componenti del carico di lavoro. Se la latenza di rete tra l’applicazione client e il server è elevata, il processo di handshake a tre vie tramite TCP può richiedere tempo, influendo sulla velocità di risposta dell’applicazione. Per misurare la latenza di rete, puoi usare, ad esempio, le metriche tempo di acquisizione al primo byte (TTFB) e tempo di andata e ritorno (RTT) Se il tuo carico di lavoro offre contenuti dinamici agli utenti, prendi in considerazione l’utilizzo di Amazon CloudFront
, che stabilisce una connessione persistente a ciascuna origine per il contenuto dinamico in modo da eliminare il tempo di configurazione della connessione, che altrimenti rallenterebbe ogni richiesta client. -
L'uso di TLS con TCP o UDP può causare maggiore latenza e minore throughput per il carico di lavoro a causa dell'impatto della crittografia e della decrittografia. Per tali carichi di lavoro, prendi in considerazione l'offload SSL/TLS su Elastic Load Balancing
per migliorare le prestazioni del carico di lavoro permettendo al bilanciatore del carico di gestire la crittografia e la decrittografia SSL/TLS invece di predisporre a questo scopo istanze backend. In questo modo, puoi ridurre l'utilizzo della CPU sulle istanze backend, migliorando le prestazioni e aumentando la capacità. -
Usa Network Load Balancer (NLB)
per implementare servizi basati sul protocollo UDP, tra cui autenticazione e autorizzazione, log, DNS, IoT e streaming di contenuti multimediali, in modo da migliorare prestazioni e affidabilità del carico di lavoro. L’NLB distribuisce il traffico UDP in ingresso tra più destinazioni, permettendo di scalare orizzontalmente il carico di lavoro, incrementare la capacità e diminuire il sovraccarico su un’unica destinazione. -
Per i carichi di lavoro di calcolo ad alte prestazioni (HPC), prendi in considerazione l’utilizzo della funzionalità Adattatore elastico di rete (ENA) Express
che sfrutta il protocollo SRD per migliorare le prestazioni di rete fornendo una maggiore larghezza di banda a flusso singolo (25 Gbps) e una latenza di coda inferiore (99,9 percentile) per il traffico di rete tra istanze EC2. -
Usa Application Load Balancer (ALB) per instradare e bilanciare il traffico gRPC (Remote Procedure Call) tra componenti del carico di lavoro o tra client e servizi gRPC e per bilanciarne il carico. gRPC usa il protocollo HTTP/2 basato su TCP per il trasporto e fornisce vantaggi in termini di prestazioni, tra cui un impatto di rete minore, la compressione, la serializzazione binaria efficiente, il supporto per diversi linguaggi e lo streaming bidirezionale.
Risorse
Documenti correlati:
Video correlati:
Esempi correlati: