Scaling registry resources

Unresolved include directive in modules/admin/pages/scaling/scaling-resources.adoc - include::platform:ROOT:partial$admonitions/language-ua.adoc[]

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.