Revision management in GCP - Time & Space Complexity
When managing revisions in cloud services, it's important to know how the time to handle changes grows as you add more versions.
We want to understand how the number of revisions affects the work done by the system.
Analyze the time complexity of managing revisions for a cloud function deployment.
// Deploy a new revision of a Cloud Run service
const service = await runClient.getService(serviceName);
const newRevision = await runClient.createRevision(serviceName, config);
await runClient.waitForRevisionReady(newRevision);
await runClient.updateTraffic(serviceName, newRevision);
This sequence creates a new revision, waits for it to be ready, and updates traffic to it.
Look at what happens each time a new revision is deployed.
- Primary operation: Creating and waiting for a new revision to be ready.
- How many times: Once per new revision deployed.
Each new revision requires creating and preparing that revision before switching traffic.
| Input Size (n) | Approx. Api Calls/Operations |
|---|---|
| 10 | About 10 create and wait operations |
| 100 | About 100 create and wait operations |
| 1000 | About 1000 create and wait operations |
Pattern observation: The work grows directly with the number of revisions deployed.
Time Complexity: O(n)
This means the time to manage revisions grows linearly with the number of revisions.
[X] Wrong: "Managing many revisions happens instantly regardless of how many exist."
[OK] Correct: Each revision requires separate creation and readiness checks, so more revisions mean more work.
Understanding how revision management scales helps you design systems that handle updates smoothly and predictably.
"What if we batch multiple configuration changes into a single revision? How would the time complexity change?"
Practice
Solution
Step 1: Understand revision management concept
Revision management is about keeping track of different versions of your cloud services.Step 2: Identify the main goal
The main goal is to control versions for safe updates and rollbacks.Final Answer:
To track and control different versions of your cloud services -> Option AQuick Check:
Revision management = version control [OK]
- Confusing revision management with scaling
- Thinking it manages storage or network
- Mixing it with monitoring tools
gcloud command is used to list all revisions of a Cloud Run service named my-service?Solution
Step 1: Identify correct command structure
The command to list revisions usesgcloud run revisions listwith the service flag.Step 2: Match service name parameter
Using--service=my-servicecorrectly specifies the service.Final Answer:
gcloud run revisions list --service=my-service -> Option AQuick Check:
List revisions = gcloud run revisions list --service [OK]
- Using 'services list' instead of 'revisions list'
- Mixing 'describe' with listing
- Wrong command order or flags
gcloud run revisions list --service=my-app after deploying twice?gcloud run deploy my-app --image=image:v1 --no-traffic
gcloud run deploy my-app --image=image:v2 --no-traffic
Solution
Step 1: Understand deployment with --no-traffic
Deploying with--no-trafficcreates a new revision but does not route traffic to it.Step 2: Analyze multiple deployments
Deploying twice with different images creates two separate revisions.Final Answer:
Two revisions: one with image:v1 and one with image:v2 -> Option CQuick Check:
Each deploy creates a revision even with no traffic [OK]
- Assuming no traffic means no revision
- Thinking only latest revision exists
- Confusing traffic routing with revision creation
my-app-00002?Solution
Step 1: Identify correct command to update traffic
The command to update traffic routing isgcloud run services update-traffic.Step 2: Use correct syntax for traffic split
The syntax--to-revisions my-app-00002=100routes 100% traffic to that revision.Final Answer:
gcloud run services update-traffic my-app --to-revisions my-app-00002=100 -> Option BQuick Check:
Update traffic with 'services update-traffic' and '--to-revisions' [OK]
- Using 'update' instead of 'update-traffic'
- Wrong flag names like '--percent'
- Trying to set traffic on revision directly
web-app to a previous revision web-app-00003 safely without downtime. Which sequence of commands achieves this?Solution
Step 1: Understand rollback via traffic routing
Rolling back means routing traffic back to an existing previous revision.Step 2: Use traffic update command
Usegcloud run services update-trafficto send 100% traffic to the old revision.Step 3: Avoid deleting revisions or redeploying
Deleting or redeploying is unnecessary and may cause downtime.Final Answer:
gcloud run services update-traffic web-app --to-revisions web-app-00003=100 -> Option DQuick Check:
Rollback by routing traffic to old revision [OK]
- Trying to redeploy old revision as image
- Deleting newer revisions unnecessarily
- Using wrong commands to update revision
Ready to prove it?
Pass the test and this pattern moves unknown
