Skip to content

Instantly share code, notes, and snippets.

@peterhellberg
Created February 27, 2026 12:55
Show Gist options
  • Select an option

  • Save peterhellberg/9c50ed00bb16d558dde50ff673a22dd6 to your computer and use it in GitHub Desktop.

Select an option

Save peterhellberg/9c50ed00bb16d558dde50ff673a22dd6 to your computer and use it in GitHub Desktop.
Slides: Durable Execution with Temporal
date author paging theme
2026-02-27
Peter Hellberg 🌿
[page %d / %d]
../../../.slides/theme.json

Building Reliable Workflows

________________________________________________

β–›β–€β––         β–Œ  β–œ     β–›β–€β–˜            ▐  β–—
β–Œ β–Œβ–Œ β–Œβ–™β–€β––β–β–€β––β–›β–€β––β– β–žβ–€β–– β–™β–„ β–šβ–—β–˜β–žβ–€β––β–žβ–€β––β–Œ β–Œβ–œβ–€ β–„ β–žβ–€β––β–›β–€β––
β–Œ β–Œβ–Œ β–Œβ–Œ  β–žβ–€β–Œβ–Œ β–Œβ– β–›β–€  β–Œ  β–—β–š β–›β–€ β–Œ β––β–Œ β–Œβ– ▖▐ β–Œ β–Œβ–Œ β–Œ
β–€β–€ β–β–€β–˜β–˜  β–β–€β–˜β–€β–€  β–˜β–β–€β–˜ β–€β–€β–˜β–˜ β–˜β–β–€β–˜β–β–€ β–β–€β–˜ β–€ β–€β–˜β–β–€ β–˜ β–˜
             ▗▐  β–Œ   β–€β–›β–˜                  β–œ
         β–Œ  β–Œβ–„β–œβ–€ β–›β–€β––  β–Œβ–žβ–€β––β–›β–šβ–€β––β–›β–€β––β–žβ–€β––β–™β–€β––β–β–€β––β–
         ▐▐▐ ▐▐ β––β–Œ β–Œ  β–Œβ–›β–€ β–Œβ– β–Œβ–™β–„β–˜β–Œ β–Œβ–Œ  β–žβ–€β–Œβ–
          β–˜β–˜ β–€β–˜β–€ β–˜ β–˜  β–˜β–β–€β–˜β–˜β– β–˜β–Œ  ▝▀ β–˜  β–β–€β–˜ β–˜
------------------------------------------------

What is Temporal?

Temporal is a durable execution engine that lets you write reliable, long-running applications as normal code.

It abstracts away retries, state persistence, and timeouts β€” so your business logic stays simple and fault-tolerant.

  • Originally built at Uber, now an open-source CNCF project.

https://temporal.io/


Why Go developers should care

Go handles concurrency very well, but durable, long-running workflow reliability requires extra effort.

Go’s concurrency model (goroutines, channels) is great for parallelism but not for reliability.

Temporal gives you β€œgoroutines that survive restarts.”

It fits naturally with Go’s programming style and error handling.

https://docs.temporal.io/develop/go/


Temporal for Other Languages

Temporal is polyglot β€” you’re not limited to Go.
You can build reliable workflows in multiple languages, keeping the same durable execution guarantees.

Official SDKs


All SDKs share the same concepts

Workflows, Activities, Workers, Task Queues, and durable execution.

This allows you to pick the language that fits your domain while still benefiting from Temporal’s reliability.

https://docs.temporal.io/develop/


Core Concepts

The durable function that represents business logic.


Core Concepts

The actual work being done

(e.g. calling an API, processing data)


Core Concepts

Runs your workflows and activities.

In day-to-day conversations, the term Worker is used to denote either a Worker Program, a Worker Process, or a Worker Entity.


Core Concepts

Connects clients and workers.

A Task Queue is a lightweight, dynamically allocated queue that one or more Worker Entities poll for Tasks.


Core Concepts

Durable Execution in the context of Temporal refers to the ability of a Workflow Execution to maintain its state and progress even in the face of failures, crashes, or server outages.


Core Concepts

The orchestration engine that ensures durability and state persistence.

The Temporal Server consists of four independently scalable services:

Frontend gateway: for rate limiting, routing, authorizing. History subsystem: maintains data (mutable state, queues, and timers). Matching subsystem: hosts Task Queues for dispatching. Worker Service: for internal background Workflows.


Core Concepts

Acts as the bridge for communication between your applications and the Temporal Service.

The most common operations;

Get the result of Workflow Execution. List Workflow Executions. Query a Workflow Execution. Signal a Workflow Execution. Start a Workflow Execution.


Recap

β–„β––             β–œ   β–œ   β–—                  β–˜β–—     
▐ β–ˆβ–Œβ–›β–›β–Œβ–›β–Œβ–›β–Œβ–›β–˜β–€β–Œβ–   ▐ β–ˆβ–Œβ–œβ–˜β–›β–˜  β–Œβ–Œβ–›β–Œβ–Œβ–Œ  β–Œβ–Œβ–Œβ–›β–˜β–Œβ–œβ–˜β–ˆβ–Œ  
▐ β–™β––β–Œβ–Œβ–Œβ–™β–Œβ–™β–Œβ–Œ β–ˆβ–Œβ–β––  β–β––β–™β––β–β––β–„β–Œ  β–™β–Œβ–™β–Œβ–™β–Œ  β–šβ–šβ–˜β–Œ β–Œβ–β––β–™β––  
       β–Œ                     β–„β–Œ                  
        β–œ β–˜  β–Œ β–œ        β–Œβ–˜  β–—   β–˜β–Œ   β–—    β–Œ      
    β–›β–˜β–ˆβ–Œβ– β–Œβ–€β–Œβ–›β–Œβ– β–ˆβ–Œ    β–›β–Œβ–Œβ–›β–˜β–œβ–˜β–›β–˜β–Œβ–›β–Œβ–Œβ–Œβ–œβ–˜β–ˆβ–Œβ–›β–Œ      
    β–Œ β–™β––β–β––β–Œβ–ˆβ–Œβ–™β–Œβ–β––β–™β––β–—   β–™β–Œβ–Œβ–„β–Œβ–β––β–Œ β–Œβ–™β–Œβ–™β–Œβ–β––β–™β––β–™β–Œ      
                   β–˜                             
        β–—                  β–˜     β–œ          β–Œ    
  β–›β–˜β–Œβ–Œβ–›β–˜β–œβ–˜β–ˆβ–Œβ–›β–›β–Œβ–›β–˜  β–€β–Œβ–›β–˜  β–›β–˜β–Œβ–›β–›β–Œβ–›β–Œβ– β–ˆβ–Œ  β–›β–˜β–›β–Œβ–›β–Œβ–ˆβ–Œ  
  β–„β–Œβ–™β–Œβ–„β–Œβ–β––β–™β––β–Œβ–Œβ–Œβ–„β–Œ  β–ˆβ–Œβ–„β–Œ  β–„β–Œβ–Œβ–Œβ–Œβ–Œβ–™β–Œβ–β––β–™β––  β–™β––β–™β–Œβ–™β–Œβ–™β––β–— 
    β–„β–Œ                         β–Œ                 

Resources

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment