/go-saas

go framework for saas(multi-tenancy)

Primary LanguageGoMIT LicenseMIT

go-saas

English | 中文文档

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

Overview

Feature

  • Different database architecture

    • Single-tenancy: Each database stores data from only one tenant.

    img.png

    • Multi-tenancy: Each database stores data from multiple separate tenants (with mechanisms to protect data privacy).

    img.png

    • 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

Install

go get github.com/goxiaoy/go-saas

Design

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)
Loading

Sample Project

  • 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

Documentation

Refer to wiki

References

https://docs.microsoft.com/en-us/azure/azure-sql/database/saas-tenancy-app-design-patterns