我和我的朋友正在开始一个相对雄心勃勃的长期项目,我们需要一些帮助来决定哪些技术最适合我们的需求。我们将非常感谢有关哪些技术最适合我们的项目的任何建议或意见。以下是有关该项目的一些信息。
该项目将作为一个 Web 应用程序开始,但将来应该可以从 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 DB,而对于将在服务器上运行的后端代码,我们目前使用的是 Python。
我们一直在研究使用 ORM,但我们看到了不同的意见,并且已经读到它们可能会减慢速度,当我们有很多用户正在打电话时,我们希望再次避免这种情况。在未来,我们相信我们会想要执行一些原始 SQL。如果使用 ORM,这会是一个问题吗?这会使事情复杂到什么程度?
我们计划为数据库连接使用连接池,但这也是我们俩都没有经验的东西。我们知道 python 中内置了一些包来帮助处理这样的池,但是有什么理由我们应该在这里尝试实现我们自己的吗?
如果有人对这些技术是否适合我们的需求有任何建议,或者如果有人对更好的技术有任何建议,我们将不胜感激。