Multi-level nested multi-tenancy in web software engineering - Feda, Shoaib (2024)
An internship was done at a company that ran a suite of in-house built SaaS applications. Since many of the different applications needed the same features such as authentication, authorization, subscription, database management, etc., a single core macroservice was built to serve all the different applications and their different tenants from a single codebase (application). This greatly reduced time-to-market for new SaaS projects and enabled teams to focus more on business and domain features with an estimated 80% reduction in time spent on maintenance and development of the commonly shared modules. This greatly increased productivity among engineer teams and a subjective survey of 12 engineers of various ages and experience levels indicating high satisfaction levels and increase in productivity. The primary focus was to build a solution that provides data isolation for customers which is why a nested multi-level multitenant, multi-database architecture was used, providing a isolated databases, cache stores, queues and logs for each customer. A no-estimation mindset was used in a hybrid kanban-agile scrum methodology which helped achieve more accurate projections with regards to time to complete projects. Furthermore, asynchronous PHP was explored to boost performance were usable which resulted in 54% increase in number of requests that can be handled given the same resources for some endpoints that can make use of concurrency. The language and framework of choice was PHP Laravel and different ways of achieving multi-tenancy in it was discussed, weighed and some implemented.