我是一家小公司新近聘用的初级软件工程师,该公司开发并向特定业务领域的中小型企业客户销售普通的客户端/服务器 MVC 应用程序。(我不愿透露具体细节。)传统上,该平台是作为物理服务器出售的,但最近管理层决定,我们应该尝试将我们的平台作为云应用程序出售,由我们内部处理托管。我认为这是个好主意。我们通常会负责管理我们销售的服务器,这只会让我们更精细、更轻松地进行批处理控制。整合硬件也可能使我们大大降低产品成本。
关于在云环境中实施我们平台的最佳方法存在一些争议。我们销售的物理服务器通常被划分为几个单独的操作系统实例,每个实例处理 MVC 应用所涉及的单独问题。已经提出了两种云实施方案:
- 有人建议我们以与物理服务器相同的方式划分整个云服务器,并将许多客户端的 MVC 应用程序拆分为几个操作系统实例(例如,客户端 A 和客户端 B 在处理模型的操作系统实例上各自拥有一个单独的数据库,客户端 A 和客户端 B 在处理控制器的操作系统实例上各自拥有一个单独的 API,等等)。可以感知到的好处包括显著降低硬件要求,以及能够完全向客户端隐藏平台硬件(包括专用系统资源)的管理。
- 其他人建议将每个客户的平台都划分为云服务器的一个明确且独立的部分。然后,客户的部分可能会像我们的物理服务器一样被划分为几个操作系统实例,但在此实现中,这并不是严格执行的。可以感知到的好处包括为客户的 MVC 应用程序提供更安全的环境(例如,如果每个客户都有一个具有明确硬件限制的单独服务器,那么客户做出意想不到的事情来影响其他客户应用程序的稳定性和/或性能将变得更加困难)。
我认为第二种选择是更为明智的途径,更接近传统的“基于云”的方法。我还担心第一种选择的性能优势可能被夸大了。支持者认为,更少的操作系统实例将需要更少的内存(这一点我并不反对),并且专用于不同问题的服务器可以针对其特定任务进行调整(我认为这部分被夸大了,尤其是当每个操作系统实例都将处理n是我们习惯使用的资源的倍数)。在我看来,减少所有这些操作系统实例的内存占用的更合理的方法是在单个操作系统实例中运行每个客户端的整个 MVC 应用程序。但是,我的经验很少,希望这里有人能就此事提供一些建议。
如果我的问题太模糊或者超出了交流范围,我提前表示歉意,并提前感谢任何回复。
答案1
您的问题有点宽泛,但是......
传统上,该平台作为物理服务器出售,但最近管理层决定,我们应该尝试将我们的平台作为云应用程序出售,并在内部处理托管。
我对“内部托管”一词有点担心。如果你指的是数据中心的托管或租用服务器,那是一回事,但如果你的意思是“我们想买一堆便宜的服务器,然后把它们放在我们办公室的壁橱里”,那么我建议不要这么做。对于小公司来说,对你的用户来说完全可以接受的基础设施可能不适合你的用户。
至于您提到的两种云实现模式,我认为这取决于您的应用。我认为我没有足够的信息来做出明智的回应。