Go-Native Durable Execution
2 days ago
- #Workflows
- #Go
- #DurableExecution
- Building a workflows library in Go is challenging due to Go's limited type system but leverages features like context.Context.
- The durable.Context interface extends Go's context.Context to support durable execution, workflow state tracking, and cancellation.
- Key methods like RunWorkflow and RunAsStep allow running Go functions as workflows and steps, maintaining type safety.
- The design ensures a single interface (durable.Context) that feels natural to Go developers while providing compile-time type checking.
- Cancellation in workflows is handled via Go's context.Context, signaling workflows to stop but not preempting them.
- Workflow and step signatures are designed to be familiar to Go developers, using generics where possible.
- Serialization of workflow inputs/outputs uses encoding/json for simplicity, despite encoding/gob's advantages.
- The library includes additional Go-specific patterns like functional options and custom error types.