Durable execution — механизм, который сохраняет состояние функции по мере её работы. Если происходит сбой, функция восстанавливается с того же места, а не запускается заново. Это особенно важно для долгих процессов, например AI-агентов. Вдохновляясь подходом Kelsey Hightower в Kubernetes the hard way, автор решил показать, как построить такой движок с нуля на Go и Postgres.
Весь проект использует только Go 1.25+, Postgres (через Docker), pgx и sqlc для генерации SQL. Уроки разбиты по папкам: в каждой есть README, main.go, схема и запросы. Начинается с простой очереди задач, потом добавляются ограничение конкурентности, улучшения очереди, лог событий, отслеживание недетерминизма и, наконец, сам durable task. К финальному уроку получается минимальный, но полностью рабочий workflow engine.
Автор явно заявляет: это opinionated реализация, целиком на Postgres. Выделяются два типа функций — durable tasks (как workflow в Temporal или Hatchet) и regular tasks (как activities). Regular tasks можно вызывать отдельно, так что первые уроки по сути строят простую очередь задач на Postgres. Отдельно описаны три типа повторов: retries повторяют durable task без сброса истории событий, replays сбрасывают историю целиком, а forking позволяет начать с заданной точки — это будет в будущих уроках.
В руководстве обещают награду за найденные ошибки в логике: выпечку из ближайшей пекарни или мерч Hatchet. Весь текст написан человеком без AI — нейросеть использовали только для проверки проходимости уроков и генерации mermaid-диаграмм. Если будет интерес, автор готов добавить уроки про LISTEN/NOTIFY, durable sleep и ветвление лога.