Capitex Business Loan can run multiple tenants in the same webbapplication instance/context using a customer key to distinguish the customer configuration from each other.
Running Capitex Business Loan Multi-tenant using 1 Application Server and 1 Database server.
The configuration handling in Capitex Business Loan makes it possible to run multi tenats in the same application process. For now Capitex Business Loan cannot be configured to share the same database among the customers, the data in the tables do not contain any customer key yet. However, due to the plugin architecture of the data storage in the application and the simple database model it's easy to add that capability to Capitex Business Loan.
We suggest that you separate the databases inside the database server so it's more isolated. It's for example much easier to use standard tools to handle backup, restore backup and move data per customer basis. You don't want customer A to be affected when customer B want to restore data.
We do not recommend running multiple customers in the same Webb application either. If you want to restart the application after same major configuration change for Customer A, you don't want Customer B's instance to be restarted at the same time. If you separate the customers to different web applications the setup of configurations is much simplier.
This is how we run our older software before when memory was really expensive.
Share web application pros and cons
Pros
Cons
It uses less memory
If you manage deploys totally manually you will save some time when new versions are deployed and when you add new customers.
Deploy of new versions and manage of new customers is scalable
Easy to see the load/traffic for all customers
If there is a high hosting cost per web application in your environment it will be more cost effective to share web application. The most common is that the cost is almost independet of number of applications and instead depends on the number of application servers and disk/memory/cpu usage.
You need to change shared resources/files when you add or remove a customer. That could affect other customers.
It's harder to move just one customer to a specific version of Capitex Business Loan.
There is a teoretical risk of data leakage between customers.
Not scalable number of customers (add more cpu and memory is the suggested way to scale this setup)
Harder to load balance
You can't easily see the load/traffic for one specific customer.
You can't throttle resources per customer basis.
If you get some problem it's hard to see if it's a specific customer that is behind the problem to identify which one
Share database (same tables) pros and cons
(This feature is not developed but can be added)
Pros
Cons
You don't have to create and setup a database when you get a new customer
You can easier do aggregated data analysis of the cases for multiple customers.
Might consume less memory and diskspace
You don't have to manage a different connection configuration for each customer.
If there is a high hosting cost per database in the database server in your environment it will be more cost effective to share database. The most common is that the cost is almost independet of number of databases and instead depends on the number of database servers and disk/memory/cpu usage.
Much more difficult to batch remove data when a customer no longer should have the application
Much harder to restore data for just one customer
It's much harder to calculate usage on a customer basis
There is larger theoretical risk of data leakage between customers.
It's a bit slower
Running Capitex Business Loan Multi-tenant using multiple web application instances
This is how we do it right now at Vitec. Increased memory usage but better isolation between customers. Due to our own expert knowledge around this setup this is for now the recommended setup.
Share webbapplication pros and cons
Pros
Cons
It uses less memory than Kubernetes/Swarm if you have few customers
Manually scalable. You can move one customer from one server to another. You don't have to automatically scale or use a load balancer if you have a lot of customers. Just put half of the customers on one server and the rest on another.
More scalable than single instance, because you don't share some of the limitations that exists in the application server per instance/website basis.
Easy to configure. You configure the application in the same way as if you only had one customer.
The first customer is fast to setup compared to shared installation or docker.
Isolated. You can change/update/restart one customer without affecting other customers.
Easy to completely remove one customer.
Easy to install manually without tools.
Easy to understand.
You can throttle resources per customer basis.
You can see resource usage per customer.
If one customer creates a problem you can easily see which one.
All files etc for one customer are isolated in one place not mixed with other customers.
Manually deploy of new versions and manage of new customers is not scalable (you can use some deploy tool or script it if you are not running IIS with HTTPS)
Uses more memory than Kubernetes/swarm if you have a lot of customers.
Uses more memory than one single instance.
Hard to script for some servers (like IIS).
Not scalable as Kubernetes/Swarm (you have to use a traditionall load balancer or move customers manually).
Running Capitex Business Loan Multi-tenant using Docker (Swarm, Kubernetes or similar).
This is our goal setup in the future at Vitec.
Running in docker pros and cons
Pros
Cons
Pros
Cons
Scalable, automatic load balance
Better failover
You can handle different versions of Capitex Business Loan to different Customers
One customer is isolated
Easier to script
Faster and more stable deploys/updates in the long run
If you make some error in the configuration for one customer other customers will not be affected.
You can restart/deploy customer totally independent from each other
You can run on more servers but much smaller servers.
Makes more effective use of resources if you have other applications in your "in-house cloud"
Easier to remove a customer and all trace of the customers configurations etc.
Easier to to add a new customer once you have it up and running.
All files etc for one customer isolated in one place not mixed with other customers.
The configuration of Capitex Business Loan inside the contrainer is much simplier and more straight forward. You configure the application itself in the same way as if you only had one customer.
Deploy of new versions and manage of new customers is scalable
You can throttle resources per customer basis.
You can see resource usage per customer.
If one customer creates a problem you can easily see which one.
Takes more time to setup initially
Hard to deploy manually
You need knowledge in new technologies.
More overhead in resources if you have few customers and if you don't run other applications in your "in-house cloud"