headless go framework for saas(multi-tenancy). go-saas
targets to provide saas solution for go
this project suits for simple (web) project, which is also called monolithic.
if you are finding microservice solution, please refer to go-saas-kit
-
Different database architecture
- Single-tenancy: Each database stores data from only one tenant.
- Multi-tenancy: Each database stores data from multiple separate tenants (with mechanisms to protect data privacy).
-
Hybrid tenancy models are also available.
-
Implement your own resolver to achieve style like sharding
-
Support multiple web framework
-
Supported orm, which means all underlying database
-
Customizable tenant resolver
- Query String
- Form parameters
- Header
- Cookie
- Domain format
-
Integration with gateway
go get github.com/goxiaoy/go-saas
graph TD
A(InComming Request) -->|cookie,domain,form,header,query...|B(TenantResolver)
B --> C(Tenant Context) --> D(ConnectionString Resolver)
D --> E(Tenant 1) --> J(Data Filter) --> H(Shared Database)
D --> F(Tenant 2) --> J
D --> G(Tenant 3) --> I(Tenant 3 Database)
- example-gorm combination of
go-saas
,gin
,gorm(sqlite)
- example-ent combination of
go-saas
,gin
,ent(sqlite)
- go-saas-kit Microservice architecture starter kit for golang sass project
Refer to wiki
https://docs.microsoft.com/en-us/azure/azure-sql/database/saas-tenancy-app-design-patterns