Skip to content

Deploy Weblate's components separately to allow for horizontal scaling #298

@korewaChino

Description

@korewaChino

Describe the problem

Right now, the Weblate helm chart deploys itself as a single monolithic instance, meaning that every component runs in a single container. Causing slow startup times due to having to initialize every single component in the same container.

But according to https://docs.weblate.org/en/latest/admin/install/docker.html#scaling-horizontally, you can actually scale Weblate horizontally by deploying multiple instances of Weblate, with extra arguments to make them run a specific component.

Doing this allows for high-availability as individual components can be restarted without affecting the whole instance, meaning that when a certain component (i.e Celery, or the web server) fails, it can quickly restart and reconnect to the cluster without affecting downtime.

Describe the solution you'd like

Extend the Helm chart to allow Weblate components to be deployed separately instead of running everything in a single binary.

I got an example for a similar distributed Helm deployment that works similarly to what I'm describing, from Grafana Mimir which uses only 1 single Grafana Mimir container, but with extra arguments to target a specific component https://github.com/grafana/mimir/tree/main/operations/helm/charts/mimir-distributed

While that deployment has its own hash ring clustering, seems like our distributed Docker compose only relies on a common database backend, so this should be fine enough.

Describe alternatives you've considered

No response

Screenshots

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementAdding or requesting a new feature.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions