My friend and I are starting a relatively ambitious long term project and we require some assistance deciding which technologies would be best suited for our needs. We would be very grateful for any advice or opinions on which technologies would be best suited for our project. Below is some information regarding the project.
This project will begin as a web app, but in the future should be fully accessible from iOS and Android Applications.
At the absolute highest level, here is what our application will be doing/what it must be able to handle with grace:
1. Make and receive many phone calls throughout the day
1. We will be using Twilio’s APIs for these calls
2. On average, we anticipate needing to handle ~25-100 concurrent phone calls at all times
1. We also need to handle intermittent, and much less frequent, bursts of hundreds of concurrent phone calls, possibly even thousands.
3. The large, large majority of these phone calls will require at least 1, but typically more, database queries. (we intend to use a relational database on the backend)
1. So, while we aren’t too worried about kicking off a ton of concurrent phone calls, we are very worried about the person on the other end being held up due to these DB connections/queries getting backed up. Data being queried is mission critical, and must be available nearly instantly.
2. Automatically update all relevant pages of the web app’s UI every time a phone call leads to changing or adding a row somewhere in the DB
3. Automatically update all relevant pages of the web app’s UI every time a user makes a change through the web app rather than through the phone.
Essentially, we have a large-ish application that will be initiating and receiving phone calls, using many DB connections and performing a lot of queries, etc, but will require very little CPU. Most of the data being passed around will require very few operations to be performed on it before being entered into the DB.
For some prototyping we’ve been using a free-tier server from AWS, a free-tier MySQL DB from AWS, and for backend code that will be running on the server, we are currently using Python.
We’ve been looking into ORMs to use, but we’ve been seeing mixed opinions and have read that they may potentially slow things down, which again we want to avoid when we have many users sitting on phone calls. Down the road, we believe we’re going to want to execute some raw SQL. Would this be an issue if using an ORM? How much would this complicate things?
We plan to use a connection pool for the database connections, but this is also something neither of us has any experience with. We understand there are packages built into python to help handle such pools, but is there any reason we should be trying to implement our own here?
If anyone has any suggestions as to whether these technologies would be suited for our needs, or if anyone has a suggestion of a better technology we would be very grateful.