Determining server specs prior to production?

Hi all,

I’m planning out some infrastructure to complement a desktop app I’m working on, and I’m struggling to find a way to determine CPU/RAM requirements for my web app.

The desktop app will require login, so I’ll need to build an account/login/password system in Xojo Web with a RESTful API and also a front-end for users to administer their accounts. Probably going to be using SQLite for now.

Right now I have about two dozen beta testers, and from the metrics I collect I can see that the users tend to mostly use the software in clustered times. It’s software for DJs, so usage peaks on Friday and Saturday nights, and I need to be ready for those kinds of activity bursts.

The question is what kind of server resources I’ll need as my user base increases to 1000 users, 10000 users, etc. I’m aware of an app that could be considered a competitor to mine, and they have about 50k users despite my app trouncing theirs in pretty much every way, so it’s not inconceivable that I’d hit that number at some point.

Are there any guidelines to pre-determine what kind of server resources you’ll need per simultaneous user, or do you just have to wait and watch? I’d rather not put my users through growing pains if I can help it.

Thanks in advance for any insight.

It is quite difficult to determine.

If your web app is only acting as a REST api without displaying any webpages, necessary resources per request can be pretty low: 200-1000 kB per request.
And these requests are short-lived, memory will free up quite quickly after each request.

On the other hand creating a WebSession and displaying WebPages uses much more RAM: 1-5 MB per session.
And sessions aren’t short-lived, at least one minute per session.

You could start low and increase both vertically and horizontally with a load balancer.
A load balancer will help you achieve high availability, but using several instances might not be compatible with an SQLite database.

I don’t know where you want to host all this. I recommend DigitalOcean if you don’t have any experience with AWS.
I’m very happy with their services for the past 6 years.

1 Like

Thank you Jeremie.

It sounds like the way to go is to build the core user features as a REST API and have those live on one server, then build a separate website for users to manage their accounts on a different, load-balanced server. That website can simply utilize the same REST API as the desktop app under the hood.