A few weeks ago at the Replay developer conference we announced a number of new features that are coming to Temporal’s open source platform for durable execution. Some of these new features such as schedules and workflow update are new abstractions for Temporal’s programming model that simplify the implementation and lower the latency for backend services.
Temporal Cloud is a stateful serverless service where customers only pay for what their application uses. Temporal Cloud’s usage model is based on three core principles:
- Customers should only pay for the value they consume - i.e. Temporal only succeeds when our customers succeed.
- Customers should have full control over their costs based on the transparency we provide and their own implementation decisions.
- Customers should not be tempted to make sub-optimal implementation decisions in order to manage costs.
To stay consistent with these principles, the new additions to our SDK's functionality require an update to Temporal Cloud's metering. We’re making two additional metering corrections at the same time. Our updates will change how Temporal cloud meters the usage of:
- Workflow updates
- Child workflows
- Local activities
Schedules are new to the Temporal platform. Temporal Cloud metering will count the triggering of a Schedule as 2 actions, not including the start of the Workflow itself which is already counted as an action. This is essentially the same number of actions if a user manually implemented the equivalent of a Schedule.
Workflow Updates are new to the Temporal platform. Temporal Cloud metering will count a workflow update as 1 action. This is a potential savings for applications as today the equivalent implementation would count as 2 actions for a Query and a Signal.
Child Workflows are currently metered so that every child workflow execution from StartChildWorkflowInitiated to WorkflowExecutionStarted to WorkflowExecutionCompleted is metered as 1 action. This is inconsistent with the way Temporal Cloud meters an equivalent implementation where an Activity starts a new Workflow (2 actions). With this metering update we will count the parent workflow spawning a child workflow as 1 action and the execution of the child workflow as 1 action.
Local Activities are currently metered so that every Local Activity execution is metered as 1 action. This can result in over-counting of Local Activities and unsustainable costs for these implementations. Local Activities also have weaker guarantees than regular Activities (less value-added). With this metering update, all Local Activities associated with one Workflow Task will count as 1 action, significantly reducing the number of Local Activities metered when used as appropriately. Each additional workflow task heartbeat after that is counted as an additional action. Also, Local Activities retried following a Workflow Task heartbeat will count as 1 action. I.e. the more a Local Activity gets used like a regular Activity, the more it will get counted that way too.
These updates to our metering are staged to take effect November 1st, midnight UTC. They do not alter Temporal Cloud’s pricing, credits or any special terms a customer might have today. They also do not affect how Temporal Cloud rate limits namespaces. We’ve analyzed the cost implications of these metering updates for our customers and they are effectively net-neutral across the hundreds of services and applications backed by Temporal Cloud. Most applications will be completely unaffected and the applications that are affected should not see their action count increase or decrease by more than 15%.