因此,我一直在阅读有关Cloud Foundry的文章,但我仍然对它是什么感到困惑。这是我在CF上对PaaS的看法,希望你们能告诉我,如果我错了,可以解释得更好一些。
像Microsoft Azure或Google AppEngine这样的传统PaaS产品提供了一个完整的平台来开发、测试、托管和管理您的web应用程序。但是,您必须使用他们的API,并且仅限于他们提供的服务和他们支持的语言/框架。
Cloud Foundry似乎是某种“中间人”,它允许您的应用程序使用来自许多公共云的服务。它是如何做到这一点的?您使用的是像LibCloud或JCloud这样的单一应用程序接口吗?例如,您是否可以使用来自一个提供商的一个服务,以及来自另一个提供商的另一个服务?Cloud Foundry本身是否提供任何服务,或者它只是一个中间人,允许您轻松地从一个平台迁移到另一个平台,并在单个应用程序中使用来自不同提供商的不同服务组合?
发布于 2013-05-03 12:51:51
我是Cloud Foundry的开发人员--是的,Cloud Foundry确实有点模糊(没有双关语的意思)。希望我能帮助澄清一些事情。
Cloud Foundry是一个platform as a service,但它需要一个infrastructure as a service在它下面。Cloud Foundry通过BOSH工具支持vSphere、vCloud、OpenStack和Amazon AWS作为基础设施。大多数web应用程序开发人员并不关心这些,但对于那些担心大型IT基础设施的人来说,这真的很酷。
假设你是AcmeCorp的IT主管。您有50,000名员工,他们都使用您的内部web服务Fizzbuzz来帮助他们完成自己的工作。要支持所有员工,您需要在多台具有强大处理器和大量内存的机器上运行数十个Fizzbuzz应用程序实例,并且还需要大量的磁盘空间来存储由内部使用的Foo、Bar和Baz应用程序生成的信息。您已经远远超出了在自己的刀片式服务器上管理的范围,因此决定租用一个数据中心。
不幸的是,AcmeCorp功能严重失调。财务部门对您使用的数据中心有很大的发言权,每隔几年,他们就会让您从一个数据中心切换到另一个数据中心。每隔几年,您就会有几个星期的停机时间,而您的工程师正试图修复通过切换vSphere、vCloud、OpenStack或其他方式暴露出来的Fizzbuzz中的bug。
如果您的工程师针对Cloud Foundry编写了Fizzbuzz、Foo、Bar和Baz,而不是直接针对底层基础架构,那么您的停机时间将会最小化。您不必担心被锁定到特定的数据中心,因为该托管层已经被Cloud Foundry抽象出来了。Cloud Foundry也支持一组特定的服务,包括PostgreSQL、MySQL、Mongo、Redis和RabbitMQ。如果Foo、Bar和Baz使用Cloud Foundry提供的这些服务,那么当您在基础架构之间迁移时,需要担心的事情就少了一件。
后来,你意识到,通过将Fizzbuzz作为一项服务出售给其他大型企业,你可以赚一大笔钱。您现在的状态非常好:因为您的工程师重新设计了Fizzbuzz以在Cloud Foundry上运行,所以只要需要,您就可以简单地将Cloud Foundry部署到AWS。客户试用了六个月后决定不再续订服务?没问题,您不需要担心任何数据中心租约--只需终止所有这些EC2实例,然后继续。您可以轻松地为每个Fizzbuzz实例部署一次Cloud Foundry作为服务,以便您的客户的数据彼此完全隔离。
锦上添花的是Cloud Foundry是开源的。如果您发现它不太适合您的需求,您不必仅仅通过电子邮件获得支持,并等待Cloud Foundry工程师实现您梦想中的功能--您也可以获得源代码,因此您可以根据需要进行任何更改。而且它在the Apache 2.0 license下可用,所以拉取请求被欣然接受,尽管不是必需的。
我希望这描绘了Cloud Foundry解决的各种问题的图景。请随时在评论中询问更多细节,或者如果对将来的问题更有意义,可以查看Cloud Foundry mailing list。
发布于 2013-05-04 02:22:27
我是Cloud Foundry的开发人员倡导者,我想在Mark的回答中补充一点,以专注于您在原始问题中提到的其他一些细节。
首先,您提到了GAE和Azure。这两种方法都有一定的局限性--例如,GAE限制您只能使用特定的语言和API。开源也不是。CF是可扩展的(例如,新版本支持buildpack,允许您选择“任何”语言运行时),并且您可以选择在您想要的地方运行它。
Mark提到了我们今天可以运行CF的4个IaaS提供商,但假设我们正在讨论的IaaS (假设我们将Azure,CloudStack,Google Compute Engine等作为未来的目标)可以支持一小部分我们称为云提供商接口(CPI)的东西,那么您也可以将Cloud Foundry部署到这些基础设施上。
您会问如何能够使用来自不同提供商的服务。像Heroku一样,即将到来的Cloud Foundry (.com)版本将支持一个“市场”,您可以在其中插入来自其他供应商的功能,如果您正在运行自己的Cloud Foundry实例,您可以选择要部署和连接到您的应用程序的服务。
这是相当酷的:-)如果你想知道更多,请在邮件列表上与我们交谈!
发布于 2013-07-26 18:48:32
我想将此作为关于API的评论添加到Andy的答案中,但不幸的是,我没有足够的声誉来做这件事。据我所知,Cloud Foundry确实没有特定的应用程序接口,但它通过环境变量(例如VCAP_SERVICES, VCAP_APPLICATION, VCAP_CONSOLE_IP, VCAP_APP_PORT)提供了许多有用的信息,可以从任何语言或框架访问。虽然来自这些变量的许多信息是Cloud Foundry的内部信息,但其中一些可能非常有用。主要的一个是VCAP_SERVICES,它提供绑定到你的应用程序的服务的信息。
例如,如果我想收集有关Azure Cloud Service实例(例如,其ID)的信息,我的应用程序当前正在其上运行,我将使用Azure管理库中的this类。
反过来,Cloud Foundry提供了VCAP_APPLICATION环境。变量,该变量将包含以下字段:
{"application_users": [],
"instance_id":"97467a9cf508cb75273284b948b6319b",
"instance_index":1,
"application_version":"330b7caf-50e5-48f4-8792-1c80a90b06f1",
"application_name":"helloworld",
"application_uris":["helloworld.vcap.me"],
"started_at":"2013-07-22 10:58:16 +0300",
"started_at_timestamp":1374479896,
"host":"0.0.0.0",
"port":61014,
"limits":{"mem":256,"disk":1024,"fds":16384},
"version":"330b7caf-50e5-48f4-8792-1c80a90b06f1",
"name":"helloworld",
"uris":["helloworld.vcap.me"],
"users":[],
"start":"2013-07-22 10:58:16 +0300",
"state_timestamp":1374479896}最后,还有一些关于日志、监控和诊断的内容。这目前还没有在CF PaaS级别上实现,但我希望这将被实现(因为它是一个非常有用的功能),也许还会有一些新的环境。变量(比如VCAP_LOGS, VCAP_PERFORMANCE_COUNTERS)将会暴露给我们的应用程序。
https://stackoverflow.com/questions/16280933
复制相似问题