我正在尝试设计一个可在云上运行的应用程序。该应用程序将通过API提供服务。我希望它与提供商无关,即在不更改我的应用程序的情况下在任何云提供商上工作。
应用程序将创建/管理虚拟机实例并执行一些计算(在IaaS级别上),这通常通过提供程序的特定API完成。但作为一项功能,我希望应用程序可以移植到不同的云提供商,而无需考虑实现。
我如何设计这样的抽象? 我想为每个提供商创建适配器,但我怀疑这是最好的方法。
P.S。:我发现了一些像jCloud这样的多云库,这些库提供了一些适用于多个提供商的功能。
答案 0 :(得分:2)
JClould肯定会帮助您独立设计应用程序,例如,您计划使用的文件系统。您可以使用其他提供程序而无需在应用程序端进行大量修改,而无需使用Amazon S3存储应用程序数据。也许只是您的凭证和您将要使用的新服务。
但是,因为您打算使用云。我认为在您的应用程序设计中使用一些Cloud Patterns也很重要。例如:
您可以在这些slides上了解有关云模式的一些信息。我希望它能帮助您更好地理解应用程序的设计方式。