Skip to main content

GoRules BRMS Architecture

The GoRules BRMS consists of a single docker image gorules/brms. Image is built to operate as a standalone Service in the larger system. Other service that require decisioning logic must be integrated with BRMS Rules Engine over HTTP API. Image consists of the BRMS API, the BRMS UI, and the Business Rules Engine (BRE).

BRMS High-level architecture

info

We strongly suggest that you use managed Postgres DB from your cloud provider. For production environment we also suggest having point-in-time recovery.

Stateless

The GoRules BRMS is stateless system and is designed for horizontal scalability. All data including Decision Models, Sessions, Projects, etc. is stored in a Postgres DB.

Decision Evaluation Flow

Upon the API request of document evaluation (Rules Engine over API), the BRMS will:

  1. retrieve the decision model from the database,
  2. process it on the fly (deserialization, parsing, lexing, and compiling),
  3. evaluate against the provided context,
  4. return result in response.
info

GoRules ZEN Engine is built for on the fly processing with performance measured in sub millisecond time for simple models (step 2 and 3).

Application-Level Resilience

  • dockerized: by using orchestration tools such as Kubernetes, it is easy to manage container failover across clusters.
  • stateless architecture: build from the core to be stateless, it allows images to be restarted or scaled without losing data integrity.

Technical Requirements

  • Postgres DB (any standalone or managed will work)
  • Docker linux os image runner x86_64 architecture such as docker, docker-compose, k8s (e.g., AKS, EKS, GKE), Azure Container Apps, AWS ECS and others.
    • Minimum 1GB RAM and 0.5 vCPU
  • Environment where GoRules BRMS is hosted must have access to a License server (https://portal.gorules.io/api).