Skip to content

Distributed Workflow Registry

Easy to adopt workflow tracking which instantly lets developers bring resilience into their implementations of saga patterns.

Why does the world need Sagawise?

Several years ago, when we deployed into production, our first backend with saga patterns powered with Kafka queues, we came to a harsh realization: there were failures which were hard to debug and whose pattern was hard to pin down.

We tried message brokers other than Kafka, but none of them helped adequately. We also tried different platforms which offer durable completion of workflows, e.g. Temporal and Netflix Conductor. However, we realized that adopting these platforms into existing applications was a large undertaking.

While we found workarounds to eliminate the errors, we knew we had to find a new, easily pluggable way to solve the problem. That is when Sagawise was born. 

Sagawise is designed as a workflow registry. It means that while it understands the workflows and help track it, it doesn’t actually contain any business logic. So it helps us keep business logic in their respective domain’s microservice, and help drive workflow instances to completion. Sagawise can be introduced into an existing backend in matter of hours.

Here are the features which make Sagawise really awesome.

AsyncAPI Compatible

AsyncAPI is becoming the defacto format for defining distributed workflows. Sagawise reads the AsyncAPI specifications to determine what it needs to do. So if a developer is already using AsyncAPI, they can get started with Sagawise very quickly.

No Business Logic

Sagawise only aids in driving workflow instances to completion. This means that essential business logic continues to stay in domain specific microservice. This is in contrast to centralised workflow orchestrators which contain atleast some amount of decision logic.

Easily Pluggable

Sagawise doesn't attempt at controlling when a microservice performs its task. Sagawise acts as a meta layer which simply keeps track of where things are. We don't maintain message queues and almost never need message contents. Sagawise does provide methods to maintain idempotency across the distributed workflows.

Highly Performant

Sagawise is written with Golang and uses Redis as persistence layer. Thanks to the concurrency abilities of Golang, the system is highly performant. Sagawise comes with a dashboard where status of different workflows and errors can be seen. An OpenTelemetry collector is used to export logs, and metrics.

Here are the tools we used.

All
Backend
Cloud
DevOps
Go Programming Language PNG
Golang
Redis Logo PNG
Redis
grpc
gRPC
asyncapi
AsyncAPI
opentelemetry
OpenTelemetry
Docker Logo PNG
Docker
Helm Logo PNG
Helm

Ready to start building your product?