Web 2.0 real world scalability

Does anyone have any real world knowledge of how scalable Web 2.0 apps are?

Does it make a difference whether you run a single instance of the app on a server or multiple instances (on a server with a multi core cpu)?

The use case is several hundred users with a simple database, one list box per view. Record count would be in the hundreds not thousands.

I’ve used a Web 2 app to serve 80 simultaneous users, and it worked fine - CPU usage rarely got over 50%, on a 2012 mac mini / core i7. This app was fairly simple - giving multiple choice tests, allowing file uploads, etc.

There are some known issues with listbox performance, so it’s hard to say. I think from my experience, the answer is “maybe”.

Every instance you run is going to support X number of users. The problem is that nobody knows what X is. A simple app might support 50-100 users but a complicated app might start slowing down at 10-20 simultaneous users. Once you figure out X, then you can scale it by running multiple instances on a multi-core server. If you have several hundred, I would start with 2 instances and see how it goes. It might work fine or you might have to add more instances to get good performance.

If you expect to have several hundreds simultaneous user, then this is the egde where Xojo stops being the right tool for your usecase.

We’ve done some test and one very simple app can handle about 100 user at a time without to much pain. Because a Xojo app runs on a single core, your CPU doesn’t matter so much.
We solved this issue by spawning multiple app instances. But to achieve a solid and reliable structure like this, you need experience and time.

Time you could spend developing this specific app in another language probably.

There’s an app for that! I’ve made a tool called Lifeboat that not only makes deploying a web app to a linux server super easy, it can set up load balancing across multiple instances :slight_smile:

</plug>

7 Likes

Thanks all for your input. Good to know others have apps working around the 50-100 simultaneous user count. I’ll start looking at Web 2.0 in greater depth as so far my experience of Xojo Web in production has been Web 1.0.

@Tim_Parnell - great plug of Lifeboat! I’ll be sure to look at it once the app is ready.

  1. Yes, nice tool makes it a little bit more easy. Would be nice if the config was stored on the server actually so you can switch platforms (from where it’s deployed).
  2. Alternative is using Xojo Cloud (if there is no matching server type just ask xojo for a special purpose one).
  3. Or use the Digital Ocean load balancer with mutltiple droplets to it.

Other options are there as well.

If you have multiple computers you can use the Super Simple Sync feature in conjunction with your favorite cloud sync folder (Dropbox, OneDrive) to ensure your configurations are available across devices.

I don’t want to derail this thread, so if you need any help or have questions please feel free to reach out to me directly for one on one support.

1 Like

Plug for TIm. We use Lifeboat. Its good stuff.

5 Likes

Seconded

1 Like

Looks like 2021r3 is NOT scalable :-1:t2: Web disconnections with 2021r3 - #28 by Mike_D

Thanks @Ivan_Tellez I’ve been following that thread too. I’m thinking I’d be better using my 2018r3 license to make a Web 1.0 app right now rather than buying a new Web license for Web 2.0

@Adam_Charlton

I would no longer start a new project on 1.0.

From my experience, Web 2.0 is a big step up from 1.0. We had an application on 1.0 that we have since completely migrated to 2.0. Of course, a lot has changed and perhaps there is a little more work involved in one place or another. But Web 2.0 also offers many more possibilities, active development and, in our experience, noticeably better performance (especially with 2021 R3).

The current problems with R3 are now known at Xojo and I assume that they are actively working on a solution.

Translated with www.DeepL.com/Translator (free version)

I have applications built with 2019 R3.1. Unless I have a compelling reason to make significant changes, they will remain Web 1.0 on 2019 R3.1.

I am doing new developments on Web 2.0. Early releases were not really usable, but more recent versions are much much improved. I was generally favorably impressed with 2021 R3. And I expect (it is always dangerous to make such assumptions, but here it goes…) that the disconnection issue will be fixed in a point release soon.

Good to see the flip side of most of the comments about issues with Web 2.0 .
Does your app use a lot of listboxes? My next app for web uses listboxes extensively.

How much is a lot ? Many on one page ? Many on several pages ?

My app uses a lot of controls (also many … around 30 Listboxes several tabs and pages / dialogs). The performance improvement with R3 is great. (in my view … faster than 1.0)

Sorry I should have been clearer with many. Most of the screens will be two listboxes.
I’ll give it a go.

The short answer here is yes.

I use listboxes for display purposes, and GraffitiSuite webgrids where I want easy data editing. I use webcontainers, often several on a page. Now, in most cases, the listboxes are limited in function. I use an underlying class or array, where most operations (database queries, updates, etc.) are done.

1 Like