Menu
SaaS / Multi-Tenant Architecture

Multi-tenant SaaS with 30-minute automated tenant provisioning

Onboarding a new SaaS customer required multiple hours of manual server configuration, database creation, domain mapping, and seed provisioning. I engineered an automated provisioning pipeline using Laravel, cPanel/WHM API, and Traficom’s .fi domain registry: incoming tenant registrations now spin up a fully isolated MySQL database, configure DNS and SSL, and deploy the tenant environment in under 30 minutes with zero manual intervention.

Client — A Finnish commercial services & booking platformYear — 2024Duration — 2 months
Concept visuals — not actual screenshots
4+ hours→30 min
to provision a new tenant
form submission to live site, fully automated
100%
database per tenant
strict physical isolation — zero shared-schema leak risk
18 steps→0 steps
manual onboarding steps
fully automated pipeline with zero human intervention
01 — Challenge

The client operated an operational SaaS platform providing booking, customer management, and commerce services for businesses across Finland. Each client business required an isolated environment with its own custom .fi domain, dedicated database, and tenant-scoped document storage.

Previously, provisioning each new customer was a manual, multi-step process handled by engineering: creating hosting accounts in cPanel, provisioning MySQL databases and credentials, running migrations, mapping DNS records with Traficom, and provisioning SSL certificates. This manual process took several hours per onboarding, created backlogs during customer sign-ups, and carried an inherent risk of human misconfiguration that could jeopardize tenant data isolation.

02 — Approach

I architected an automated, secure multi-tenant provisioning engine built entirely on Laravel:

1. Database-Per-Tenant Isolation: Selected strict database-per-tenant isolation rather than a shared-schema tenant_id column. This guaranteed physical data isolation, simplified customer GDPR compliance, allowed independent backups and restores, and eliminated cross-tenant query leaks.

2. Automated Provisioning Pipeline: Implemented an event-driven queue pipeline that coordinates with the cPanel/WHM API to automatically provision hosting accounts, create dedicated MySQL databases, execute tenant-scoped migrations, and seed default business data.

3. Traficom .fi Registry Integration: Built an automated integration with the Traficom registry API from the Laravel management interface: checking domain availability, executing programmatic registrations, managing authoritative DNS nameservers, and handling automated renewal cycles.

4. Tenant-Scoped Storage: Isolated file assets and document storage within tenant-specific accounts and access controls, ensuring customer files and financial records never share a filesystem.

5. Administrative Control Plane: Built a centralized Filament-based dashboard to monitor tenant health, manage automated database backups, view provisioning logs, and trigger maintenance runs.

03 — Impact

Tenant onboarding time dropped from 4+ hours of manual engineering down to 30 minutes of hands-off automation. Human error in customer setup was completely eliminated, new customer onboarding scaled effortlessly, and strict physical database isolation passed enterprise client security procurement reviews with zero friction.

Stack
LaravelcPanel / WHMMySQLREST APIsLaravelMySQLcPanel / WHM APITraficom .fi registryREST APIsQueues

Something holding you back?

New build, rebuild, or adding AI to what you already have — I'll take a look and give you an honest perspective.

Get in touch ↗