Learn About

Fortschritte in der Leistung von Regel-Engines

Bei DecisionRules war die Leistung schon immer eine der Schlüsselqualitäten unseres Produkts. Schließlich ist die schnelle und effiziente Bearbeitung von Anfragen an den Regel-Engine die Hauptfunktion eines Regel-Engines. In diesem Artikel teilen wir unsere jüngsten Bemühungen, die Leistung aufrechtzuerhalten und zu verbessern, sowie einige der Ergebnisse.

Fortschritte in der Leistung von Regel-Engines hero image

Von Anfang an wurde DecisionRules als eine schnelle, skalierbare Regel-Engine mit solider Leistung konzipiert. Im Laufe der Zeit hat sich ihre Entwicklung zu einer langen Liste neuer Funktionen und einer erhöhten Reife geführt – aber auch zu größerer Komplexität. Während dieser Zeit haben wir uns hauptsächlich darauf konzentriert, die Kernleistung zu erhalten. Heute stehen wir jedoch vor einer anderen Realität. Mit einer wachsenden und zunehmend vielfältigen Kundenbasis sehen wir uns neuen Herausforderungen gegenüber, wobei die Leistung nach wie vor oberste Priorität hat. Das bloße Beibehalten der ursprünglichen Leistung reicht nicht mehr aus – wir müssen sie weiterhin verbessern.

Warum Leistung wichtig ist

Jeder unserer Kunden hat einzigartige Anwendungsfälle und Anforderungen. Für einige ist die Leistung kein großes Anliegen, da ihre Regeln relativ einfach sind, sie keine schnellen Reaktionszeiten benötigen und ihre Regelanfragen selten sind. Wenn jedoch auch nur eine dieser Bedingungen nicht auf Sie zutrifft, besteht eine hohe Wahrscheinlichkeit, dass Sie schließlich der ständig wachsenden Gruppe von Kunden beitreten, für die die Leistung ein kritischer Faktor ist.

Bewältigung der wichtigsten Herausforderungen

Die drei oben genannten Bedingungen übersetzen sich in die drei häufigsten Leistungsherausforderungen. Die erste Herausforderung besteht darin, angemessene Reaktionszeiten aufrechtzuerhalten, während die Komplexität des Geschäftsprozesses zunimmt. Bei doppelt so vielen Regeln innerhalb eines Prozesses ist es unrealistisch zu erwarten, dass die Reaktionszeiten gleich bleiben. Mit einer effektiven Organisation muss der Anstieg jedoch nicht linear sein. Diese Herausforderung adressieren wir mit unserem Workflow-Feature, das eine optimale Orchestrierung von Geschäftsregeln ermöglicht.

Die zweite Herausforderung ist die Reaktionszeit selbst. Einige Anwendungen haben strenge Latenzanforderungen und verlangen, jede Millisekunde zu sparen. Diese Fälle gehören zu den herausforderndsten, da sie ein empfindliches Gleichgewicht zwischen Infrastruktur, Anwendungssetup und Regelgestaltung erfordern. Um eine effektivere Optimierung zu ermöglichen, haben wir neue Messwerkzeuge entwickelt, die wertvolle Einblicke in die Systemleistung bieten. Mit diesen Werkzeugen haben wir die Regelverarbeitung für viele unserer Kunden erheblich beschleunigt.

Die dritte Herausforderung besteht darin, die Anwendung so zu skalieren, dass sie jederzeit zuverlässig alle eingehenden Anfragen bearbeiten kann. Dies ist ein häufiges Stolperstein für Anwendungen mit hohem Volumen, aber es ist auch eine unserer Stärken – DecisionRules wurde mit Skalierbarkeit in seiner DNA entwickelt. Allerdings ist es eine Sache, für Skalierbarkeit zu entwerfen; sie aufrechtzuerhalten ist eine andere. Es erfordert kontinuierliche Aufmerksamkeit, ein tiefes Verständnis der Software, Container-Orchestrierung und der zugrunde liegenden Infrastruktur.

Leistungstests und Ergebnisse

In den letzten sechs Monaten hat unser technisches Team mehrere Runden von Leistungstests und anschließenden Optimierungen auf verschiedenen Ebenen der Software durchgeführt. Diese Bemühungen umfassten die Infrastruktur, Container-Orchestrierung, Daten-Caching und die Kernlogik des Regel-Lösers selbst. Die Ergebnisse sind beeindruckend.

Um dies zu veranschaulichen, betrachten wir einen Beispielentscheidungsprozess mit zwei aufeinanderfolgenden Geschäftsregeln, beide Entscheidungstabellen. Die erste ist eine große Tabelle mit 10.000 Zeilen, während die zweite eine kleinere Tabelle mit nur 30 Zeilen ist. Der Prozess lässt sich leicht innerhalb einer Hauptorchestrierungsregel einrichten.

__wf_reserved_inherit

Die Orchestrierungsregel

Lassen Sie uns nun den Prozess einem kurzen Leistungstest unterziehen. Wir werden die Hauptregel über einen Zeitraum von 10 Minuten aufrufen und dabei die Anzahl der virtuellen Benutzer von 1 auf 30 schrittweise erhöhen. Um den Test anspruchsvoller zu gestalten, werden wir Batch-Anfragen durchführen und in jedem einzelnen Aufruf ein Set von 12 unterschiedlichen Eingaben an den Solver senden.

Zum Vergleich führen wir den Test auf zwei Versionen durch: DecisionRules 1.18.4 und das neuere DecisionRules 1.19.5. Um die neue Version optimal zu nutzen, verwendeten wir Workflow als Hauptregel anstelle ihres Vorgängers, dem Regel-Flow. Die Ergebnisse sind in den folgenden Diagrammen dargestellt.

__wf_reserved_inherit

Testergebnisse für DecisionRules Version 1.18.4

__wf_reserved_inherit

Testergebnisse für DecisionRules Version 1.19.5

Wir sind stolz darauf, eine signifikante Verbesserung zu berichten. In Bezug auf die Reaktionszeiten war die neuere Version ungefähr fünfmal schneller als die ältere. Dementsprechend konnte sie etwa fünfmal mehr Anfragen verarbeiten. Während diese Zahlen je nach spezifischen Regeln und Testsetup variieren können, zeigt der Vergleich deutlich unseren jüngsten Fortschritt.

Ausblick

Die Verbesserung der Leistung angesichts wachsender Softwarekomplexität ist keine leichte Aufgabe. Wir mussten alle oben skizzierten Herausforderungen bewältigen. In vielen Fällen haben die realen Anforderungen unserer Kunden uns dazu gedrängt, unser System weiter zu verfeinern. Und wir sind uns sicher, dass in Zukunft neue Herausforderungen auftreten werden. Schließlich wartet wahrscheinlich dort draußen eine hochkomplexe Anwendung mit einer strengen Anforderung an die Reaktionszeit von 10 Millisekunden und extremem Verkehr darauf, unsere Aufmerksamkeit zu erhalten.

Jakub Kaninsky

Jakub Kaninsky

Leitender Entwickler