Temporal Orchestration (A Guide)
Prerequisites
Familiarity with Golang and Docker Containerization.
Determinism (CS).
Patience.
Resources
https://sagikazarmark.github.io/temporal-intro-workshop/#/
An Introduction
Short TL;DR :- Orchestration is the process of scheduling asynchronous tasks execution, keeping track of their results and their failures. Temporal is the orchestrator here. We interface with the Temporal Server directly when we want to execute some Workflow.
A Workflow is a bunch of Tasks that is executed on some Worker.
For more information checkout the official Temporal documentation
Mostly we will be writing Worker programs in Golang (Best supported language for the use case).
Workers
Workers are programs written using the temporal SDK (GoLang). They communicate with the temporal server using gRPC protocol. Within the worker program are instructions to execute some workflow. Whenever Temporal Server receives a request to execute a workflow. It starts the execution on the worker program rather than executing the workflow on it’s own. The server keeps track of the state of execution and the worker actually performs the execution. Upon completion, it sends the result of the workflow back to Temporal.
Deployment
https://docs.temporal.io/blog/auto-setup/
Best Practices
https://github.com/temporalio/samples-go.git
Validation API
This is a microservice that enables us to verify our users through various checks as required by the SECP. It is built on GoLang and uses Mongodb for persistent data. The service is asynchronous and only interfaces with the Elphinstone Backend. It uses Temporal for orchestrating it’s tasks. Following are it’s functions :
Stifle validation.
PMD verification.
IBFT verification.
NADRA verification.