Shared application services; the future of cloud based applications.
So here is a very short overview of something we designed and implemented at mition and now after 18 months we look back to see that the end result was a big success.
One of the primary objectives was to build an extremely cost effective and highly scalable application base. It needs to be able to manage millions of users at the same time, while making it extremely inexpensive for each organisation.
To achieve this, I designed a shared application services API layer that ALL organisations share, this has inbuilt redundancy and can scale up (.net core app services) and down as required automatically as the load increases and decreases.
While organisation gets their own SQL database, the shared app services and the React app are completely generic (the app changes its look / feel / content based on what the organisation change it to in the SQL database).
The key architecture piece required to achieve this is that the shared services needed to identify which SQL database to connect to, in the end this was relatively simple and easy to implement: Url based routing. Any .net service request coming in connects to the SQL database and passes the URL it was requested from, the database object uses the Url to connect to the right database.
What this then provides is a really simple middle services layer that we can continue to add and improve, a shared react layer that we can add and improve to and each customer gets their own dedicated Azure SQL database that isolates their important data from the rest of the community, but also the API can be accessed to add your own application. We ensured that the API was completely transparent so anyone can extend the service.
Part of the reason we built mition from scratch was to remove any expensive 3rd party licencing costs and the other reason was to gain game changing economies of scale when it comes to utilising cloud technology for the masses. So the overall result was a big success, we now have a foundation that is very easy to roll out changes (maintenance and new features).
This is one of the reasons we can provide an enterprise grade CMS/CRM membership system for the same price most organisations pay for a single development server (per month), which 5 years ago was just impossible to even contemplate.