A Brand New “Workflow as Code” Execution Engine

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • iwf

    iWF is an API orchestration platform offering an orchestration coding framework and service for building resilient, fault-tolerant, scalable long-running processes

  • 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.

  • iwf-java-samples

    samples for iwf-java SDK

  • 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

  • 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.

    InfluxDB logo
  • iwf-golang-samples

    samples for iWF-Golang-SDK

  • 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

  • iwf-idl

    interface definition between iwf SDKs and iwf server

  • 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.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts