Horizontally Scalable

Architecture Principle · 09 of 9

Horizontally Scalable

The platform was designed to scale horizontally from day one. Services are stateless. State lives in databases. Capacity grows by adding nodes — not by rewriting code or migrating data.

What this means

In practice.

Same architecture supports 50-user mill and 5000-user mill group

Add capacity by adding nodes — no need to re-architect or re-platform

Background jobs distributed across worker pool — heavy jobs don't slow UI

Connection pooling and caching reduce database load proportionally

How it works

Under the hood.

01

Stateless app tier

App servers hold no state between requests. Any request can be served by any server.

02

Queue-driven jobs

Heavy work (reports, exports, bulk imports) queued in BullMQ. Worker pool processes async.

03

Database replicas

Read queries can route to replicas. Write throughput scaled via connection pooling + partitioning.

04

CDN + edge cache

Static assets served from CDN. Heavy reads cached at edge for global distribution.

Visual

Small (1 plant)1 nodes
Medium (3 plants)3 nodes
Large (8 plants)8 nodes
Group (15+ plants)15 nodes

Same architecture, same code, same data model. Just more nodes.

Real-World Example

Real-world: From 1 plant to 5 plants in 8 months

Before

Customer started with 1 plant, 200 users. Grew to 5 plants, 1200 users in 8 months.

After

No architectural change. Added 2 more app server nodes, 1 more worker pool, scaled Postgres to bigger instance. All transparent to users. No downtime, no migration.

Paper mill

Ready to modernize your mill?

See Papyrus BPApp
in your mill.

Book a personalized demo. We'll walk through every module relevant to your operation — from Deckle optimization to GSTR-3B compliance.

CallRequest Demo