2013-04-29 135 views
51

所以我一直在读Cloud Foundry,但我仍然对它是什么感到困惑。无论如何,我还是要关注CF上的PaaS,希望你们能告诉我我是否错了,并且解释它好一些。Cloud Foundry解释

像Microsoft Azure或Google AppEngine这样的传统PaaS产品提供了开发,测试,托管和管理您的Web应用程序的完整平台。然而,您必须使用他们的API并且仅限于他们提供的服务以及他们支持的语言/框架。

Cloud Foundry似乎是某种“中间人”,它允许您的应用使用来自许多公共云的服务。它是如何完成的?是否有您使用的单个API,如LibCloud或JCloud?例如,您可以使用来自一个提供商的一项服务,以及来自另一个提供商的另一项服务吗Cloud Foundry本身是否提供任何服务?还是仅仅是允许您轻松从一个平台迁移到另一个平台的中间人,并且在单个应用程序中使用来自不同提供商的不同服务组合?

回答

73

我是Cloud Foundry的开发人员 - 是的,Cloud Foundry的确有点模糊(没有双关语意思)。希望我能帮助澄清一些事情。

Cloud Foundry是platform as a service,但它下面需要infrastructure as a service。 Cloud Foundry通过BOSH工具支持vSpherevCloudOpenStackAmazon AWS作为基础结构。大多数Web应用程序开发人员都不关心这些,但对于那些不必担心大型IT基础架构的人来说,这非常酷。

假设您负责AcmeCorp的IT工作。你有5万名员工都使用你的内部网络服务Fizzbuzz来帮助他们完成工作。为了支持所有的员工,需要在具有强大处理器和大量内存的多台机器上运行的数十个Fizzbuzz应用程序实例,并且需要大量的磁盘空间来存储由您使用的Foo,Bar和Baz应用程序生成的信息内部也是如此。您远远超出了您在自己的刀片服务器上管理的范围,因此您决定租用数据中心。

不幸的是,AcmeCorp是可怕的功能障碍。财务部门在您使用的数据中心方面拥有巨大的发言权,并且每隔几年他们都会让您从一个数据中心切换到另一个数据中心。每过几年,您都会有几个星期的停机时间,而您的工程师会尝试修复通过切换vSphere,vCloud,OpenStack或其他方式暴露的Fizzbuzz中的错误。

如果您的工程师已经针对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

+0

什么仍然是模糊的定价? cf stack是免费的,你付了什么?有没有发现? :) – Tomo 2014-11-09 20:41:55

+0

马克,很好的信息。如果AcmeCorp不断预置部署Fizzbuzz的新实例,每个实例缓存,消息,日志记录,数据库连接,环境变量等略有不同的配置,可这些配置被参数化,并在自助服务控制台曝光CloudFoundry,允许开发团队按照他们认为合适的方式配置和部署Fizzbuzz的新实例? – raffian 2014-11-10 04:36:06

+0

写得很好... – underdog 2015-06-17 10:32:40

20

我是Cloud Foundry的一个开发人员代表,并希望加少许马克的回答集中于一些你在你原来的问题中提到的其他细节。

首先,您提到GAE和Azure。这两者都有一定的局限性 - 例如,GAE限制您使用特定的语言和API。都不是开放源代码。 CF是可扩展的(例如,新版本具有buildpack支持,使您可以选择“任何”语言运行库),并且您可以选择在需要的位置运行它。

Mark提到4个IaaS提供商,我们今天可以运行CF,但假设有问题的IaaS(假设我们包含Azure,CloudStack,Google Compute Engine等作为未来目标)可以支持少量我们称之为云提供商接口(CPI),那么您也可以将Cloud Foundry部署到这些基础架构上。

您问如何使用来自不同提供商的服务。与Heroku一样,即将推出的Cloud Foundry(.com)版本将支持可从其他供应商插入功能的“市场”,如果您正在运行自己的Cloud Foundry实例,则可以选择要部署和连接到应用程序的服务。

它很酷:-)再来说说我们的邮件列表,如果你想了解更多!

+0

感谢从我的答案,安迪填补空白! – 2013-05-04 02:34:08

+0

感谢你们俩,马克和安迪!然而,我仍然对API有一个疑问。 Cloud Foundry提供的某种通用API允许我的应用程序本身是通用的,因为我的代码可以与我选择的任何IaaS服务一起运行?哦,虽然我在这里,是否有任何代码教程可以告诉我如何开始? – Amoeba 2013-05-17 12:35:32

+0

没有您需要担心的“Cloud Foundry API”。如果你对一个死的标准node.js,Grails,Ruby等应用程序,那么你应该能够将它推到CF上,而无需任何特殊的代码更改。 在教程,你可以看看docs.cloudfoundry.com – 2013-05-21 13:53:49

6

想补充这是关于API安迪的回答评论但遗憾的是没有足够的信誉来做到这一点。据我了解,Cloud Foundry确实没有特定的API,但它通过环境变量(例如VCAP_SERVICES, VCAP_APPLICATION, VCAP_CONSOLE_IP, VCAP_APP_PORT)提供了许多有用的信息,可以从任何语言或框架访问。尽管来自这些变量的大量信息是Cloud Foundry的内部信息,但其中一些信息可能非常有用。主要的是VCAP_SERVICES,它提供了绑定到你的应用的服务信息。例如,如果我想收集有关Azure云服务实例(例如,其ID)的信息,那么我的应用程序当前正在运行该实例,我将使用Azure管理库中的this类。

Cloud Foundry提供了VCAP_APPLICATION env。变量,其中将包含以下字段:

{"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级别上实现,但我希望这会实现(因为它是一个非常有用的功能),也许还有一些新的env。变量(如VCAP_LOGS, VCAP_PERFORMANCE_COUNTERS)将会暴露给我们的应用程序。

+1

如果您无法发表评论,则不应将答案用作其他选项。不过,我相信这是合法的,因为你正在改进答案。我会建议在将来而不是提出新的答案,建议对现有答案进行编辑。 – 2013-07-26 11:09:51

+0

“据我了解的Cloud Foundry真的还没有具体的API” - 事实上,它的确,云控制器API(这里http://docs.cloudfoundry.com/docs/reference/cc-api.html记录)。 “关于日志,监控和诊断的几句话,目前尚未在CF PaaS级别上实现” - 这些功能正在通过正在开发的Loggregator添加。 – 2013-07-31 15:22:05

+1

那么,据我所知,提到的API不是PaaS管理API(其原因是在CF中实现并在Andy提供的链接中描述),而是从部署的应用程序角度(API可以由已部署的应用程序调用)。没有这样的应用程序API(基本上,据我所知,因为支持大量的框架)。请纠正我,如果我错了。 – 2013-08-01 11:42:08

2

当然CF是您的IaaS(服务器,存储和网络)和应用程序之间的抽象层,让您的便携移动公共云和私有云中的应用程序,但它也更:

1 。高度水平可扩展的基于容器的平台

Apps可以在容器允许,而不是主机(VM)的应用分配更好的资源管理运行。守望者/花园是CF本地容器技术,尽管最近版本也支持Docker。

2.自愈平台提供HA的多层到您的应用程序

健康管理体系复活失败的应用实例,容器主机,平台流程以及虚拟机,没有中断。可用区域支持在基础架构层提供HA。即使在部署或平台升级期间,滚动更新和金丝雀部署也可实现零停机时间。

3.一种固执,通晓应用运行时

使用的Heroku“buildpack”构建体,应用程序语言是自动检测和适当的运行时栈上建立一个香草OS映像的顶部,允许开发人员专注于编写代码。的状态数据服务

4.开发者按需配置

开发者可以自行提供一个MySQL,RabbitMQ的,Redis的,等与URI /凭证集群切片自动注入到他们的应用程序的环境。