如何设计应用程序以在不同的云提供商上运行?

时间:2014-01-08 17:12:05

标签: architecture interop cloud

我正在尝试设计一个可在云上运行的应用程序。该应用程序将通过API提供服务。我希望它与提供商无关,即在不更改我的应用程序的情况下在任何云提供商上工作。

应用程序将创建/管理虚拟机实例并执行一些计算(在IaaS级别上),这通常通过提供程序的特定API完成。但作为一项功能,我希望应用程序可以移植到不同的云提供商,而无需考虑实现。

我如何设计这样的抽象? 我想为每个提供商创建适配器,但我怀疑这是最好的方法。

P.S。:我发现了一些像jCloud这样的多云库,这些库提供了一些适用于多个提供商的功能。

1 个答案:

答案 0 :(得分:2)

JClould肯定会帮助您独立设计应用程序,例如,您计划使用的文件系统。您可以使用其他提供程序而无需在应用程序端进行大量修改,而无需使用Amazon S3存储应用程序数据。也许只是您的凭证和您将要使用的新服务。

但是,因为您打算使用云。我认为在您的应用程序设计中使用一些Cloud Patterns也很重要。例如:

  • 文件系统对于云上的多租户应用程序(非持久性文件系统)来说是一种传统。
  • 单身
  • 延迟

您可以在这些slides上了解有关云模式的一些信息。我希望它能帮助您更好地理解应用程序的设计方式。