Gestione automatica della capacità effettiva di trasmissione con il dimensionamento automatico di DynamoDB - Amazon DynamoDB

Gestione automatica della capacità effettiva di trasmissione con il dimensionamento automatico di DynamoDB

Molti carichi di lavoro dei database sono per natura ciclici o sono difficili da prevedere in anticipo. Ad esempio, considera un'app di social network in cui la maggior parte degli utenti sono attivi durante le ore diurne. Il database deve essere in grado di gestire l'attività diurna e ciò non è necessario per gli stessi livelli di throughput durante la notte. Un altro esempio potrebbe essere una nuova app di gioco per dispositivi mobili che si sta improvvisamente diffondendo in modo rapido. Se il gioco si diffonde troppo, potrebbe superare le risorse di database disponibili, con un conseguente rallentamento delle prestazioni e diversi clienti insoddisfatti. Questi tipi di carichi di lavoro richiedono spesso l'intervento manuale per aumentare o diminuire le risorse di database in risposta alla variazione dei livelli di utilizzo.

La scalabilità automatica di Amazon DynamoDB utilizza il servizio Application Auto Scaling di AWS per regolare in modo dinamico la capacità di throughput assegnata per conto tuo in risposta ai modelli di traffico effettivi. In tal modo una tabella o un indice secondario globale (GSI) può aumentare la capacità di lettura e scrittura allocata per gestire improvvisi aumenti di traffico senza limitazione (della larghezza di banda della rete). Quando il carico di lavoro diminuisce, Application Auto Scaling riduce la velocità effettiva in modo da non dover pagare per la capacità assegnata inutilizzata.

Nota

Se si utilizza la Console di gestione AWS per creare una tabella o un indice secondario globale, la scalabilità automatica di DynamoDB è abilitata per impostazione predefinita. Puoi modificare le tue impostazioni di scalabilità automatica in qualsiasi momento. Per ulteriori informazioni, consulta Utilizzo della Console di gestione AWS con la scalabilità automatica di DynamoDB.

Quando elimini una tabella o una replica globale di tabella, tutte le destinazioni dimensionabili associate, le policy di dimensionamento o gli allarmi CloudWatch non vengono eliminati automaticamente con essa.

Con Application Auto Scaling, è possibile creare una policy di dimensionamento per una tabella o un indice secondario globale. La policy di dimensionamento specifica se desideri dimensionare la capacità di lettura o di scrittura (o e entrambe) e indica le impostazioni delle unità di capacità minime e massime assegnate per la tabella o l'indice.

La policy di dimensionamento contiene anche un utilizzo di destinazione: la percentuale di velocità effettiva assegnata consumata in un dato momento. Application Auto Scaling utilizza un monitoraggio degli obiettivi per regolare la velocità effettiva assegnata della tabella (o dell'indice) in alto o in basso, in risposta a carichi di lavoro effettivi in modo che l'utilizzo effettivo della capacità rimanga pari o vicino all'utilizzo di destinazione.

DynamoDB fornisce il throughput allocato utilizzato per periodi di un minuto. Il dimensionamento automatico si attiva quando la capacità utilizzata supera l’utilizzo di destinazione configurato per due minuti consecutivi. Gli allarmi CloudWatch potrebbero subire un breve ritardo, fino a qualche minuto, prima di attivare il dimensionamento automatico. Questo ritardo garantisce una valutazione accurata delle metriche CloudWatch. Se i picchi di throughput utilizzato distano più di un minuto, il dimensionamento automatico potrebbe non attivarsi. Analogamente, un evento di riduzione verticale può avvenire quando 15 punti dati consecutivi sono inferiori all’utilizzo di destinazione. In entrambi i casi, dopo i trigger di dimensionamento automatico, viene invocata l’API UpdateTable. Sono quindi necessari alcuni minuti per aggiornare la capacità allocata per la tabella o l’indice. Durante questo periodo, tutte le richieste che superano la capacità allocata precedente delle tabelle verranno sottoposte a limitazione (della larghezza di banda della rete).

Importante

Non è possibile modificare il numero di punti dati da violare per attivare l’allarme sottostante (anche se il numero attuale potrebbe cambiare in futuro).

Puoi impostare i valori dell'utilizzo di destinazione del dimensionamento automatico tra il 20 e il 90 percento per la capacità in lettura e scrittura.

Nota

Oltre alle tabelle, la scalabilità automatica di DynamoDB supporta anche gli indici secondari globali. Ogni indice secondario globale dispone della propria capacità di throughput assegnata, separata da quella della relativa tabella di base. Quando si crea una policy di dimensionamento per un indice secondario globale, Application Auto Scaling regola le impostazioni di velocità effettiva assegnata per l'indice per assicurare che il suo utilizzo effettivo rimanga uguale o prossimo alle proporzioni di utilizzo desiderate.

Funzionamento del dimensionamento automatico di DynamoDB

Nota

Per iniziare a utilizzare rapidamente la scalabilità automatica di DynamoDB, consulta Utilizzo della Console di gestione AWS con la scalabilità automatica di DynamoDB.

Il seguente diagramma fornisce una panoramica dettagliata del modo in cui la scalabilità automatica di DynamoDB gestisce la capacità di throughput per una tabella:

Il dimensionamento automatico di DynamoDB regola la capacità di throughput di una tabella per soddisfare la domanda.

Le fasi seguenti sintetizzano il processo di scalabilità automatica come illustrato nel diagramma precedente:

  1. È possibile creare una policy di Application Auto Scaling per la tabella DynamoDB.

  2. DynamoDB pubblica parametri di capacità utilizzata su Amazon CloudWatch.

  3. Se la capacità utilizzata della tabella supera l'utilizzo di destinazione (o scende al di sotto della destinazione) per un periodo di tempo specifico, Amazon CloudWatch attiva un allarme. È possibile visualizzare l'allarme sulla console e ricevere notifiche tramite Amazon Simple Notification Service (Amazon SNS).

  4. L'allarme CloudWatch richiama Application Auto Scaling per valutare la policy di dimensionamento.

  5. Application Auto Scaling invia una richiesta UpdateTable per regolare la velocità effettiva assegnata della tabella.

  6. DynamoDB elabora la richiesta UpdateTable, aumentando (o diminuendo) in modo dinamico la capacità di throughput assegnata della tabella in modo che si avvicini all'utilizzo di destinazione.

Per comprendere come funziona la scalabilità automatica di DynamoDB, si supponga di avere una tabella denominata ProductCatalog. La tabella riceve carichi non frequenti di dati in blocco, perciò non esegue molta attività di scrittura. Tuttavia, ciò comporta un alto livello di attività di lettura che varia nel tempo. Monitorando i parametri di Amazon CloudWatch per ProductCatalog, si stabilisce che la tabella richiede 1.200 unità di capacità di lettura (per impedire a DynamoDB di limitare le richieste di lettura quando l'attività raggiunge il picco). Inoltre, stabilisci che ProductCatalog richieda minimo 150 unità di capacità in lettura, quando il traffico di lettura è al livello minimo. Per ulteriori informazioni sulla limitazione (della larghezza di banda della rete), consulta Risoluzione dei problemi di limitazione (della larghezza di banda della rete) in Amazon DynamoDB.

All'interno dell'intervallo compreso tra 150 e 1.200 unità di capacità in lettura, decidi che una percentuale di utilizzo di destinazione del 70% sia adatta per la tabella ProductCatalog. L'utilizzo di destinazione viene espresso come proporzione tra le unità di capacità utilizzate e le unità di capacità assegnata, in percentuale. Application Auto Scaling utilizza il suo algoritmo di monitoraggio degli obiettivi per garantire che la capacità di lettura assegnata di ProductCatalog sia regolata come richiesto in modo che l'utilizzo rimanga più o meno al 70%.

Nota

La scalabilità automatica di DynamoDB modifica le impostazioni della velocità di trasmissione effettiva assegnata solo quando il carico di lavoro effettivo rimane elevato (o basso) per un periodo continuativo di diversi minuti. L'algoritmo di monitoraggio degli obiettivi di Application Auto Scaling cerca di tenere l'utilizzo della destinazione pari o vicino al valore scelto a lungo termine.

I picchi di attività improvvisi e di breve durata sono soddisfatti dalla capacità di ottimizzazione integrata della tabella. Per ulteriori informazioni, consulta Capacità di ottimizzazione.

Per abilitare la scalabilità automatica di DynamoDB per la tabella ProductCatalog, viene creata una policy di dimensionamento. La policy specifica quanto segue:

  • La tabella o l'indice secondario globale che desideri gestire

  • Il tipo di capacità da gestire (capacità di lettura o capacità di scrittura)

  • I limiti superiore e inferiore per le impostazioni del throughput assegnato

  • Utilizzo di destinazione

Quando si crea una policy di dimensionamento, Application Auto Scaling crea una coppia di allarmi Amazon CloudWatch per conto tuo. Ogni coppia rappresenta i limiti superiore e inferiore per le impostazioni della velocità di trasmissione effettiva assegnata. Questi allarmi CloudWatch vengono attivati quando l'utilizzo effettivo della tabella devia dall'utilizzo di destinazione per un lungo periodo di tempo.

Quando viene attivato uno degli allarmi CloudWatch, Amazon SNS invia una notifica (se sono state abilitate le notifiche). L'allarme CloudWatch quindi richiama Application Auto Scaling che, a sua volta richiede a DynamoDB di regolare in basso o in alto la capacità assegnata della tabella ProductCatalog come appropriato.

Durante un evento di dimensionamento, AWS Config riceve addebiti per ogni elemento di configurazione registrato. Quando si verifica un evento di dimensionamento, vengono creati quattro allarmi CloudWatch per ogni evento di dimensionamento automatico di lettura e scrittura: allarmi ProvisionedCapacity: ProvisionedCapacityLow, ProvisionedCapacityHigh e allarmi ConsumedCapacity: AlarmHigh, AlarmLow. Ciò dà luogo a un totale di otto allarmi. Pertanto, AWS Config registra otto elementi di configurazione per ogni evento di dimensionamento.

Nota

È possibile anche pianificare il dimensionamento di DynamoDB in modo che avvenga in determinati momenti. La procedura di base è disponibile qui.

Note per l'utilizzo

Prima di iniziare a utilizzare la scalabilità automatica di DynamoDB è necessario tenere presente quanto riportato di seguito:

  • La scalabilità automatica di DynamoDB può aumentare la capacità di lettura o di scrittura in base alle necessità e secondo la policy di scalabilità automatica. Tutti le quote di DynamoDB restano in vigore, come descritto in Quote in Amazon DynamoDB.

  • La scalabilità automatica di DynamoDB non impedisce di modificare manualmente le impostazioni di velocità effettiva assegnata. Le regolazioni manuali non influiscono su alcun allarme CloudWatch esistente che sia collegato alla scalabilità automatica di DynamoDB.

  • Se si abilita la scalabilità automatica di DynamoDB per una tabella che ha uno o più indici secondari globali, consigliamo di applicare la scalabilità automatica in maniera uniforme anche a quegli indici. Ciò contribuirà a garantire prestazioni migliori per la scrittura e la lettura delle tabelle e a evitare la limitazione della larghezza di banda della rete. È possibile abilitare la scalabilità automatica selezionando Apply same settings to global secondary indexes (Applica le stesse impostazioni agli indici secondari globali) nella Console di gestione AWS. Per ulteriori informazioni, consulta Abilitazione del dimensionamento automatico di DynamoDB su tabelle esistenti.

  • Quando elimini una tabella o una replica globale di tabella, tutte le destinazioni scalabili associate, le policy di dimensionamento o gli allarmi CloudWatch non vengono eliminati automaticamente con essa.

  • Quando si crea un GSI per una tabella esistente, il dimensionamento automatico non è abilitato per il GSI. Dovrai gestire manualmente la capacità mentre il GSI è in fase di costruzione. Una volta completato il backfill sul GSI e raggiunto lo stato attivo, la scalabilità automatica funzionerà normalmente.