如何编写跨云平台移植的应用程序?
就像说有一个云平台,我为这个云平台开发一个特定的应用程序。 后来我决定把这个应用程序迁移到另一个平台上。 如果有典型的云平台标准,那么很容易将应用程序跨平台传输。
“云”的定义没有标准,更不用说跨供应商的标准了。 大多数是基于某种虚拟化的,虽然你可以跳过一些环节,比如在Virtualbox上运行VMWare映像(只是一个例子),但是没有办法把它扫过头去。
最好的办法是有一个基于Web服务器的应用程序,然后使其与平台无关。 那么你只需要担心configuration一个新的虚拟机和Web服务器,并从那里迁移你的应用程序。 据我所知(如果我错了,其他人会纠正我)毫无疑问,你不能只是将亚马逊托pipe的系统塞进微软的“云平台”,并期望它能够工作。
现在“云”只是一个用户购买的神奇的营销模式。 “耶云!”
所以这取决于平台。
对于平台即服务 – 云提供你自己的代码 – 通常你可以使用Java,RoR或$ language_du_jour编写,而且许多云提供者可以运行它(比如OpenShift,Heroku,CloudFoundry)
对于基础架构即服务 – 您可以通过使用Chef和Puppet等configurationpipe理工具来确保可移植性 – 在这种情况下,底层虚拟化平台不再是一个问题,操作系统本身就是您的平台,configurationpipe理使得不同提供商之间的移动相对平庸
正如其他人指出的那样,云没有标准的定义,然而amazon web services至less在云的PaaS部分的成功确立了事实上的标准。 就您所关心的AWS API而言 ,希望以可移植的方式编写您的服务,那么您应该考虑使用Boto编写您的软件并使用OpenStack , OpenNebula和/或Eucalyptus来实施您的服务。