Canary deployment pattern in Docker - Time & Space Complexity
We want to understand how the time to deploy changes grows when using the canary deployment pattern with Docker.
Specifically, how does adding more users or instances affect deployment time?
Analyze the time complexity of the following Docker commands for a canary deployment.
# Deploy new version to 1 container (canary)
docker run -d --name app_1 myapp:v2
# Wait and monitor canary container
# If stable, deploy to rest of containers
for i in $(seq 2 10); do
docker stop app_$i
docker rm app_$i
docker run -d --name app_$i myapp:v2
sleep 10
# monitor logs or health
done
This script deploys a new version first to one container, then sequentially updates the rest after monitoring.
Look for repeated steps in the deployment process.
- Primary operation: Stopping, removing, and starting containers one by one.
- How many times: The loop runs for each container after the canary, here 9 times.
As the number of containers increases, the deployment time grows roughly in direct proportion.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | ~10 container updates |
| 100 | ~100 container updates |
| 1000 | ~1000 container updates |
Pattern observation: Deployment time grows linearly as more containers are updated one after another.
Time Complexity: O(n)
This means deployment time increases directly with the number of containers to update.
[X] Wrong: "Deploying to multiple containers at once will always be faster and have constant time."
[OK] Correct: Even if started simultaneously, monitoring and ensuring stability often requires sequential checks, so total time usually grows with the number of containers.
Understanding how deployment time scales helps you design better release strategies and explain trade-offs clearly in real projects.
"What if we deployed all containers in parallel without waiting for monitoring? How would the time complexity change?"
Practice
What is the main goal of a canary deployment in Docker?
Solution
Step 1: Understand canary deployment purpose
Canary deployment updates only a few containers initially to test changes safely.Step 2: Compare options
Only To update a small number of containers first to reduce risk describes updating a small number of containers to reduce risk, which matches the canary deployment goal.Final Answer:
To update a small number of containers first to reduce risk -> Option AQuick Check:
Canary deployment = update few containers first [OK]
- Thinking canary updates all containers simultaneously
- Confusing canary with blue-green deployment
- Assuming canary deletes old containers immediately
Which Docker command option controls how many containers update at the same time during a canary deployment?
docker service update --help
Solution
Step 1: Identify update control options
Docker's--update-parallelismcontrols how many containers update simultaneously.Step 2: Differentiate from other options
--update-delaycontrols wait time between updates,--replicassets container count, and--rollbackreverts updates.Final Answer:
--update-parallelism -> Option CQuick Check:
Parallelism = containers updated at once [OK]
- Confusing delay with parallelism
- Using replicas to control update speed
- Thinking rollback controls update count
Given the command:
docker service update --image myapp:v2 --update-parallelism 2 --update-delay 10s myservice
What happens during this update?
Solution
Step 1: Analyze update-parallelism
It sets 2 containers to update at the same time.Step 2: Analyze update-delay
It waits 10 seconds between each batch of updates.Final Answer:
Two containers update to v2, then wait 10 seconds before next two -> Option AQuick Check:
Parallelism=2 + Delay=10s means batch update with wait [OK]
- Assuming all containers update instantly
- Confusing delay as total update time
- Thinking syntax is incorrect
What is wrong with this command for canary deployment?
docker service update --image myapp:v2 --update-parallelism 0 --update-delay 5s myservice
Solution
Step 1: Check update-parallelism value
Parallelism controls how many containers update at once and must be at least 1.Step 2: Validate other options
Delay of 5s is valid; image syntax and option order are correct.Final Answer:
Parallelism cannot be zero; it must be at least 1 -> Option DQuick Check:
Parallelism=0 invalid, must be ≥1 [OK]
- Setting parallelism to zero to pause updates
- Thinking delay must be ≥10s
- Misordering command options
You want to deploy a new version of your app with canary deployment using Docker Swarm. You have 10 replicas. You want to update 3 containers at a time, wait 15 seconds between batches. Which command correctly implements this?
Solution
Step 1: Identify correct canary options
--update-parallelism 3and--update-delay 15scorrectly set batch size and delay; no other flags needed.Step 2: Verify update options
These match exactly in docker service update --image myapp:v2 --update-parallelism 3 --update-delay 15s myservice.Step 3: Check options in each command
--rollback-conditionand--rollback-on-failureare invalid;--rollbackforces rollback instead of update.Final Answer:
docker service update --image myapp:v2 --update-parallelism 3 --update-delay 15s myservice -> Option BQuick Check:
Parallelism + delay with valid flags only [OK]
- Adding invalid rollback flags
- Missing parallelism or delay options
- Assuming rollback must be specified
Ready to prove it?
Pass the test and this pattern moves unknown
