云计算的最佳实践

时间:2009-07-13 00:56:38

标签: design-patterns cloud

任何人都知道在云中实施应用程序时要遵循的最佳做法吗?

我想构建一个与云无关的应用程序。因此,DAC应该能够通过更改配置来对抗S3 / AppEngine / Azure。是否存在任何框架或最佳模式,以便代码独立于云提供商。

编辑:我想了解如何抽象DAC /会话管理等各种组件,以便将来(当云提供商开始支持其他语言时),我们将能够从一个供应商转移到另一个供应商。据我所知,我们需要使用AppEngine的模型而不是Django模型和App引擎的形式而不是Django。这些往往会与提供商锁定到应用程序。有什么方法可以避免这样做吗?

3 个答案:

答案 0 :(得分:0)

在我看来,不同产品之间没有太多的共性。 (例如,你提到的3个......)

  • S3更像是机器图像类型 解决方案,想想中的ESX服务器 云,所以你的应用程序刚刚部署 到机器图像的实例, Linux或Windows。
  • AppEngine是一个 托管应用程序环境 Python或Java应用程序(Java支持 刚刚补充)
  • Azure(计算)更类似 一个托管的ASP.NET Web应用程序与 一堆额外的服务 (消息,blob存储等)

因此虽然存在某些共性,但我认为大多数这些产品之间的应用迁移并不是那么直接。但是,我也认为这是不可能的。

编辑:其实我撒谎,S3不是机器图像解决方案,我用 EC2 来混淆。 S3是 datastorage 解决方案,与托管应用程序无关。 (除了可能是托管应用程序的存储解决方案)。

答案 1 :(得分:0)

AppEngine实现J2EE容器规范以及JDO和JPA以进行数据访问。因此,如果您使用Java,您可以非常轻松地将J2EE应用程序移入或移出AppEngine。使用EC2,您必须自己管理服务器,这意味着您将安装和配置自己的J2EE服务器,如JBoss。您还必须处理群集和扩展。 AppEngine为您完成所有这些。 Azure严格用于.NET。

答案 2 :(得分:0)

目前,我认为您只需配置更改即可在这3个云之间移动应用程序的目标是不可行的。您可能很难编写可以在appengine(python或java)上运行的高效代码,也可以在ASP.net上运行。 (除非有人让django在azure上运行,这将是非常棒的)

你可能有机会让一个代码库在3个中的2个上工作 - appengine和EC2,或Azure和EC2。在所有3个中,亚马逊的EC2是最低级别的服务,因此最灵活(它还需要更多的管理来运行)。您可以运行带有asp.net和Sql服务器的Windows框来匹配您的天蓝色环境,或者您可以运行Java堆栈来近似您的appengine环境。