Skip to main content

External Deployment

Deploy a Release to a object storage

For organizations that require more flexibility or need to embed decision models direcly in services, GoRules BRMS offers an External Deployment option. In this setup, GoRules can push a Release to an external Object Storage, such as AWS S3, Azure Blob Storage, or Google Cloud Storage. This means the packaged rules and logic can be stored, accessed, and retrieved independently of the GoRules platform.

Next, these packages can be pulled, cached and evaluated directly into microservices.

External Deployment

External Deployment Setup

1. Setting Up Deployment Configuration

Before creating an environment, you need to set up the deployment configuration:

  1. As an Admin of the BRMS, go to the Admin section from the landing page and open Deployments.
  2. Click Add Deployment.
  3. Provide a name and description, select the provider, and configure the credentials for the chosen provider (e.g., AWS, Azure, Google Cloud).
  4. Press Create.
info

Your credentials or IAM user must have permissions to Add, Delete, View, and List objects in the Bucket/Storage Container, depending on the selected cloud provider.

2. Setting Up an External Environment

  1. Open your project.
  2. Navigate to Settings > Environments.
  3. Click Create Environment.
  4. In the dialog, provide a name, choose Deployment as the type, and select the Deployment Configuration created in the previous step.

3. Deploying a Release to an External Environment

  1. Go to Releases.
  2. Create a new Release if one does not already exist.
  3. Open the desired Release and click Deploy, or from the list, click the three dots next to the Release and select Deploy.
  4. In the dialog, select the Environment where you wish to deploy.
  5. Click Deploy.
  6. You can check the deployment workflow status under Releases > Runs.

Consuming External Deployments

External Deployments can be utilized in various ways, with two common approaches:

  1. GoRules Agent Service: GoRules offers an additional microservice called Agent, a high-performance service written in Rust. This service can connect to Object Storage and automatically pull a Release, loading it for use. The Agent service is free to use and provides an efficient way to manage and utilize Releases without manual intervention.
  2. Embeddable Engine: Any service can pull a Release zip from Object Storage, cache it into memory, and use the GoRules Zen Engine for in-code evaluation, delivering bare metal performance without network overhead. The Zen Engine currently supports Node, Python, Go, and **Rust