`

业界首个开放式云服务平台Cloud Foundry

 
阅读更多

原文 http://sd.csdn.net/a/20111110/307322.html

 

继在上海成功举办两届Ruby技术交流大会后,第三届Ruby技术大会11月11日在上海光大会展中心国际大酒店盛大开幕。本次大会由CSDN主办,ITeye和Shanghaionrails协办,现场有超过500名来自于全国各地的Ruby技术开发者参会。VMware中国软件工程师王浩飞带来了主题为《Cloud Foundry : The industry's first open platform as a service》的演讲。

VMware中国软件工程师王浩飞

王浩飞介绍到,Cloud Foundry是VMware用Ruby实现的业界首个开源PaaS平台,支持多种语言(Ruby、Java、Javascript、Python、 PHP等)以及开发框架(Rails、Sinatra、Spring、NodeJS等),能集成各种后端serivce(Mysql、MongoDB、Redis等) 支持多种云计算平台,能提升开发者的生产力,加速软件开发部署。

以下是王浩飞的现场演讲实录:

首先给大家介绍一下Cloud Foundry到底是什么东西,相信大家都知道Cloud是一个什么东西,大家可能都对 Google AppEngine 比较熟悉,Cloud Foundry类似GAE, 就是为了简化我们的开发,而且可以降低开发程序运营的成本。你想想,一个Rails程序已经写好了,你觉得你的工作结束了,但是很多人还需要把你的程序从开发环节部署到产品环节,这就会带来很多问题,你可能需要把产品环境中的操作环境、网络、存储都配备好,这些我觉得至少要占到你整个开发周期的30%,我的个人经验。Cloud Foundry这个平台的好处就是可以大大减少这些程序员不应该做的事情,把这些过程最小化。最重要的是,Cloud Foundry 99%是用Ruby来写的。

Matz 最近作为首席架构师加入到云计算公司Heroku,某种程度上证明PaaS这种平台对于Ruby程序员的吸引力是最大的。

现在我们来看看用Cloud Foundry都可以做什么,它支持Rails, Java/Spring, Node.js 等等, 可以把这些程序部署到Cloud Foundry平台里。公共的Cloud Foundry平台帐号也是可以免费申请,可以通过API把程序部署上去。你也可以把 Cloud Foundry平台的源代码拿下来, 将这个平台部署到自己公司的计算机上,建立一个公司内部的云计算系统,完全没有任何问题。甚至在最极端的情况下你可以把Cloud Foundry在自己的计算机上建立起来,我们称之为Micro Cloud,这是一个非常方便的工具,而且我们平时开发 Cloud Foundry也是采取这样的做法。

大家都是Developer,平时接触最多的就是如何开发Application,在我看来这主要分为两个阶段:首先有了很好的Idea,你想把它变成一个Application,比如某个创业公司,实现了一个Rails程序,这个时候大概是一个原型,Cloud Foundry对此有很好的支持,开发者可以把写好的Rails程序部署到自己的Micro Cloud平台或者VMware的公共Cloud Foundry平台,在这个过程中逐步实现你的想法,可以用很多次迭代把程序发布出去,开发者可以从中学习如何使用Cloud Foundry管理程序。刚开始你只是有了一个小Idea,以前也并没有用过云开发平台,Cloud Foundry可以帮助你了解这些不熟悉的地方, 这是第一个阶段。

第二个阶段,你可能写出了一个成功的Rails程序,这个时候你的网站流量很大,这个时候Cloud Foundry有很多种方法帮你Scale。增加程序运行的实例, 修改内存大小等等。大多数情况下,作为开发者,我非常喜欢写代码。我想只要把Code写出来就好,而且很多情况下你把这个Code写完之后还有很多很复杂的东西,还要管部署,我只想管我负责的地方,不想管其它事情,比如把Rails程序部署到Production环境里面,如果你不熟悉的话可能会很头大,因为开发环境和应用环境是完全不同的。就像我刚才说的,比如配置一个操作系统内核,安装很多Packdge,有可能还要写很多配置文件,我觉得没人会觉得这个有意思。虽然现在有很多云计算公司,但是没有一家云计算公司可以承诺把“云”给你,最多是说可以让你在我这里免费运行。但是 Cloud Foundry不一样,因为它是一个开源产品,你可以把云运用在自己的机器上,所以是完全自由的。你可以选择将自己的程序部署在VMware 的公共Cloud Foundry平台上,也可以部署在自己搭建的Cloud Foundry平台上。

无论是Java/Spring还是Rails,大部分人平常开发的都是这样的,当你进行部署时,你需要编写很多配置,光干这个事儿就要占用你大量的时候,但是如果你使用Cloud Foundry,它可以负责管理所有在运行在上的程序。你可以选择你这个程序发布到什么地方,比如你公司有一个 Cloud Foundry平台,你可以部署到你这个公司的私有云上面,甚至可以直接在你自己机器上的Micro Cloud。如果你想Push一个 Rails程序到Cloud Foundry平台,这非常简单,假如你需要两个Rails Instance,输入这样的命令,它会自动地把这个 Rails程序打包上传到云上面,帮你创建两个Instance,memory也是可以配置,部署之后它就可以运行了。在部署运行之前这个程序就可以把所有的数据库相关的配置部分全部搞定。整个流程大约就是你写好代码,在本机上测试好,只要运行这三个命令,你的程序就已经进入Production环境了,你不需要知道除了Ruby代码之外的其他东西。如果你要做一些修改就,可以运行vmc update更新production环境的代码。我维护过很大的 Rails程序,那个时候要部署一个东西非常复杂,你可能要专门自己写十几个步骤才能把这个程序拼好,然后放到产品环境里。每次干这种事情的时候都觉得这是在浪费生命。

对刚才讲的内容进行一个快速总结,Cloud Foundry这个平台在你开发初期就可以对你产生很大的帮助,不需要太多的功夫,程序相关的配置全部由云自己搞定。它是可以在你本地机器上创建的,也就是说是在自己的“云”上进行开发的。而且它支持你的程序scale的能力,比如你的项目做得非常火,流量很大,Cloud Foundry可以把你单个结点的系统变成多结点分布式的系统。

下面这一点非常重要,你在部署、管理、运营你的程序时是非常简单的,我们的运维人员,他们的工作量几乎降为零。以前我们开发程序需要Developer,还有一些其他的人员负责部署程序,如果你使用Cloud Foundry可以非常方便地把你的程序从开发环境部署到产品环境,不需要那些运维环节。

相信大家都非常重视自己的Freedom,如果大家用Google AppEngine的时候,无法将自己的程序从GAE上移植出来 ,但是使用Cloud Foundry的时候,你可以自由地运行在自己的平台上还是公共云之上。

Cloud Foundry里面的一些基本概念, 首先是代码,基本上就是程序员写的那些。第二个概念是Instance,比如一个Rails程序真正运行的时候可能会有2-3个Instance,这要看你的需求了。还有你的不同的App是Cloud Foundry之中是用不同的url来确定的。最后一个是Service,就是刚才我说的你可以有很多Service,包括MySQL,这些东西都是可以通过Service的方式加到云里,可以被很多 Instance共享,你只要Run一两个命令进行绑定,不需要配置,这是非常方便的。我们为用户一共开发了两套工具,第一个是VMC,它是一个 rubygem,装好之后会有一个VMC命令,有很多功能,把你的程序配置到云端,可以随时观看你程序的健康状况等等。还有一个Eclipse插件是专门为Spring服务的,可以把你的Spring程序无缝部署到Cloud Foundry平台里。

Cloud Foundry架构设计的非常好,不需要任何其他的工具就可以简单的实现scalibilty,而且把运维的成本降到很低,你可以用一个简单的工具进行管理,从创建、运行到更新,IT运营的成本是非常低的。Cloud Foundry 主要包括两个API,一个是你的程序生命周期管理API,你可以创建、启动一个程序,或者将它删除。另一个是Service相关API,你可以判断这个Cloud里有多少Service正在运行,可以选择你想要的Service。比如我有Rails程序,本来是不需要缓存,但是如果我需要Redis,就可以通过一两个命令把Redis并入我的Rails程序里,然后使用它的缓存功能。

这张slide介绍的是我们平时部署程序到Cloud Foundy一些常用的命令,比如你创建好一个程序后就可以选择一个app名字把它Push上去,对这个app的CRUD都可以操作。然后是程序的设置相关的命令,你想设置它的Instance数量、查看Log都是没有任何问题的,之后命令是处理程序需要的一些Service,以及User自己的信息等等,因为在开发之前,Cloud Foundry系统中需要注册这个开发者的信息,

我们可以看看更详细的Cloud Foundry的架构,当初的设计目标是希望Cloud Foundry本身是一个非常动态的系统,不想留下任何静态的配置文件,或者是需要人工干预的东西,整个系统中间是有一个处理消息的系统叫做Nats,其他所有的组件都是通过发消息和周围的组件进行交互,所以当你往里加一些模块的时候,它就会向一个Cloud Controller注册,然后可以通过消息系统知道这里已经有这个组件了。因为存在这个中心的消息系统,不同的软件、模块之间都可以按照随机的顺序来启动。

因为是通过Message发送来Subscribe/Publish这些东西,整个系统的性能很好,所以每个核心组件都可以添加,它们会自动注册,所有的东西都可以被其他人使用。

这张slide大致的架构图,主要分为两个部分,左边的是cloud controller接受开发者把程序Push上来,之后将程序部署到DEA运行,另一部分是普通用户使用运行在Cloud Foundry程序时,route会选择正确的路径,找到相对应的Instance,将用户的request发送过去。还有一个是Service Life Circle Management,负责管理运行在Cloud Foundry之中的恶各种 Service,比如Mysql,Redis,Mongodb等等。Service有自己的API,你想把自己公司的遗留系统通过 serivce provider的方式加入Cloud Foundry,供运行在Cloud Foundry之中的程序使用。

接下来我们看看Cloud Foundry是怎么管理程序生命周期的,开发者把自己的程序Push上来之后,Cloud Controller会把这个程序记录下来,记录到CC Database里,然后分析这个程序需要哪些部件,创建程序的运行脚本,或者改一些程序的配置。你的程序可能需要某一个数据库比如MySQL,因为数据库是在云里面的,他们会随时设定一个用户名和密码,然后更新你的程序的配置。如果是Rails,他们会自动把这些需要的 rubygems拿回来做build,最后把所有的东西全部打包放到DEA之中,这就是程序真正运行的地方,这个时候程序就真正开始运行了。现在 Cloud Controller存在一些问题,比如安全方面,因为Build用户上传的程序其实有一些安全风险。

Router其实很简单,就是一个简单的Ruby程序,当一个程序部署之后,开始运行的时候它会把这个信息告诉Nats,我已经可以处理用户的请求了,Nats会告诉Router这个信息,之后再有新的用户发过来的请求,Router就会正确的将这个请求发送到一个正在运行中的Instance上面。

这一张是DEA,就是Cloud Foundry之中程序真正在运行的时候,比如Rails、Java/Spring程序都是在DEA中运行的,DA会监控每个程序运行的状况,这个程序占了哪些Ports,占用了多少CPU,使用了多少内存。运行在DEA里的程序直接连接后端的Services。

最后这个是Service Provider,所有程序都是通过Service  Provider来做的,当他们的Service启动,他们会告诉 Nats我这个Service已经好了,其他需要使用这个service的组件可以找到他们。如果有很多你已经有很多已经开发好程序,比如遗留系统,你可以把这个系统的API打包成一个Service放到Cloud Foundry里面。

分享到:
评论

相关推荐

    CloudFoundry服务网关的架构

    CloudFoundry作为一个开源的PaaS(Platform as a Service)平台,为开发者提供了极大的灵活性,让他们能够在不同的云平台上选择开发框架与应用服务。该平台最初由VMware创建,并迅速获得了业界广泛支持。 - **Cloud...

    Cloud Foundry平台概述

    综上所述,Cloud Foundry作为一个全面、开放且高度自动化的PaaS平台,不仅简化了应用的部署和管理,也推动了云计算技术在全球范围内的普及和应用。无论是对于企业级应用还是个人开发者项目,Cloud Foundry都展现出了...

    Cloud Foundry合作伙伴战略和案例分享

    Cloud Foundry是一个开源的平台即服务(PaaS)框架,由Pivotal Software公司发起,并由Cloud Foundry基金会维护。这个平台旨在简化应用程序的部署和管理,为开发者提供了一个高效且灵活的开发环境,同时也为企业提供...

    Spring 与 Cloud Foundry:在云中珠联璧合

    Cloud Foundry是一个开源的平台即服务(PaaS)系统,它简化了应用程序的部署和管理。它支持多种编程语言和框架,包括Java,而Spring是Java生态系统中的核心框架,尤其在企业级应用开发中占有重要地位。Spring框架...

    Cloud Foundry: The Definitive Guide

    Cloud Foundry是一个开源的PaaS(平台即服务)平台,旨在为开发者提供一个快速开发、部署和运行应用程序的环境。它最初由VMware发起,并于2011年公开发布,随后在Pivotal公司得到了进一步的发展。Cloud Foundry支持...

    Cloud Foundry:云时代的Linux/LAMP.pdf

    Cloud Foundry是一个开源的Platform-as-a-Service (PaaS) 平台,旨在简化应用程序的部署、运行和扩展。这个平台是由VMware公司发起,并由技术权威Mark Lucovsky领导的团队进行开发。Cloud Foundry的核心理念是让开发...

    cloudfoundry-runtime-0.8.4_Java8_cloud_

    【标签】"Java8 cloud" 表明这个版本的 Cloud Foundry 运行时是基于 Java 8 开发的,Java 8 是 Oracle 发布的一个重要 Java 版本,引入了诸如 Lambda 表达式、函数式编程、流API等新特性,优化了垃圾回收和多线程...

    CloudFoundry中MongoDB的应用

    CloudFoundry是一个由VMware发起并维护的开源PaaS(Platform as a Service)云计算平台。它为开发者提供了广泛的自由度来选择运行应用程序的云环境、开发框架及所需的服务。自发布以来,CloudFoundry获得了行业的...

    CloudFoundry开源云计算平台简介.rar

    CloudFoundry开源云计算平台简介rar,提供“CloudFoundry开源云计算平台简介”免费资料下载,主要包括Cloud Foundry的概述、Cloud Foundry的架构、使用Cloud Foundry部署应用等内容,可供学习使用。

    基于CloudFoundry的PaaS云平台的设计与实现

    CloudFoundry是一种开源的PaaS(平台即服务)云平台,它允许用户在云环境中部署和运行应用程序,而无需关注底层硬件或操作系统的细节。它的设计理念是提供一个高可用、弹性的环境,帮助开发者快速部署应用程序,并且...

    基于CloudFoundry的云计算PaaS平台拓扑展示设计及实现探究.pdf

    CloudFoundry作为业界第一个开源PaaS云平台,具备支持多种框架、语言和运行时环境的能力,能够提供良好的开发者服务体验并能与IaaS平台实现交互。文章提出,CloudFoundry的开发需考虑其平台支持的多样性,以及系统的...

    Cloud Foundry 中的新增功能-中英文

    Cloud Foundry是一个开源的平台即服务(PaaS)系统,由Pivotal Software维护,用于构建、部署和管理云应用程序。这个技术的核心在于提供了一种高效、可扩展的方式来托管和运行各种应用程序,无论它们是基于微服务...

    Cloudfoundry

    Cloudfoundry

    CF-Help.rar_Help!_cloudfoundry_cloudfoundry Help

    CloudFoundry是一个开源的平台即服务(PaaS)系统,由Pivotal Software开发并维护,主要用于构建、部署和管理应用程序。这个“CF-Help.rar”压缩包显然包含了与CloudFoundry相关的帮助文档,旨在为用户提供简洁而...

    CloudFoundry云平台部署手册.pdf

    CloudFoundry云平台部署手册.pdf

    从开发者的角度看CloudFoundry

    1. **开放源码**:CloudFoundry是一个活跃的开源项目,拥有开放的许可证,这为开发者提供了极高的自由度来定制和扩展平台。 2. **中立的基础设施核心**:CloudFoundry基于一个中立的核心,可以在不同的基础设施或...

    Cloud Foundry - The Definitive Guide

    Get started with Cloud Foundry, the leading Platform as a Service (PaaS) that’s dramatically changing how developers, operations practitioners, and especially DevOps teams deploy applications and ...

    CloudFoundry V2架构分析

    Cloud Foundry是VMware于推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。同时,它本身是...

    在cloud-foundry上开发JAVA应用.docx

    在Cloud Foundry上开发Java应用是一项高效且灵活的实践,因为Cloud Foundry作为一个开源的Platform-as-a-Service(PaaS)平台,它为开发者提供了在不同云平台上选择开发框架和服务的自由。由VMware发起并受到广泛...

    cloud_foundry上开发JAVA应用

    在探讨“Cloud Foundry上开发JAVA应用”的过程中,我们首先需要深入理解Cloud Foundry这一平台的核心价值及其在Java应用开发中的角色。Cloud Foundry作为一款开源的平台即服务(PaaS),赋予开发者在多样的云环境中...

Global site tag (gtag.js) - Google Analytics