Technologies

Project CosmoApps — multi-tenant SaaS, serverless cloud, Azure Cosmos DB

In recent years, various kinds of cloud applications have become increasingly popular, providing joint work with user data located in different geographical locations and provided according to the SaaS model (software as a service). Prerequisites for this is the almost global coverage of the Internet.

Cloud applications are popular, however, they are distinguished by a rather rigid architecture designed for the “average user”. This is not a significant problem for applications intended for use by individuals — they have a fairly simple interface and data structure.

Business applications, on the other hand, often put forward much greater requirements for the implementation of special functions that are specific to the business process of a particular application user organization. However, most cloud architecture applications do not allow significant modification of the functionality in the interests of a particular user-organization.

The second issue is the architecture of the application used and how it performs under high load. As a rule, separate application and database instances are created for each user organization, which allows for more flexible administration of application performance, but requires a lot of administration effort, which negatively affects the cost and, ultimately, the end user.

You can go the other way — save on scale. You don't have to run a different instance of the application for each client. It is enough to run one instance of the application, which will “serve” many clients, thus reducing the cost of computing and allocated memory through depreciation — the distribution of costs to all clients. This approach is called multi-tenancy. One application instance requires one license for the server part, OS, and communication stack, which significantly reduces overall costs. The most difficult task in building multi-tenant applications is their development: you must “slice” one database for many tenants, set up a security system and isolate tenants. Testing also takes more time.

The use of a common application database also significantly complicates modification of the data structure for a specific tenant — one of the solutions is to use a noSQL DBMS (document-oriented) that allows you to store and index documents with arbitrary structure, shifting typing logic to the application level.

CosmoApps — automation of multi-tenant SaaS

So, multi-tenancy has significant economic advantages, but it also raises many technical issues, the solution of which requires highly qualified specialists with rare skills in noSQL databases and cloud systems. Administration of a system that serves many tenants and their users is also not a trivial task.

Fortunately, cloud solutions in the field of noSQL databases with unlimited scalability of performance and storage (Microsoft, Google and Amazon are the most advanced), as well as serverless technologies such as Azure Functions, allow you to build inexpensive, low-admin, but flexible and scalable applications.

However, due to the novelty of these technologies, there are practically no developed tools for automating and accelerating application development, and very few qualified specialists. CosmoApps is one of the first systems for highly automated development and hosting of serverless cloud applications using document cloud databases. Deployed on Microsoft Azure, CosmoApps allows near-unlimited scaling of multi-tenant applications and databases, while maximizing use of shared resources and reducing operating costs by several times, if not orders of magnitude.

Applications are developed in a No-Code / Low-Code constructor that supports MVC architecture and creates both the data structure and automatically generates a customizable UI with lists, forms, lookups, navigation, and a full security system (users, roles, permissions). If needed, developers can extend functionality by writing code, enabling creation of complex business apps. Low-Code lets business analysts or key employees build applications themselves, drastically shortening the path from idea to launch.

Benefits from Low-Code development

The entire interface is generated in adaptive markup, which works on any device. It is also possible to create cross-platform mobile applications using PhoneGap. JavaScript can be used on both client and server to share logic and APIs.