A Temporal deployment is composed of three components: one or more Temporal service servers, one or more Cassandra noSQL database servers (or MySQL), and machines running your worker services.
is resonsible for persisting workflow state to the database as well as scheduling workflows and activities on specific worker service instances.
is responsible for reliably storing workflow and activity state.
hosts your workflow and activity code. With Neon.Temporal, you can code your workflows in any supported .NET language. You'll typically deploy your workflow service as a console application that connects to a Temporal cluster via a TemporalClient, registers one or more workflows and/or activities, informs Temporal that the service is ready, and then waits for Temporal to assign workflows and activities for execution.
A most simple Temporal solution deployment will have a single Temporal server, a Cassandra database node, and a worker service instance:
Temporal can be scaled horizontally by adding more Cassandra, Temporal, and Workflow Service machines. You can do this manually with bare metal hardware, using clusters of virtual machines, or machanisms provided by public cloud providers like AWS, Azure and Google or deploying on platforms like Kubernetes. Temporal is agnostic to all of this though. It just needs servers to run on and expects worker service instances to connect over the network via a compatible client.
Temporal supports multi-tenancy by allowing workflow and activity implementations to isolated into multiple namespaces. Namespaces are simply a name that can be used to separate workflows much like namespaces can be used to separate pods running in a Kubernetes cluster. It's common to deploy a Temporal cluster that defines namespaces for different teams running workflows on the cluster and even for individual users. Temporal can support thousands of namespaces.
The diagram above depicts three Temporal namespaces, each with its own set of worker services processing workflows and activities. In these situations, it's common for a central team to manage the Temporal/Cassandra servers with each tenant team managing their own servers hosting their workflow services.