Skip to main content

Scaling

Ensuring proper availability, redundancy, and performance across USC services requires thoughtful scaling strategies. Below are general guidelines and configuration recommendations, along with specific application examples, to help you scale USC effectively.

General scaling guidelines

  • Horizontal Scaling: Adjust the replicaCount to scale critical components horizontally across multiple nodes for improved availability and load distribution.

  • Stateful Applications: Components like databases, caches, and storage (e.g., Redis, MinIO) have specific scaling requirements and may not benefit from simple replica scaling due to their need for data consistency and high availability.

  • Stateless Applications: Backends and APIs can generally be scaled horizontally as they are designed to handle load across replicas without state dependencies.

The following configurations outline which PODs are suitable for scaling, with critical services recommended for multiple replicas to ensure robustness.

Note: These recommendations do not specify exact scaling configurations but serve as general guidelines.

Key components recommended for scaling

Mail Service

  • Configuration: values_files/values-mail-service.yaml

  • Example:

    replicaCount: 2

PORTAL

Portal

  • Configuration: values_files/values-portal.yaml

  • Example:

    admin:
        replicaCount: 2
    backend:
        replicaCount: 2
    client:
        replicaCount: 2
  • Notes: Scale all components (admin, backend, client) the same.

Portal Analytics Adapter

  • Configuration: values_files/portal-analytics-adapter.yaml

  • Example:

    replicaCount: 2

Portal KCenter Service Connector Adapter

  • Configuration: values_files/values-portal-kcsc-adapter.yaml

  • Example:

    replicaCount: 2

Portal Search Adapter

  • Configuration: values_files/portal-search-adapter.yaml

  • Example:

    replicaCount: 2

Portal USM Adapter

  • Configuration: values_files/portal-usm-adapter.yaml

  • Example:

    replicaCount: 2

USU SERVICE MANAGEMENT

USM

  • Configuration: values_files/values-usm.yaml

  • Example:

    replicaCount: 2

USM Mobile

  • Configuration: values_files/values-usm-mobile.yaml

  • Example:

    replicaCount: 2

USU Analytics

  • Configuration: values_files/values-ua-analytics.yaml

  • Example:

    replicaCount: 2
  • Critical note:

    • The application may fail to start with replicaCount: 2 due to database locking conflicts (e.g., ObjectOptimisticLockingFailureException).

    • Solution: Deploy one replica first, wait for it to initialize fully, then scale to 2 replicas.

VMX

VMX Server

  • Configuration: values_files/values-vmx-server.yaml

  • Example:

    replicaCount: 2

VMX Web UI

  • Configuration: values_files/values-vmx-web-ui.yaml

  • Example:

    angular-base:
        deployment:
            replicaCount: 2

ShopX

Admin UI

  • Configuration: values_files/values-shopx-admin-ui.yaml

  • Example:

    angular-base:
        deployment:
            replicaCount: 2

UI

  • Configuration: values_files/values-shopx-ui.yaml

  • Example:

    angular-base:
        deployment:
            replicaCount: 2

Localization

  • Configuration: values_files/values-ulm.yaml

  • Scaling Recommendation:

    • Scale both backend and frontend for improved availability.

  • Example:

    backend:
        replicaCount: 2
    frontend:
        deployment:
            replicaCount: 2

USER MANAGEMENT

Account UI

  • Configuration: values_files/values-uum-account-ui.yaml

  • Example:

    uum-account-ui:
        um-ui-base:
          deployment:
            replicaCount: 2

Admin UI

  • Configuration: values_files/values-uum-admin-ui.yaml

  • Example:

    uum-admin-ui:
        um-ui-base:
          deployment:
            replicaCount: 2

MinIO

  • Configuration: values_files/values-usu-minio.yaml

    Scaling requirements:

    • Must run in distributed mode with an even replicaCount (minimum 4).

  • Example:

    mode: distributed
    statefulset:
        replicaCount: 4

Keycloak

  • Configuration: values_files/values-uum-keycloak-bitnami.yaml

  • Example:

    replicaCount: 2

Non-scalable or non-scaling-required applications

Explicitly Unsupported
  • Lima

  • Orchestra

  • UAS

  • UDO

  • ULM

  • USM

    • USM AI

  • VMX

    • VMX App Manager

    • VMX Greenmail: Testing tool

    • VMX Roundcube: Testing tool

Unconfirmed/Unknown/TBD
  • KCenter: Might be added in the future.

  • KBot: Might be added in the future.

  • KFirst: Might be added in the future.

  • ChatGptConnector: Might be added in the future.

  • ShopX Service: Scaling capability unverified.

Partially Supported
  • USU-Help: Should be scalable, but isn't needed.

    • Configuration:

      values_files/values-usu-help.yaml

    • Example:

      replicaCount: 2
    • Note: This application is PWA (Progressive Web App) designed to retrieve data from the main server only once. As a result, scaling up is not required, as it is already optimized for performance. Additionally, it provides the functionality to be installed in offline mode, complete with automatic local installation.

  • VMX:

    • vmx-mail-in-service: Should be scalable, but isn't needed.

    • vmx-file-service: Should be scalable, but isn't needed.

  • USU-Mongo: Should be scalable, but isn't needed.

  • USU-Vault: Should be scalable, but isn't needed.

    • Notes:

      • External Vault can be used.

      • BankVaults Helm chart is used (instead of Bitnami) to support automatic unsealing.

      • Scaling Vault requires backend storage adjustments (e.g., MariaDB).