![选择基础设施时要问的问题](https://linux22.com/image/624731/%E9%80%89%E6%8B%A9%E5%9F%BA%E7%A1%80%E8%AE%BE%E6%96%BD%E6%97%B6%E8%A6%81%E9%97%AE%E7%9A%84%E9%97%AE%E9%A2%98.png)
我的公司需要一个后端来启动其服务,我负责选择基础设施。产品将由多个应用程序(移动、网络、桌面)和一个通用后端(我猜是一个巨大的 API)组成。
基本上,我们需要像 VM(或多个 VM?或专用服务器?)这样的东西,我们可以在其中运行任何我们想要的东西(Python、Ruby、Node.js、PosgreSQL、MySQL、PosgreSQL、redis 等)。
为了准确了解我们的需求,应该问哪些问题(对我和我的同事)?我不想一年后才意识到我们忘记考虑一些重要的事情(或者至少我更希望意识到我们忘记了 1 个,而不是 10 个)。
我知道这个问题可能会导致主观的回答,但我猜答案总是有点偏见的。
答案1
如果您需要多个客户端(Web、桌面应用程序、移动应用程序等),则需要决定这些客户端如何与后端进行通信。您可以使用 REST,这会强制一组架构选择;您可以使用(例如)CORBA,这自然会强制一些决策,等等,等等,等等。
解决这些问题后,您可以决定是只在其他人的硬件上使用虚拟机,还是在您自己的专用硬件上使用虚拟机,或者在“裸机”上运行计算机(即,没有中间的虚拟机管理程序层)。或者可能只是运行使用 HTTP 进行通信的应用程序(例如,在 Google AppEngine 上)。
这里的驱动因素是:
- 成本,包括资本支出和持续运行成本。
- 需要努力维持一切运转
- 可扩展性(在别人的硬件上启动新的虚拟机相对较快,如果是自己的硬件,则闲置机器可能会花费更长的时间或花费更多成本)。
- 维持服务器群正常运行的现有技能
- 获得上述技能的成本
然而,我无法告诉你正确答案是什么,我只能说“这取决于”。