Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ADR-002: Temporal Workflows

Status

Accepted

Context

We need a reliable workflow orchestration system for managing complex, long-running processes like GitHub runner lifecycle management, billing operations, and asynchronous tasks.

Decision

We will use Temporal for workflow orchestration because it provides:

  • Durable execution with automatic retries
  • Built-in error handling and compensation
  • Strong consistency guarantees
  • Visibility into workflow state and history
  • Language-specific SDKs with good Go support

Consequences

Positive

  • Reliable execution of critical business processes
  • Built-in observability and debugging capabilities
  • Simplified error handling for distributed operations
  • Ability to handle long-running workflows (hours/days)

Negative

  • Additional infrastructure to maintain
  • Learning curve for developers new to Temporal
  • Potential vendor lock-in for workflow logic

Implementation

Temporal workflows will be used for:

  • GitHub runner provisioning and lifecycle management
  • Billing and subscription management
  • Asynchronous job processing
  • Scheduled maintenance tasks