Scaling registry resources

🌐 This document is available in both English and Ukrainian. Use the language toggle in the top right corner to switch between versions.

Each registry has specific tasks, workflow logic, and configurations, leading to certain services involved in performing these tasks to a greater or lesser extent.

Depending on the load on a particular registry, which directly depends on the number of requests from active users, the registry’s services require a certain amount of resources. They can be deployed in one or more instances.

For instance, when serving 1,500 active users over 1 hour, a hypothetical registry should have approximately the following configuration:

Horizontal scaling registry configuration
Service Number of instances

Admin portal/Officer portal/Citizen portal

1

BPMS

4

BP WS gateway

1

BP admin portal

1

DB/DB read replica

1

Digital document service

1

Digital signature service

3

Excerpt services

1

Form schema provider

3

Form schema validator

3

Istio gateway

1

Infra (jenkins/gerrit/nexus etc.)

1

Kafka services (exporter, schema registry)

1

Kafka cluster

3

Kafka cluster zookeeper

3

Kong

4

Language server

1

Process history rest api

2

Process history persistence service

1

Redash services

1

Registry rest api

4

Registry kafka api

4

Redis rfr (1000m)

2

Redis rfs

3

User settings rest api

1

User task management

3

User process management

2

Wiremock

1

Depending on the needs of your registry, you can modify configurations for certain services. Precisely, you can:

Scale resources vertically

This operation can be done in two ways:

  • (Primary method) In the Control Plane administrative panel, in the section for managing resources for services.

    You can learn more about this on the Managing registry resources page.
  • (Alternative method) In the OpenShift console:

    This approach allows you to add resources to specific services quickly, but over time, the settings will revert to those specified in the Helm chart.
    • Select the project with your registry > Workloads > Deployments > Open the service settings > YAML.

    • In the spec.containers.resources section, you can set the required configuration parameters for CPU and memory.

    • In the spec.containers.resources.env section, you can define environment variables for your applications, such as JAVA_OPTS, Ceph variables, etc.

platform prod deploy resources

Scale resources horizontally

Horizontal scaling can be done by increasing the number of replicas of certain services.

  • Currently, you can scale horizontally like this:

    This approach allows you to add the number of replicas for desired services quickly, but over time, the settings will revert to those specified in the Helm chart.
    • Select the project with your registry > Workloads > Deployments > Open the service settings > YAML.

    • In the spec.replicas section, you can set the required number of replicas for the selected service.

      Example. Horizontally scaling the bpms service to three replicas
      spec:
        replicas: 3

    platform prod deploy resources 1

Setting up horizontal scaling automatically (Horizontal Pod Autoscaler) will be possible in the Managing registry resources section of the Control Plane administrative panel in upcoming releases, starting with 1.9.7.