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!

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.

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:

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

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