A tenant is one customer account, which might be a single company, a team, or a workspace. In a multi-tenant system, all tenants run on the same application code and usually the same servers and databases. When you log into Slack, Salesforce, or Notion, you are using software that thousands of other companies are using at the exact same moment on the exact same machines. Your data feels private because the system enforces boundaries, not because each company gets its own copy of the app.
The opposite design is single-tenancy, where every customer gets a dedicated, isolated stack. Single-tenancy is simpler to reason about for isolation but expensive: 10,000 customers means 10,000 deployments to patch, monitor, and pay for. Multi-tenancy trades some isolation complexity for huge savings in cost and operational effort, which is why nearly every modern SaaS product is multi-tenant.
The hard part of multi-tenancy is making sure tenant A can never read or write tenant B's data, even when a bug or a crafted request tries to cross the line. Every query, cache key, file path, and background job has to carry a tenant identifier and respect it.