Auto-scaling configuration in DynamoDB - Time & Space Complexity
When using auto-scaling in DynamoDB, it is important to understand how the system adjusts capacity as demand changes.
We want to know how the time to adjust scales with the number of scaling events or workload changes.
Analyze the time complexity of this auto-scaling configuration snippet.
{
"AutoScalingPolicy": {
"TargetTrackingScalingPolicyConfiguration": {
"TargetValue": 70.0,
"PredefinedMetricSpecification": {
"PredefinedMetricType": "DynamoDBReadCapacityUtilization"
},
"ScaleOutCooldown": 60,
"ScaleInCooldown": 60
}
}
}
This code sets up auto-scaling to keep read capacity near 70% utilization by adjusting capacity after cooldown periods.
In auto-scaling, the system repeatedly checks usage and adjusts capacity.
- Primary operation: Monitoring usage metrics and adjusting capacity units.
- How many times: This happens continuously as workload changes, triggered by metric evaluations.
As the number of scaling events increases, the system performs more adjustments.
| Input Size (number of scaling events) | Approx. Operations |
|---|---|
| 10 | 10 adjustments |
| 100 | 100 adjustments |
| 1000 | 1000 adjustments |
Pattern observation: The operations grow linearly with the number of scaling events.
Time Complexity: O(n)
This means the time to handle scaling grows directly with how many times scaling happens.
[X] Wrong: "Auto-scaling adjusts capacity instantly regardless of workload changes."
[OK] Correct: Auto-scaling waits for cooldown periods and metric checks, so adjustments happen over time, not instantly.
Understanding how auto-scaling time grows helps you explain system responsiveness and resource management clearly.
"What if the cooldown periods were removed? How would the time complexity of scaling adjustments change?"
Practice
Solution
Step 1: Understand auto-scaling function
Auto-scaling automatically changes capacity to match traffic demands.Step 2: Compare options
Only To automatically adjust read and write capacity based on traffic describes automatic adjustment of capacity based on traffic.Final Answer:
To automatically adjust read and write capacity based on traffic -> Option DQuick Check:
Auto-scaling adjusts capacity automatically = A [OK]
- Confusing auto-scaling with manual capacity setting
- Thinking auto-scaling handles backups
- Mixing encryption with scaling
Solution
Step 1: Recall DynamoDB auto-scaling JSON keys
The correct key for minimum capacity is "MinCapacity" with camel case and no underscores.Step 2: Check options
Only "MinCapacity": 5 matches the exact key syntax "MinCapacity".Final Answer:
"MinCapacity": 5 -> Option AQuick Check:
Correct JSON key for minimum capacity = B [OK]
- Using underscores instead of camel case
- Adding extra words like 'Units'
- Incorrect capitalization
{
"TargetValue": 70.0,
"ScaleInCooldown": 60,
"ScaleOutCooldown": 60
}What does the
TargetValue represent?Solution
Step 1: Understand TargetValue meaning
TargetValue sets the target utilization percentage for capacity usage.Step 2: Analyze options
The desired utilization percentage of capacity correctly describes TargetValue as desired utilization percent (70%).Final Answer:
The desired utilization percentage of capacity -> Option CQuick Check:
TargetValue = utilization percent = C [OK]
- Confusing TargetValue with capacity limits
- Mixing cooldown times with TargetValue
- Thinking TargetValue is a fixed capacity number
{
"MinCapacity": 5,
"MaxCapacity": 100,
"TargetValue": 80.0,
"ScaleInCooldown": 30,
"ScaleOutCooldown": 30
}But the policy is not working as expected. What is the likely error?
Solution
Step 1: Check capacity and cooldown values
MinCapacity (5) is less than MaxCapacity (100), cooldowns are valid numbers.Step 2: Identify missing required fields
Auto-scaling policies require resource identifiers (like ResourceId) to apply the policy.Step 3: Confirm TargetValue range
TargetValue is a percentage and 80.0 is valid.Final Answer:
Missing required field for resource ID -> Option BQuick Check:
Missing resource ID causes policy failure = A [OK]
- Assuming cooldown times cause failure
- Misreading TargetValue scale
- Ignoring missing resource identifiers
{
"MinCapacity": 10,
"MaxCapacity": 200,
"TargetValue": 70.0,
"ScaleInCooldown": 120,
"ScaleOutCooldown": 30
}Solution
Step 1: Understand traffic spikes impact
Unpredictable spikes need quick scaling out to avoid throttling and slower scaling in to avoid rapid capacity drops.Step 2: Analyze given settings
Low MinCapacity saves cost, high MaxCapacity allows growth, fast ScaleOutCooldown (30s) reacts quickly, slow ScaleInCooldown (120s) prevents rapid scale down.Step 3: Evaluate other options
Fixed capacity ignores spikes, very fast cooldowns cause thrashing, setting TargetValue to 100 risks overprovisioning.Final Answer:
Set a low MinCapacity, high MaxCapacity, fast ScaleOutCooldown, slow ScaleInCooldown -> Option AQuick Check:
Fast scale out + slow scale in = smooth scaling = D [OK]
- Setting fixed capacity ignoring spikes
- Using equal cooldowns causing rapid scaling
- Setting TargetValue too high causing overspending
Ready to prove it?
Pass the test and this pattern moves unknown
