Our great sponsors
-
iwf
iWF is an API orchestration platform offering an orchestration coding framework and service for building resilient, fault-tolerant, scalable long-running processes
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
You don't have to run elastic.
Cadence/Temporal let you run only with database for majority of the feature/power. ElasticSearch is only for supporting the searching functionality(advanced visibility).
https://docs.temporal.io/visibility
https://cadenceworkflow.io/docs/concepts/search-workflows/
Same as in iWF, you can use a Temporal service without advanced visibility.
E.g. this doc is showing how to run with Temporalite which doesn't have advanced visibility with it.
https://github.com/indeedeng/iwf/blob/main/CONTRIBUTING.md#o...
Again, you still have 90% power and the only thing missing is searching for workflows using "search attributes".
You can still store data in search attributes but they are just not searchable.
And later, you can migrate to a Cadence/Temporal service that has advanced visibility enabled.
Maybe you can start with looking at the sample for solving the same "subscription" use case:
https://learn.temporal.io/tutorials/typescript/subscriptions...
https://github.com/indeedeng/iwf-java-samples#product-use-ca...
https://github.com/indeedeng/iwf-golang-samples#product-use-...
Note that you need to consider making changes to workflow -- in Cadence/Temporal, you must use versioning like: https://stackoverflow.com/questions/61298415/how-can-i-versi...
And this versioning/determinism constraints is just a small part of the learning curves for complicated project
Maybe you can start with looking at the sample for solving the same "subscription" use case:
https://learn.temporal.io/tutorials/typescript/subscriptions...
https://github.com/indeedeng/iwf-java-samples#product-use-ca...
https://github.com/indeedeng/iwf-golang-samples#product-use-...
Note that you need to consider making changes to workflow -- in Cadence/Temporal, you must use versioning like: https://stackoverflow.com/questions/61298415/how-can-i-versi...
And this versioning/determinism constraints is just a small part of the learning curves for complicated project
We don't have any plan to build other SDKs at this moment.
But it's VERY EASY to build an SDK for iWF so I would encourage anyone interested to build one. I will provide all the support.
A SDK of iWF is very lightweight. It only need to invoke the two WorkflowState APIs from hosting a REST/HTTP service, based on the worker API schema. https://github.com/indeedeng/iwf-idl/blob/main/iwf.yaml#L215
There is no much tricky things inside the SDK that you have to do. For client APIs to call iWF server(the rest of the API defined in the Open API schema), just need to build a wrapper on top of the generated code from Swagger (and it can be optional but it will just make it easier to use).
As a data point, it only took me a week to build GoSDK, including all the tests, by just two IntelliJ IDE and also Goland IDE to translate the Java code into Golang.
The whole community including myself will really appreciate it.
Related posts
- Show HN: Python SDK for iWF – API orchestration engine
- Workflow as code microservice orchestration engine in Go
- A new Workflow engine to orchestrate micro services for building reliable, fault-tolerant, and scalable applications, faster than ever
- Build reliable, long-running Golang applications faster than ever
- Show HN: iWF – A new “workflow as code” execution engine