PERF05-BP05 Scelta dei protocolli di rete per migliorare le prestazioni - Framework AWS Well-Architected

PERF05-BP05 Scelta dei protocolli di rete per migliorare le prestazioni

Valuta i requisiti di prestazioni per il tuo carico di lavoro e scegli i protocolli di rete in grado di ottimizzarne le prestazioni complessive.

Esiste una relazione tra latenza e larghezza di banda per ottenere il throughput desiderato. Ad esempio, se per il trasferimento di file viene usato il protocollo TCP, latenze più elevate ridurranno la velocità di trasmissione effettiva complessiva. Alcuni approcci risolvono questo problema con l'ottimizzazione TCP e i protocolli di trasferimento ottimizzati, altri richiedono l'uso del protocollo UDP.

SRD (Scalable Reliable Datagram) è un protocollo di trasporto di rete creato da AWS per dispositivi Elastic Fabric Adapter che permette la distribuzione affidabile di datagrammi. Diversamente dal protocollo TCP, SRD può riordinare i pacchetti e trasmetterli non in ordine. Attraverso questo meccanismo di trasmissione non in ordine il protocollo SRD invia i pacchetti in parallelo su percorsi alternativi, aumentando la velocità di trasmissione effettiva.

Anti-pattern comuni:

  • Uso di TCP per tutti i carichi di lavoro, indipendentemente dai requisiti di prestazioni.

Vantaggi dell'adozione di questa best practice:

  • La selezione del protocollo appropriato per la comunicazione tra i componenti del carico di lavoro permette di ottenere le migliori prestazioni per quel carico di lavoro.

  • La verifica del protocollo appropriato per la comunicazione tra utenti e componenti del carico di lavoro contribuisce a migliorare l'esperienza utente complessiva per le applicazioni. Ad esempio, usando TCP e UDP insieme, i carichi di lavoro di Infrastruttura desktop virtuale (VDI) possono trarre vantaggio dall'affidabilità di TCP per i dati critici e dalla velocità di UDP per i dati in tempo reale.

Livello di rischio associato alla mancata adozione di questa best practice: medio (l'uso di un protocollo di rete non appropriato può causare prestazioni insoddisfacenti, come tempi di risposta lenti, alta latenza e scalabilità insufficiente).

Guida all'implementazione

Un aspetto principale per il miglioramento delle prestazioni del carico di lavoro consiste nell'identificare i requisiti di latenza e velocità di trasmissione effettiva e quindi scegliere i protocolli di rete che ottimizzano le prestazioni.

Quando valutare se usare TCP

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 con i server in AWS. Anche il trasferimento di dati di e-mail e file è un'applicazione comune che usa TCP, grazie alla capacità di questo protocollo di controllare la velocità di scambio dei dati e il tasso di congestione di rete. L'uso di TLS con TCP può aggiungere un certo sovraccarico alla comunicazione, producendo maggiore latenza e velocità di trasmissione effettiva inferiore. Il sovraccarico è dovuto prevalentemente 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 connectionless (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 vi sono componenti del carico di lavoro che rispondono a piccole query provenienti da grandi quantità di client per garantire prestazioni ottimali del carico di lavoro. Il protocollo DTLS (Datagram Transport Layer Security) è l'equivalente UDP di TLS. Quando viene usato 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, perché include 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 velocità di trasmissione effettiva elevata grazie alla sua capacità di bilanciare il 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 velocità di trasmissione effettiva elevata 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

  1. Usa i servizi AWS Global Accelerator e AWS Transfer Family per migliorare la velocità di trasmissione effettiva delle applicazioni di trasferimento di file online. Il servizio AWS Global Accelerator ti permette di ottenere latenza inferiore 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) ed FTPS (File Transfer Protocol over SSL) per dimensionare e gestire i trasferimenti di file in servizi di archiviazione AWS in tutta sicurezza.

  2. 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 TTFB (Time to First Byte, tempo di ricezione del primo byte) ed RTT (Round-Trip Time, tempo di round trip). Se il carico di lavoro distribuisce contenuto dinamico agli utenti, valuta se usare Amazon CloudFront, che stabilisce una connessione persistente a ogni origine per il contenuto dinamico in modo da eliminare il tempo di configurazione della connessione, che altrimenti rallenterebbe ogni richiesta client.

  3. L'uso di TLS con TCP o UDP può causare maggiore latenza e minore velocità di trasmissione effettiva per il carico di lavoro a causa dell'impatto della crittografia e della decrittografia. Per carichi di lavoro di questo tipo, prendi in considerazione l'offload SSL/TLS in Elastic Load Balancing per migliorare le prestazioni permettendo al sistema di bilanciamento del carico di gestire la crittografia e la decrittografia SSL/TLS invece di predisporre istanze back-end a questo scopo. In questo modo, puoi ridurre l'utilizzo della CPU sulle istanze back-end, migliorando le prestazioni e aumentando la capacità.

  4. Usa il Network Load Balancer (NLB) per implementare servizi basati sul protocollo UDP, tra cui autenticazione e autorizzazione, registrazione, DNS, IoT e streaming di contenuti multimediali, in modo da migliorare le prestazioni e l'affidabilità del carico di lavoro. L'NLB distribuisce il traffico UDP in ingresso tra più destinazioni, permettendo di aumentare o ridurre orizzontalmente il carico di lavoro, incrementare la capacità e diminuire il sovraccarico su un'unica destinazione.

  5. Per i carichi di lavoro di calcolo ad alte prestazioni (HPC), valuta se scegliere la funzionalità Adattatore di rete elastico (ENA) Express, che usa il protocollo SRD per migliorare le prestazioni di rete fornendo una larghezza di banda a flusso singolo più elevata (25 Gbps) e una latenza di coda inferiore (99,9) per il traffico di rete tra istanze EC2.

  6. Usa l'Application Load Balancer (ALB) per instradare il traffico gRPC (Remote Procedure Call) tra componenti del carico di lavoro o tra client e servizi abilitati per 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: