Temporal vznikl původně jako framework v Uberu, a tehdy se jmenoval Cadence. Interně ale používal protokol Thrift a TChannel pro serializaci zpráv. Původní autoři pak založili vlastní firmu a vznikl Temporal, který využívá open-source protokol gRPC a Protocol buffers. Tím se odstranila závislost na proprietární technologie Uberu, dovolilo šifrování dat i zabezpečení připojení a další.
Základním stavebním kamenem je Workflow, ve kterém je napsána přímo byznys logika. Ta ale musí být deterministická, bez jakýchkoli vedlejších efektů. Pro provádění akcí, které jsou již nedeterministické a mohou v nich vznikat chyby, slouží Aktivity. To může zahrnovat například komunikaci s jinými servery a službami třetích stran, odesílání emailů a další.
Největší výhodou rozhodně patří integrace přímo do jazyků. Workflow či Aktivity lze psát v libovolném jazyce, do kterého existuje SDK. Momentálně pouze Java, Go, PHP a NodeJS, vznikají ale také komunitní pro Python či Ruby. Na dalších se ale pracuje, nebo se brzy začne.
Prezentace a ukázka
Temporal používáme na aktuálním projektu a proto jsem měl v rámci firmy malou prezentaci o této technologii. Můžete si ji zde prohlédnout. A samozřejmě nechyběla ani ukázka.
Spustitelné demo
Pěkné ukázky jsou přímo na Temporal Githubu, a ze stejného repozitáře vzešla i má ukázka. Tu je možno stáhnout na tomto odkaze, následně stačí následovat README, nebo tyto příkazy.
cd withdraw
go mod tidy
# Spuštění Temporal serveru a všech závislostí
docker-compose up -d
# A workeru, který bude zpracovávat všechny úlohy, zde je pak vhodné sledovat LOG
# protože aktivity reálně nic nedělají, pouze vypisují informace do logu
go run worker/main.go
# V novém terminálu je potřeba spustit starter, který spustí workflow
# Po 50s odešle changeFee signal a po dalších 200s cancelWithdraw signal
go run starter/main.go
# Ve třetím terminálu lze spustit query, pro zjištění, kolik celkem bylo strženo peněz
go run query/main.go
Zkušenosti s Temporalem, či názory a postřehy můžete sdílet se čtenáři v komentářích
K tomuto článku již není možné přidávat další komentáře