Building scalable multi-tenant applications in Go
Prepared for and presented at GopherCon Israel 2025.
Introduction
In this post, we will explore different strategies for building scalable multi-tenant applications in Go based on our experience building the backend for Atlas Cloud, which is part of our commercial offering.
But first, let's clarify what we mean by multi-tenant applications.
Multi-tenancy is a property of a system where a single instance serves multiple customers (tenants).
As a commercial enterprise, your goal is, of course, to have lots of customers! But while you want to serve many customers, they expect a smooth and seamless experience, as if they were the only ones using your service.
Two important promises you implicitly make to your customers are:
- Data Isolation: Each tenant's data is isolated and secure, ensuring that one tenant cannot access another's data.
- Performance: The application should perform well regardless of the number of tenants, ensuring that one tenant's usage does not degrade the experience for others.
Let's explore some ways in which we might fulfill these promises.