Spring Boot Webflux MongoDB multi-tenancy implementation
In this story, we are going to implement multi-tenancy using Spring Boot WebFlux and MongoDB.
Multitenancy applications allow multiple customers or tenants to use a single resource without seeing each other’s data. This is highly common in SaaS solutions. There are three main approaches to isolating information in these multitenant systems (Separate database, Separate schema, Partitioned (Discriminator) Data).
Each solution approach has its pros and cons. It is recommended to implement an approach according to your use cases.
Get Started
In this story, we will implement the approach with a separate database. So each tenant’s data is kept in a physically separate database instance.
Prerequisites
- Spring Boot 2.4
- Maven 3.6.+
- JAVA 17
- Mongo 4.4
We will start by creating a simple Spring Boot project from start.spring.io, with the following dependencies: Spring Reactive Web, Spring Data Reactive MongoDB, and Lombok.