Releasing 0.5.0
We are excited to announce the minor release 0.5.0
. This release is highlighted by:
- Alpha support for building
WfSpec
s in Python. - Improved monitoring and health metrics on the LittleHorse Server.
- Support for looping over a
JSON_ARR
and launching threads in parallel for each element. - Improved Exception Handling.
- Limited early access for LittleHorse Platform.
In this release, we made great strides towards full Python support, improved monitoring and observability, and added the ability to spawn threads in parallel looping over a JSON_ARR
variable.
Get Started
LittleHorse is free for production use according to the Server-Side Public License!
To get started with LittleHorse OSS, you can:
- Try our quickstarts
- Visit us on GitHub and give us a ⭐!
New Features
We'd like to highlight some of the exciting new features in 0.5.0
.
Python WfSpec
Support
Our Python SDK now has full support for building WfSpec
s! You can check it out at our quickstart page.
For-Each Suppport
This is a very exciting feature which allows you to iterate over a list and spawn multiple ThreadRun
s (like threads in a program).
To see it in action, check out our example or read the documentation.
Improved Failure Handling
This release introduces a new status for LittleHorse, called EXCEPTION
. The EXCEPTION
status differs from the ERROR
status in the following ways:
ERROR
means an unexpected technical failure occurred. For example, aTaskRun
timed out because a third-party API was down.EXCEPTION
means that a failure occurred at the business process level. For example, you might use anEXCEPTION
when a customer has insufficient funds in her account to complete an order.
Just like in programming, you can throw and catch EXCEPTION
s (and you can also catch ERROR
s). For a blog post that goes in-depth into how LittleHorse makes it easy to handle failures in your workflows, check out our Failure Handling Docs.
LH Server Monitoring
We added a new path /status
on the LH Server's health endpoint (port 1822
by default) which can be used to inspect the status of all internal Kafka Streams Task
s on the LH Server. It presents the following information:
- All Active Tasks on the host
- All Standby Tasks on the host
- Any ongoing State Restorations on the host
Additionally, we added a /diskUsage
endpoint which returns the number of bytes of disk space in use by the LH Server.
LittleHorse Platform uses these endpoints to intelligently scale, manage, and operate LittleHorse for you.
We are also in the process of writing and implementing a Kafka Improvement Proposal to improve visibility of Standby Tasks, which will allow the LittleHorse Operator (both in LH Platform and LH Cloud) to safely and smoothly scale LittleHorse clusters down without any downtime. Stay tuned in the Kafka developer mailing list!
LH Platform
LittleHorse Platform is a Kubernetes Operator that securely manages a LittleHorse cluster for you in your own environment. It seamlessly integrates with your Kubernetes environment, GitOps workflows, and security strategy (TLS, mTLS, OAuth, Cert Manager, Keycloak).
LittleHorse Platform is now available for limited early access, and has been installed in one of the largest health insurance companies in the US.
To get started with LittleHorse Platform, please contact us.
Persistent Variables
In LittleHorse 0.2.0
and later, you can search for Variable
s by their value. For example, if you have a Workflow Specification that defines a variable email_address
, you can find all Workflow Run's where email_address == 'obiwan@jedi-council.org
by using the SearchVariable
rpc call.
The problem with 0.2.0
? You need to provide the wfSpecVersion
in your search request. That means you can only search for a Variable
if you know the version of the WfSpec
it came from.
Release 0.4.0
introduced the ability to mark a Variable
as persistent
, which means that:
- Every future version of the
WfSpec
must have the same variable definition with the same index type. - You can now search for variables with a certain value across all versions of the
WfSpec
.
Be on the lookout for an upcoming blog post about using Persistent Variables and a simple backend-for-frontend to build an end-to-end Approval Workflow Application using only LittleHorse!
What's Next
Over the next few weeks, we plan to:
- Add utilities to make it easier to work with the LittleHorse API.
- Allow users to throw a Workflow
EXCEPTION
from within the Task Worker SDK (currently, onlyERROR
is supported). - Continue hardening the LittleHorse Server's availability and performance story.
- Launch limited early accesss for LittleHorse Cloud and LittleHorse UI.
To get started with LittleHorse, head over to our installation docs.
What about 0.3.0
and 0.4.0
?
We also released 0.3.0
and 0.4.0
over the past 5 weeks! (And before 0.3.0
, we had a minor patch bugfix on 0.2.1
).
The only thing missing with 0.3.0
and 0.4.0
is a blog post + announcement. That's because a lot of the features we included in this announcement were partially-implemented, implemented in some languages and not others, or in the "experimental" phase at the time of 0.3.0
and 0.4.0
. We accelerated the release of 0.3.0
and 0.4.0
because certain early-access customers requested certain features on an accelerated timeline.
As our API is mostly stable now, we will slow down our release cadence to likely a new *.x.*
version (a minor
release in Semantic Versioning) every two months, with security and bugfix patch releases (*.*.x
) as needed.
Additionally, as we introduce new features, we will start a release changelog document in which we document the level of stability of the new API's introduced. For example:
STABLE
: Any changes to this API before the next Major Release will be backwards compatible. The feature is covered by our integration tests.BETA
: We don't anticipate any large breaking changes to the feature/API. It is covered by our integration tests, but it might change before the1.0.0
release.EXPERIMENTAL
: Try it out and give us feedback! But you might want to wait a release or two before putting it into production.
The 0.6.0
release notes will include a table of all of our features and their API Stability Level in all four of our SDK's.