OpenRules Decision Manager: Performance Breakthrough
For years many Rule Engine customers were satisfied with their performance as the majority of rule engines delivered in general good performance. However, this picture has changed dramatically in the last 3-4 years when the number of rules-based real-time transactions started to grow from hundreds of thousands or several millions to hundreds of millions per day. The typical execution time of 50-100 milliseconds per transaction that used to be considered as a good performance indicator is not sufficient anymore in many practical situations. Nowadays enterprise-level customers require the performance that goes down to only a few milliseconds per transaction or in many cases under 1 millisecond. This real-world requirement along with dramatic shift to the cloud-based deployment was the main reason why two years ago we redesigned our Classic OpenRules product and built its new incarnation known today as “OpenRules Decision Manager“.
I knew that our Decision Manager improved the performance of the decision services roughly from 10 to 100 times. But being busy with helping our customers and adding new great capabilities (e.g. Rules Debugging) to the product, we didn’t have time to do the performance benchmarking. DMCommunity.org Feb-2021 Challenge "Medical Service Coverage" gave us an opportunity to do it considering different deployment options supported by OpenRules Decision Manager. It deals with a relatively big decision table that contains more than 16K rules. So, we finally created a benchmark for this problem and compared the performance of the following implementations:
- OpenRules Java API
- OpenRules deployed with Docker
- OpenRules deployed as AWS Lambda
- Brute-Force Java implementation
The results were quite impressive: OpenRules-based decision service was able to execute 100K requests per second averaging less than 0.01 milliseconds per request! It shows the performance that is 50 times faster to compare with a brute-force Java solution. You may compare these results with other already submitted solutions for the challenge.
Get the latest version 8.3.2 of OpenRules Decision Manager to get all sources and check this performance on your own machine. Alternatively you may execute this service containerized as a Docker without any OpenRules installation.
The detailed description of our benchmark and performance results can be found in this post "Benchmarking Decision Service".