Name: | Description: | Size: | Format: | |
---|---|---|---|---|
2.21 MB | Adobe PDF |
Authors
Abstract(s)
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.
Description
Keywords
Multi-tenancy SaaS Server Backend Multi-database Multi-clien Isolated databases Isolated data stores