The verdict in three sentences
Moving from 120 customer installations to a multi-tenant SaaS costs roughly 70,000 to 140,000 EUR excl. VAT for a Berlin software vendor, over about 6 months including migration. For most B2B vendors of that size, schema-per-tenant isolation in a shared PostgreSQL database is the best trade-off between cost, security and ease of migration. The expected gain is cloud cost per customer divided by 3 to 5 and updates shipped once for everyone instead of 120 times.
Shared database, schema per tenant or database per tenant
The CTO leaving the one-instance-per-customer model has to settle isolation before writing a line of code. The three models compare on concrete criteria.
| Criterion | Shared database and tables (tenant_id column) | Schema per tenant | Database per tenant |
|---|---|---|---|
| Monthly cloud cost for 120 customers (2026 estimate) | 600 to 1,200 EUR | 900 to 1,800 EUR | 3,000 to 6,000 EUR |
| Risk of cross-tenant leak | High without Row Level Security | Low | Very low |
| Schema migration (evolution) | One migration | 120 scripted migrations | 120 migrations on 120 databases |
| Backup and restore of a single customer | Complex | Simple (schema dump) | Very simple |
| Refactoring effort on existing code | High (filter every query) | Medium | Low |
| Best for | Consumer SaaS, thousands of small accounts | B2B vendor, 50 to 2,000 customers | Regulated customers, strong contractual demands |
For a vendor whose customers are German Mittelstand companies or public bodies, schema per tenant holds up to about 2,000 tenants. Beyond that, the PostgreSQL catalog makes migrations heavy. A hybrid model is possible: schema by default, dedicated database sold as an enhanced isolation option to customers who require it, often billed 150 to 400 EUR more per month.
Where the 70,000 to 140,000 EUR goes
| Work package | Low range | High range |
|---|---|---|
| Code audit and target architecture | 6,000 EUR | 12,000 EUR |
| Tenant layer (routing, subdomain resolution, context) | 12,000 EUR | 24,000 EUR |
| Multi-tenant authentication, SSO, roles | 8,000 EUR | 18,000 EUR |
| Refactoring queries and background jobs | 18,000 EUR | 38,000 EUR |
| Infrastructure (Kubernetes or PaaS, CI/CD, observability) | 10,000 EUR | 20,000 EUR |
| Tooling to migrate 120 customers | 10,000 EUR | 18,000 EUR |
| Acceptance, regression tests, security | 6,000 EUR | 10,000 EUR |
| Total excl. VAT | 70,000 EUR | 140,000 EUR |
The most underestimated line is refactoring scheduled jobs: nightly exports, email sends, monthly calculations. With single installs, each job ran for one customer. In multi-tenant mode they must become tenant-aware and be distributed so one large customer does not block the other 119.
The 6 month migration plan
| Month | Step | Checkpoint |
|---|---|---|
| 1 | Audit, isolation choice, tenant layer prototype | Signed architecture decision |
| 2 and 3 | Code rework, authentication, jobs | Multi-tenant app in staging |
| 4 | Pilot migration of 5 volunteer customers | Zero data gap on comparison |
| 5 | Migration in waves of 25 to 30 customers | Weekend cutover windows, tested rollback |
| 6 | Last customers, old instances shut down | Lower cloud bill, single monitoring |
Plan a contractual cutover clause: some legacy customers have customizations in their instance. Inventory them in month 1, turn them into per-tenant feature flags, or decline them.
Mini case study
Hypothetical example: Jonas, CTO of a Berlin vendor of management software for municipal utilities, maintains 120 instances on virtual machines.
Need a professional website?
Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.
- Before: 120 VMs at 45 EUR a month, i.e. 5,400 EUR monthly, plus about 2 days a month deploying patches instance by instance.
- After: one cluster and a managed PostgreSQL database, about 1,400 EUR a month. Saving: 4,000 EUR a month, or 48,000 EUR a year.
- Time: updates drop from 2 days to 2 hours a month, freeing about 14 developer days a year, valued at 600 EUR a day, i.e. 8,400 EUR.
With a 100,000 EUR rebuild, the annual gain of 56,400 EUR pays back the project in about 21 months, before counting faster feature delivery.
FAQ
Is multi-tenant compatible with public sector customers?
Yes, provided you host in Germany or the EU and document isolation. For sensitive contracts, a C5-attested or sovereign cloud provider can add 20 to 40 % to infrastructure cost.
Can we migrate gradually without a full rewrite?
Yes, and it is recommended: a 5 customer pilot in month 4, then waves of 25 to 30 customers. Each wave needs a rollback tested in under 2 hours.
How do we price customers who want a dedicated database?
As a premium option, usually 150 to 400 EUR a month depending on volume. The code stays the same thanks to a routing layer able to point to a dedicated database.
Do we need Kubernetes from day one?
Not necessarily. Under 200 customers, a managed PaaS is often enough and reduces operations work, for 300 to 800 EUR a month more than bare VMs.
What is the main technical risk?
Cross-tenant data leaks through a forgotten query. Automated cross-tenant tests and PostgreSQL Row Level Security reduce that risk, for about 5 to 8 days of work.
Let's scope your project. Send us your stack, customer count and hosting constraints, and we will price the target architecture, an indicative budget and the migration plan. Detailed quote within 48 h. WhatsApp +221 77 596 93 33.
Mohamed Bah
Fondateur, Kolonell
Passionate about digital and entrepreneurship in Africa, Mohamed has been helping Sénégalese businesses with their digital transformation since 2020. Founder of Kolonell, he believes every SME deserves a professional and accessible online présence.