我和我的朋友正在开始一个相对雄心勃勃的长期项目,我们需要一些帮助,以确定哪种技术最适合我们的需求。对于任何建议或意见,哪种技术最适合我们的项目,我们将不胜感激。以下是有关该项目的一些信息。
该项目将从网络应用程序开始,但将来应该可以从iOS和Android应用程序完全访问。
在绝对最高的级别上,这是我们的应用程序将要做的事情/它必须能够优雅地处理的事情:
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.
从本质上讲,我们有一个大型应用程序,它将启动和接收电话呼叫,使用许多数据库连接并执行许多查询等,但是将只需要很少的CPU。在传递到数据库中之前,大多数传递的数据将只需要执行很少的操作。
对于某些原型,我们一直在使用AWS的免费服务器,AWS的免费MySQL数据库,以及将在服务器上运行的后端代码,我们目前使用的是Python。
我们一直在研究要使用的ORM,但是我们已经看到意见不一,并且已经读到它们可能会减慢速度,当许多用户都在打电话时,我们又想避免这种情况。在将来,我们相信我们将要执行一些原始SQL。如果使用ORM,这会成为问题吗?这会使事情复杂多少?
我们计划将连接池用于数据库连接,但这也是我们俩都没有的经验。我们了解python中内置了一些软件包来帮助处理此类池,但是我们有什么理由应该尝试在此处实现自己的池?
如果有人对这些技术是否适合我们的需求有任何建议,或者有人对更好的技术提出建议,我们将不胜感激。