After 2.5 years of rewrite, tests, deployments in production and hard work, we are very pleased to say that Xbus 3.0.0 is ready!
What was done?
A lot! Back in summer 2016, Xbus 2, written in python with a hand-crafted protocol over zero-mq, was showing limits and the need to rethink the whole product was getting very strong.
This is when we started working on a complete rewrite of Xbus with the following goals/ideas/constraints:
• Base the protocol on NATS, for easier distribution and setup.
• Drop Python, that we still love, in favor of Go. The reasons are multiple and not the subject of this post, but suffice to say that we would benefit from a compiled language, and that NATS being coded in Go too, it made the integration easy at a low level since we plug into the authentication layer.
• Provide strong security guaranties, for which we found a simple and elegant solution: https://orus.io/post/nats-xbus-and-tls/
• Use a micro-services architecture
Along the way, some strong features emerged:
• Graph-based pipeline definition
• Protobuf-based API specifications, thanks to NRPC to which we heavily contributed.
• A HTTP gateway for simple actors
Can I start using it?
YES! We waited a long time before releasing a major version to make sure anybody could just start using it.
We already have instances of Xbus 3 running in production, and we are pretty confident that it is doing the job properly.
The roadmap is always moving, but the following subjects have all our attention:
• Native replies: Currently an emitter cannot wait for a reply to its message. We can workaround this by adding a consumer and configure more complex pipelines, but this is definitely a feature we want to provide out of the box
• A decent GUI: we already have a Elm-based POC of a Xbus GUI. We aim to provide many features in this application:
- • configuration of the accounts, actors, pipelines…
- • monitoring
- • easy error handling
- • manually post data to replace FTP drops
- • SSO for corporate use
- • …
• Performance improvements: Until we had a great confidence in Xbus safety, performances were not a primary concern, although the architecture was always conceived with them in mind. We can now work on improving the processing capabilities of Xbus.