Software development pattern where a single instance of an application serves multiple clients (tenants — typically customer businesses) while creating the illusion for each customer that they are the sole user. Motivations: quick tenant setup, scalable maintenance, and better utilization of infrastructure cost. Pivotal concern: partitioning data so it is leak-proof, especially for enterprise clients. Three main levels of data separation: row-level, schema-level and database-level partitioning.