Phoenix app for high-concurrency limited-capacity course booking use case?

I have a legacy system for managing courses at the university. Every half year, this happens:

  • limited capacity course (30 people) opens
  • 1000 people trying to enroll in that course at the same time (literally waiting at computers to hit the “enroll” button at 8:00am sharp)
  • dozens/hundreds of courses like that, thousands/tens of thousands of people in the system fighting for free slots literally at the same time
  • system (php based) goes down…

I’d have the following questions:

  • could phoenix significantly improve performance and reliability here?
  • would I enjoy significant improvement “out of the box” even without employing any advanced techniques like ETS, etc.?
  • is this mostly the webserver issue, or is postgres also a potential bottleneck?
  • is it possible to roughly guesstimate some numbers? how much traffic I might be able to handle at what cost?

Thank you very much for any suggestions and advice!

1 Like

Hello!

Elixir is great at handling high load, but if you have an existing system and know exactly when the load is going to happen is there a reason not to avoid the re-work and instead scale up the existing PHP application before the event happens? I would dramatically increase the size of the database instance and horizonally scale the PHP application the day before and scale them back down the day after.

This will cost a little money but it’ll save huge amounts of developer time compared to a rewrite, and develoer time is far more expensive than servers.

4 Likes

Thank you. I really appreciate the honesty of saying elixir would be great, but I can still save the day with current technology. Fair answer! Even though massive scaling would be required, it’s still just 2 days every year, and thus probably cheaper even in medium- to long-term :+1:

5 Likes

To me it sounds as if the business process should be re-engineered rather than the code :slight_smile:

2 Likes

that for sure :slight_smile: but I’m trying to find realistic solutions :smiley:

1 Like