Capacità con provisioning e on-demand
Sceglierete tra throughput con provisioning e auto scaling e modalità on-demand in base alla prevedibilità del traffico e ai costi.
Capacità con provisioning e on-demand è una lezione AWS Solutions Architect gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AWS Solutions Architect, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AWS Solutions Architect include 4 lezioni in totale.
Spiegazione delle unità di capacità DynamoDB
DynamoDB misura il throughput in unità di capacità di lettura (RCU) e unità di capacità di scrittura (WCU). Una RCU consente una lettura fortemente coerente al secondo (oppure due letture eventualmente coerenti) per elementi fino a 4 KB. Una WCU consente una scrittura al secondo per elementi fino a 1 KB.
Per gli elementi più grandi, il costo aumenta proporzionalmente: una scrittura di 10 KB costa 10 WCU; una lettura fortemente coerente di 10 KB costa 3 RCU (ceil(10/4) = 3). Comprendere le unità di capacità è essenziale per stimare i costi e diagnosticare gli errori di throttling ProvisionedThroughputExceededException.
Modalità di capacità con provisioning
Nella modalità Provisioned Capacity, specifica il numero esatto di RCU e WCU che la tabella deve supportare. DynamoDB riserva tale throughput e addebita il relativo costo indipendentemente dal suo effettivo utilizzo. Se l'applicazione supera la capacità configurata, le richieste vengono sottoposte a throttling e restituiscono una ProvisionedThroughputExceededException.
La modalità Provisioned è ideale per carichi di lavoro con traffico prevedibile e stabile. Il costo per unità è inferiore rispetto alla modalità On-Demand e può essere ulteriormente ridotto acquistando la DynamoDB Reserved Capacity (impegni di 1 o 3 anni con sconti fino al 76%).
# Create a table with provisioned capacity
aws dynamodb create-table \
--table-name Products \
--attribute-definitions AttributeName=ProductId,AttributeType=S \
--key-schema AttributeName=ProductId,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=100,WriteCapacityUnits=50Modalità di capacità on-demand
Nella modalità On-Demand, DynamoDB si adatta automaticamente a qualsiasi livello di traffico senza richiedere una pianificazione della capacità. Il costo viene calcolato per richiesta: per ogni RRU (unità di richiesta di lettura) e WRU (unità di richiesta di scrittura) effettivamente consumata. Non è necessario gestire una capacità con provisioning e non si verificano throttling dovuti ai relativi limiti.
La modalità On-Demand è ideale per: carichi di lavoro imprevedibili o con picchi, nuove tabelle con traffico sconosciuto e ambienti di sviluppo o test con accessi poco frequenti. Il costo per richiesta è superiore rispetto alla modalità con provisioning, quindi per carichi di lavoro stabili e con throughput elevato la modalità Provisioned è più economica.
# Create a table in on-demand mode
aws dynamodb create-table \
--table-name Events \
--attribute-definitions AttributeName=EventId,AttributeType=S \
--key-schema AttributeName=EventId,KeyType=HASH \
--billing-mode PAY_PER_REQUESTPassaggio da una modalità di capacità all'altra
Può passare da Provisioned a On-Demand e viceversa in qualsiasi momento, utilizzando la console o la CLI. Tuttavia, è possibile cambiare modalità solo una volta ogni 24 ore. Dopo il passaggio a On-Demand, la tabella conserva la precedente capacità di provisioning di picco come livello iniziale di throughput, evitando il throttling immediato se il traffico è già elevato.
Una strategia comune consiste nell'utilizzare On-Demand durante il lancio iniziale, quando i pattern di traffico sono sconosciuti, e passare successivamente a Provisioned con Auto Scaling quando il traffico diventa prevedibile, riducendo i costi.
# Switch a table to on-demand billing mode
aws dynamodb update-table \
--table-name Products \
--billing-mode PAY_PER_REQUESTAuto Scaling di DynamoDB per la modalità con provisioning
Auto Scaling di DynamoDB modifica automaticamente le RCU e WCU con provisioning in risposta al traffico effettivo. Definisce una percentuale di utilizzo obiettivo (ad esempio 70%) e un intervallo di capacità minima e massima. Una policy di Application Auto Scaling monitora la capacità consumata dalla tabella e modifica la capacità con provisioning per mantenere l'utilizzo obiettivo.
Auto Scaling reagisce ai cambiamenti persistenti del traffico e può richiedere alcuni minuti per aumentare la capacità. Non gestisce bene i picchi improvvisi di traffico: in questi casi, aumenti manualmente la capacità in anticipo oppure utilizzi la modalità On-Demand.
# Register table as an auto scaling target
aws application-autoscaling register-scalable-target \
--service-namespace dynamodb \
--resource-id 'table/Products' \
--scalable-dimension dynamodb:table:ReadCapacityUnits \
--min-capacity 10 \
--max-capacity 1000Capacità di burst
DynamoDB conserva fino a 5 minuti di capacità con provisioning inutilizzata come capacità di burst. Quando il traffico della tabella supera temporaneamente il livello configurato, DynamoDB attinge al pool di burst per gestire le richieste aggiuntive senza throttling. Quando il pool di burst si esaurisce, le richieste eccedenti successive vengono sottoposte a throttling.
La capacità di burst è un buffer a breve termine e non sostituisce una corretta pianificazione della capacità. Monitori le metriche CloudWatch ConsumedReadCapacityUnits e ConsumedWriteCapacityUnits per rilevare quando il carico di lavoro consuma costantemente la capacità di burst e adegui di conseguenza il throughput con provisioning.
Throttling e gestione degli errori
Quando la capacità con provisioning viene superata e il burst è esaurito, DynamoDB restituisce ProvisionedThroughputExceededException. Gli SDK AWS includono una logica integrata di nuovi tentativi con backoff esponenziale e jitter, che riprova automaticamente le richieste sottoposte a throttling.
Per diagnosticare il throttling, controlli le metriche CloudWatch SystemErrors e ThrottledRequests. Se specifiche chiavi di partizione sono soggette a throttling mentre l'utilizzo complessivo della tabella è basso, si verifica un problema di partizione sovraccarica: riprogetti la chiave di partizione, aggiunga una chiave di ordinamento oppure utilizzi lo sharding delle scritture.
Stima dei requisiti di capacità
Per stimare la capacità nella modalità Provisioned:
- Calcoli le scritture di picco al secondo × dimensione media dell'elemento / 1 KB (arrotondato per eccesso) = WCU necessarie
- Calcoli le letture di picco al secondo × dimensione media dell'elemento / 4 KB (arrotondato per eccesso) = RCU necessarie (con coerenza forte); dimezzi il risultato per la coerenza eventuale
- Aggiunga un margine del 20–30% oltre il picco per assorbire gli aumenti improvvisi prima che la capacità di burst venga consumata
Esempio: 1.000 scritture/s di elementi da 2 KB = 2.000 WCU. 5.000 letture/s di elementi da 8 KB (coerenza eventuale) = ceil(8/4) × 5.000 / 2 = 5.000 RCU.
Capacità riservata per ridurre i costi
DynamoDB Reserved Capacity consente di acquistare un numero fisso di RCU e WCU per un periodo di 1 o 3 anni, pagando anticipatamente e ottenendo uno sconto significativo (fino al 76%) rispetto ai prezzi On-Demand. La capacità riservata si applica a tutte le tabelle con provisioning in una Regione e viene applicata automaticamente agli addebiti orari.
La Reserved Capacity si applica solo alla modalità Provisioned: non può essere utilizzata con la modalità On-Demand. È l'opzione di risparmio migliore per carichi di lavoro stabili e prevedibili, che può stimare con sicurezza su un periodo di 1–3 anni.
Confronto tra le modalità: guida alle decisioni d'esame
Utilizzi questa guida per le domande SAA-C03 sulle modalità di capacità:
- On-Demand: traffico imprevedibile, nuova applicazione, accessi poco frequenti, carico di lavoro con picchi, quando desidera una gestione della capacità nulla
- Provisioned: traffico costante e prevedibile, attenzione ai costi, disponibilità a gestire la capacità, idoneità agli sconti Reserved Capacity
- Provisioned + Auto Scaling: baseline prevedibile con una certa variabilità, quando desidera un adeguamento automatico senza modifiche manuali
All'esame, parole chiave come 'spiky', 'unpredictable' o 'minimal operational overhead' indicano On-Demand; 'steady traffic' o 'cost optimisation' indicano Provisioned.
Capacità adattiva
La capacità adattiva di DynamoDB ridistribuisce automaticamente il throughput dalle partizioni fredde a quelle sovraccariche in tempo reale. Se una chiave di partizione riceve più traffico della quota allocata, la capacità adattiva prende in prestito throughput dalle partizioni sottoutilizzate per gestire quella sovraccarica, purché la capacità totale della tabella non venga superata.
La capacità adattiva è sempre abilitata e non richiede configurazione. Riduce il throttling delle partizioni sovraccariche per pattern di accesso moderatamente sbilanciati. Per carichi di lavoro fortemente sbilanciati (ad esempio, quando una chiave di partizione riceve il 90% del traffico), la capacità adattiva non è sufficiente: deve riprogettare la chiave di partizione oppure utilizzare lo sharding delle scritture.
Verifica rapida
Verifichi la Sua comprensione dei concetti di AWS Solutions Architect (SAA-C03) trattati in questa lezione.
Riepilogo della lezione
In questa lezione ha imparato che: la modalità Provisioned imposta RCU/WCU fisse per carichi di lavoro prevedibili a un costo inferiore, la modalità On-Demand si adatta automaticamente al traffico imprevedibile con un costo per richiesta maggiore e Auto Scaling modifica la capacità con provisioning in base alle percentuali di utilizzo obiettivo. Nella prossima lezione esamineremo i Global Secondary Index e i Local Secondary Index per pattern di query alternativi.
Domande Frequenti
La lezione «Capacità con provisioning e on-demand» è gratuita?
Sì — il testo completo di «Capacità con provisioning e on-demand» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AWS Solutions Architect, passa a CoddyKit PRO. Il corso AWS Solutions Architect include 4 lezioni in totale.
Cosa imparerò in «Capacità con provisioning e on-demand»?
Sceglierete tra throughput con provisioning e auto scaling e modalità on-demand in base alla prevedibilità del traffico e ai costi. Eserciti AWS Solutions Architect con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AWS Solutions Architect?
Non è richiesta alcuna esperienza precedente. AWS Solutions Architect su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Capacità con provisioning e on-demand»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AWS Solutions Architect?
Sì. Ogni lezione AWS Solutions Architect include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Tabelle, elementi e chiavi primarie
- Capacità con provisioning e on-demand
- Indici secondari globali e locali
- DynamoDB Streams e Global Tables