The Challenge
What Library Machine Was Facing
Library Machine serves hundreds of libraries — each a separate tenant with its own catalogue, membership database, and borrowing rules. Libraries also needed to participate in inter-library loan networks, which required searching and requesting items across tenant boundaries in near-real-time. The architectural challenge was strong tenant isolation for data privacy combined with selective cross-tenant federation for the shared catalogue.
The Solution
What We Built
We designed the data layer with complete per-tenant schema isolation in PostgreSQL, with a separate federated search index in Elasticsearch that contained only metadata (title, author, ISBN, holding library) — never PII or tenant-private data. Cross-tenant loan requests were handled by a dedicated federation service that translated between tenant-specific IDs and a global catalogue identifier. The platform was deployed on Kubernetes with Helm charts per tenant group, and a shared control plane managed tenant provisioning, billing, and configuration. Search index updates were pushed via CDC (change data capture) from PostgreSQL using Debezium.

Results
