Isolation is the whole design problem. Shared-database multi-tenancy stores every tenant in the same tables with a tenant identifier on each row, which is efficient but means a single missing filter in a query leaks one customer's data to another. Schema- or database-per-tenant gives stronger isolation at higher operational cost.
Whichever model is chosen, isolation must be enforced structurally rather than by developer discipline — row-level security in the database, or a data-access layer that makes an unscoped query impossible to write. Relying on every developer remembering the tenant filter on every query is not a security model, and the failure is silent until a customer reports seeing someone else's data.
Codazz builds this in production — Multi-Tenant Architecture.