Resource optimization
Resource usage
To run a UI Bakery instance, it's recommended to have at least 2 CPUs and 4 GiB of memory. For handling hundreds or thousands of simultaneous user sessions, or gigabytes of data in automation, you may need to increase these resources. It's challenging to specify the exact resource requirements, so we recommend monitoring resource usage and adjusting based on demand.
When you deploy UI Bakery using Docker Compose, each UI Bakery service will consume resources on demand. You may want to adjust resource limits for various UI Bakery services based on your specific needs. If you expect that users might trigger heavy queries leading to overuse of resources, set hard limits in the docker-compose.yml
file, for example:
datasource:
container_name: datasource
image: cruibakeryonprem.azurecr.io/cloud/datasource:${UI_BAKERY_VERSION:-latest}
restart: always
env_file: .env
deploy:
resources:
limits:
cpus: '1'
memory: 1024M
The configuration above limits the datasource service to consuming more than 1 CPU and 1 GiB of memory.
We recommend setting resource limits for the datasource
, automation
, and python-runtime
services if you experience unpredictable loads on these services. The memory limit should be at least twice the size of the processed data.
Replicating UI Bakery services
Not all UI Bakery services are designed to be replicated.
Replicating is advisable for these services:
datasource
,automation
, andpython-runtime
. These services execute data requests or run user code. The heavier the datasource requests or the more complex the automation or python code execution, the more resources they may require. However, in most scenarios, these services do not need more than 1 GB of RAM and 1 CPU. If you have a large number of concurrent requests, the better strategy is to scale them horizontally.The
bakery-back
service is designed to be scaled vertically. If you observe high resource consumption on thebakery-back
service, we recommend increasing the amount of RAM and CPU allocated to the service instance.Other services such as
bakery-gateway
,bakery-front
, andworkbench-front
are simple NGINX applications. They can handle heavy loads efficiently while maintaining low resource usage, so scaling is rarely necessary.
Scaling with docker compose
To accommodate numerous concurrent data sources or automation requests, you may choose to scale some of UI Bakery's services by adjusting the docker-compose.yml
file with the replicas config:
datasource:
container_name: datasource
image: cruibakeryonprem.azurecr.io/cloud/datasource:${UI_BAKERY_VERSION:-latest}
restart: always
env_file: .env
deploy:
mode: replicated
replicas: 4
Scaling with kubernates
To configure Kubernetes for auto-scaling, add these lines to ui-bakery-datasource.yaml
. This will start with 2 instances of the datasource service, allowing scaling up to 4 instances if the CPU load increases.
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: ui-bakery-datasource-hpa
namespace: ui-bakery
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: ui-bakery-datasource
minReplicas: 2
maxReplicas: 4
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
Last updated
Was this helpful?