Waarom is “𝚞𝚜𝚎 𝚜𝚝𝚎𝚙” nodig? Iemand merkte op dat stappen in een workflow lijken op “spawn checkpoints” in een videogame. Goede analogie. Een interessant gevolg van het markeren van een functie als “𝚞𝚜𝚎 𝚠𝚘𝚛𝚔𝚏𝚕𝚘𝚠” is dat je geen I/O mag doen, behalve stappen. Workflows moeten vrij zijn van bijwerkingen en deterministisch zijn. Elke keer dat je 𝚊𝚠𝚊𝚒𝚝, moet die functie een stap zijn. Deze functieaanroepen kunnen worden gezien als serialiseerbare continuaties. De invoer en uitvoer van deze functies worden vastgelegd in een log. Denk aan JSON. Als je een workflow hebt met 3 stappen en de laatste faalt, moeten we in staat zijn om de hele functie “opnieuw uit te voeren” en een perfect overzicht te hebben van de staat van de wereld. Op deze manier is “𝚞𝚜𝚎 𝚜𝚝𝚎𝚙” eigenlijk heel vergelijkbaar met “𝚞𝚜𝚎 𝚌𝚊𝚌𝚑𝚎” of “𝚐𝚎𝚝𝚂𝚝𝚊𝚝𝚒𝚌𝙿𝚛𝚘𝚙𝚜” — functies die kunnen worden geexternaliseerd en geïsoleerd in ruimte en tijd, draaiend op verschillende “computers”.