The next generation low code use case platform
Joule is a Low Code use case platform designed to deliver business impact at pace by reducing time to design, build, pilot and scale. This is all achieved through the use of a well defined use case language (DSL), reusable event processors, OOTB integrations with key 3rd party solutions and extensible platform toolkits.
The platform architecture is based upon event based stream processing. After many years designing, developing, testing and deploying distributed event based platforms experience dictated and directed the solution. The result is a modular platform with minimal external dependencies which is extendable based upon use case need. All extraneous functions and overhead has been minimised where possible. This approach promotes the idea of keeping the solution as simple as necessary, leveraging what is useful and build testable custom components where needed.
Joule Architecture
Key features
Low code DSL to easily define use cases
Event processors (i.e. encryption, filtering, enrichment, prediction, geospatial, rules engine, change data capture, etc,.)
Pluggable reference data (i.e. Apache Geode distributed cache solution OOTB implementation)
OOTB key product integrations (i.e. Kafka, RabbitMQ, Mosquitto, Minio, Drools, InfluxDB, etc,.)
Java SDK for custom processors and transports
Flexible deployment model using either Docker containers or bare metal installations
Low latency high throughput stream processing environment.
Use cases
The Joule DSL is used to define use cases. A use case definition is composed of event sources, processing pipeline, event field projection, output format and transports. The platform is packaged with a suite of reusable processors, formatters, and transport integrations to accelerate use case development. Joule also ships with a Java SDK to support custom codec, processor and transport development.
Since reference data is typically a key requirement for any valuable stateless event processing an OOTB distributed in-memory cache solution is provided. The solution consists of local and distributed key value caching including:
Get Initial Image at process startup which primes both the local and distributed caching cluster; remove I/O overhead during critical event processing paths
Simple key and OQL query interface
Postgres integration for cache misses and offline data persistence
The packaged solution is built using Apache Geode as the distributed caching platform. For further details feel free to contact us.
An additional benefit of the Joule architecture is the ability to form complex solutions by deploying a use case DAG (lightweight microservices architecture), through the use of a messaging platform. Although this is somewhat obvious its worth pointing as it promotes use case reuse, modularity and testability.
Example complex use case
The example above represents a simple use case DAG where processing could be split across environments due to compliance requirements, events initiate within the DMZ environment. Each orange box is an independent use case process. Process chaining is achieved through the application of event subscription, Joule applies the PubSub model to all processing. The distributed cache provides the required reference data (i.e. opt-in and opt-out, enrichment etc,.).
Getting started
To get started, download the following resources to prepare your environment and work through the provided documentation. Feel free to reach out with questions.
Get the latest Joule docker image from docker hub
Download the examples code from GitLab
Work through the README file
We’re Here to Help
Feedback is most welcome including thoughts on how to improve and extend Joule and ideas on exciting use cases.
You’re in this with the entire FractalWorks community, who’s openly sharing ideas, best-practices and helping each other on our Community Forum. Feel free to join us there! And if you have any further questions on how to become a partner or customer of FractalWorks, do not hesitate to engage with us, we will be happy to talk about your needs.
Comentários