Hi all,
A few years ago we have carried out a number of tests to establish what would be the best deployment option for our cloud app. Our business model deploys a new database for each user/company. The entire process is automated from a sales BSV integration with our website where the user picks the plan they wish to sign up for , pay online with a AwareIM / Braintree integration and once successful their BSV is deployed on the closest server to their location.
Originally we tried to push one server ( QuadCore 3.5Gz, 16GB Ram SSD ) to its limits and the best we could achieve was 100 BSV's running on a single server instance before issues appeared. However I need to stress that this was done when Jboss was the channel of communication and as you all remember there were serious stability issues with it. The main issue we had at that time was the Jboss database was growing exponentially and fast leading to a crash about once a month and there was no mechanism that we found that could prevent that. Also note that in average we have 10 users per BSV and no more than 100 logged in at one point in time.
So because of if and after monitoring closely the activity on the server we've concluded that for us the safest and best performance arrangement was to allocate around 100MB of RAM on a SSD server per BSV. These days we build a server to about 50 BSV's and then the install script flags that server full and deploys a new instance.
Not sure if any of this info will assist any of you , personally if our app will increase in popularity we intend to investigate running proper scaled up instance based on the model presented by Vladimir at the conference in Bali. Also in my opinion the biggest failure that we have as developers in AwareIM when it comes to an efficient deployment is to not focus enough on optimizing our rules and processes.