Files
Max dml 7e5abd504f feat: add DBOS skills for TypeScript, Python, and Go (#94)
Add three DBOS SDK skills with reference documentation for building
reliable, fault-tolerant applications with durable workflows.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 23:26:51 +01:00

1.6 KiB

title, impact, impactDescription, tags
title impact impactDescription tags
Use Versioning for Blue-Green Deployments LOW Safely deploy new code with version tagging versioning, blue-green, deployment, recovery

Use Versioning for Blue-Green Deployments

DBOS versions workflows to prevent unsafe recovery. Use blue-green deployments to safely upgrade.

Incorrect (deploying breaking changes without versioning):

# Deploying new code directly kills in-progress workflows
# because their checkpoints don't match the new code

# Old code
@DBOS.workflow()
def workflow():
    step_a()
    step_b()

# New code replaces old immediately - breaks recovery!
@DBOS.workflow()
def workflow():
    step_a()
    step_c()  # Changed step - old workflows can't recover

Correct (using versioning with blue-green deployment):

# Set explicit version in config
config: DBOSConfig = {
    "name": "my-app",
    "application_version": "2.0.0",  # New version
}
DBOS(config=config)

# Deploy new version alongside old version
# New traffic goes to v2.0.0, old workflows drain on v1.0.0

# Check for remaining old workflows before retiring v1.0.0
old_workflows = DBOS.list_workflows(
    app_version="1.0.0",
    status=["PENDING", "ENQUEUED"]
)

if len(old_workflows) == 0:
    # Safe to retire old version
    pass

Fork a workflow to run on a new version:

# Fork workflow from step 5 on version 2.0.0
new_handle = DBOS.fork_workflow(
    workflow_id="old-workflow-id",
    start_step=5,
    application_version="2.0.0"
)

Reference: Versioning