Part 1: Understanding Innomatic
What is Innomatic?
Innomatic is a multi-tenant application system for building cloud ready SaaS platforms and enterprise applications.
With multi tenancy you share the same code base to multiple organizations of users (tenants), each one with their own set of data.
With a multi tenant platform like Innomatic you don’t have to deploy and maintain multiple, separated versions of code for each organization.
What is an application in Innomatic?
An Innomatic application is an set of functionalities deployed inside the Innomatic container.
Such applications are not a stand alone set of files that you can run directly; you must deploy them inside the Innomatic container, thus extending the platform.
Applications can be simple as a class of code or complex as a full stack of database tables, models, user interface panels, web services, etc.
Innomatic applications may define dependencies with other applications and multiple applications can be combined together to provide complete solutions at different degrees and various options.
Applications can be enabled to multiple tenants without the need to duplicate code (=code multi tenancy).
What is a tenant in Innomatic?
A Tenant is a virtual set of applications that are enabled to a particular organizational entity (that may be your own company, a customer, etc.) legally or in another manner conventionally separated by the other entities. Sometimes, tenants are also called called Domains in Innomatic.
Tenants may have different sets of applications enabled.
Tenants have two types of user interfaces:
- A web desktop with a standard GUI for back office applications behind a login (e.g. intranets, enterprise applications, etc.), called “Tenant Desktop” in Innomatic.
- An interface for external web applications (e.g. public web sites, extranets, etc.), called “Web Apps” in Innomatic.
- The Tenant Desktop and the Web App share the same database and can interact (e.g. you may have a CMS inside the Desktop for managing the Web App content).
Examples
Tenant Desktop example: the Dashboard
Tenant Desktop example: a panel
Tenant Web App example: extranet with custom HTML
How is data stored in Innomatic tenants?
The main strategy for separating tenants in Innomatic is multi tenancy at code level and single tenancy at database/data access level (a database for each tenant, plus a centralized root database containing service tables for the whole platform).
This is fully transparent to applications since the database for the current running tenant is available in code as a dependency injection.
When Innomatic is installed in single tenant mode (e.g. for single enterprises use cases), only a database is created (containing both root and tenant tables).
What is the Root in Innomatic?
Innomatic features a centralized system (Root) with its own database and desktop.
The Root is used to manage tenants, applications, platform maintenance and other facilities at platform level.
The following graph shows the relations between the Root, the Innomatic Container, the Tenants, the Applications and the Web Apps: