Upgrade to Pro — share decks privately, control downloads, hide ads and more …

wecode-multi-tenant-application-presentation.pdf

Imo Inyang
May 08, 2017
26

 wecode-multi-tenant-application-presentation.pdf

Imo Inyang

May 08, 2017
Tweet

Transcript

  1. An application, intended for multiple client businesses, that's installed on

    a single instance/pool and serves all clients from that instance. (Thus the single instance serves multiple tenants.) What is a Multi-Tenant App?
  2. The design pattern that a multi-tenant application developer chooses typically

    is based on a consideration of the following factors: Multi Tenant application design Concerns
  3. Tenant Identity and isolation. • You needs to ensure that

    no tenant has access to other tenants’ data. • Providing protection from noisy neighbors, • Being able to restore a tenant’s data with ease • Implementing tenant-specific customizations.
  4. Cloud resource cost. An SaaS application needs to be cost-

    competitive. Thus developer might choose to optimize for lower cost in the use of cloud resources, such as storage and compute costs.
  5. DevOps is a Cake. A multitenant application developer needs to

    incorporate isolation protection, maintain, update and upgrade, and monitor the health of their application and database schema, and troubleshoot tenant issues.
  6. Scalability. The ability to incrementally add more tenants and capacity

    for tenants who require it is imperative to a successful SaaS operation.
  7. Database-per-tenant. Each tenant has its own database. All tenant-specific data

    is confined to the tenant’s database and isolated from other tenants and their data. Shared database - Sharded. Multiple tenants share one of multiple databases. A distinct set of tenants is assigned to each database by using a partitioning strategy such as hash, range, or list partitioning. This data distribution strategy often is referred to as Sharding. Shared database-single. A single, sometimes large, database contains data for all tenants, which are disambiguated in a tenant ID column.
  8. Isolation. The degree of isolation between tenants can be a

    measure of how much tenant isolation a data model achieves. Cloud resource cost. The amount of resource sharing between tenants can optimize cloud resource cost. A resource can be defined as the compute and storage cost. DevOps cost. The ease of application development, deployment, and manageability reduces overall SaaS operation cost. Design Concerns
  9. Ownership of tenant data. An application in which tenants retain

    ownership of their own data favors the pattern of a single database per tenant. Scale. An application that targets hundreds of thousands or millions of tenants favors database sharing approaches such as sharding. Isolation requirements still can pose challenges.
  10. Business model. If an application’s per- tenant revenue if small

    (less than a dollar), isolation requirements become less critical and a shared database makes sense. If per- tenant revenue is a few dollars or more, a database-per-tenant model is more feasible. It might help reduce development costs.
  11. Identifying Tenants You should try to identify tenant early in

    your application request cycle. • Ensure Tenant exist • Load Tenant Configs • etc
  12. The • Thanks for your time – hope it was

    worth it? • If you think I can help, reach me via [email protected] or @imo_inyang on twitter End