第一部分:云计算概述
     云计算是在分布式处理、并行处理和网格计算的基础上发展起来的概念,其工作原理可理解为将庞大的计算处理程序透过网络自动分拆成无数个较小的子程序,再将这些子程序交给由多部服务器组成的系统进行搜索、计算分析,最后将处理后的结果回传给用户。
     目前云计算的主流的分类形式分为IaaS,PaaS,SaaS三种。
     IaaS,面向软件开发开发者,开发者可以通过网络获取基础设施服务,如硬件服务器租用。
     PaaS,面向软件开发者。云计算平台提供硬件, OS, 编程语言, 开发库, 部署工具, 帮助软件开发者更快的开发软件服务. 比如Google的GAE
     SaaS,面向软件消费者。这是最古老也是最常见的形式,比如在线使用某个软件,比如Google的Gmail.

   第二部:PaaS初步探究
    在云计算广泛应用之前,传统的编程模式有如下特点,每个公司或者个人想要开发一个应用程序时,一般都需要自己购置硬件、配置数据库、配置Web服务器。而开发完成的应用一旦部署完毕,后期团队还需要面对一下几个问题。
    1.开发完成后,依旧需要团队来继续维护软硬件问题
    2.任何业务需求上的改变,可能导致完整的新一轮的开发、测试、部署
    3.服务器启动和系统的冷却,需要消耗大量的电能
    4.为了容灾,数据需要存放在不同地方的数据中心中

     随着技术的发展,2006年Fotango公司推出第一个PaaS平台Zimki,此后迅速发展并实现盈利。但是却在2007年10月,由于母公司战略考虑,认为云市场不是其核心业务,将Zimik关闭。此后,谷歌、微软、亚马逊、阿里巴巴等许多公司相继推出了自己的云平台。
     PaaS平台在云架构中位于中间层,其上层是SaaS,其下层是IaaS。PaaS基于IaaS之上,为应用开发提供接口和软件运行环境的平台层服务.
     对比传统编程模型,PaaS下的编程模型有如下特点
     1.所有运行程序的设置是PaaS供应商通过网络提供的
     2.开发者不需要关心存储和托管问题
     3.PaaS供应商负责升级、打补丁和其他常规的系统维护问题

     PaaS的基本构成要素可包括  
     1.应用的基础软件和中间件支撑(如数据库、Web服务、应用框架和消息服务)
     2.应用的部署和运行环境
     3.应用的多租户支持与管理
     4.云上可编程的开发环境
     5.共享应用资源库和开发社区支持

    PaaS一般提供如下功能
    应用的运行环境,分布式的运行环境,多种类型的数据存储,动态资源伸缩
应用全生命周期的支持,减轻开发者的负担
集成、复合应用构建能力

     开发者使用PaaS,一般会得到如下好处
      1.简化开发
      PaaS供应商将产品开发中重复繁琐的步骤提取出来,以API形式提供,开发者可以只关注开发和创新,不需要关心开发设施等问题
      2.低风险
      开发者可以减轻前期成本投入,无需提前购置自己的服务器,只需要一台PC及其和网络便可以进行开发应用程序。并且可以按需购买资源,按需支付。
      3.社区支持
      PaaS供应商一般会提供在线开发者社区,开发者们可以在社区种获得灵感,分享项目开发经验并得到其他开发者的建议
     4.扩展性
     由于PaaS的分布式特性,开发者的应用程序支持用户数目从一位到成千上万的无压式增长

     当然,开发者在使用PaaS时,还需要考虑到PaaS的一些不足之处,
第一,开发者控制权限下降,不如传统编程模型那样对应用有完全的控制
第二,开发者将受制于PaaS提供商,会有不同PaaS平台之间移植问题
第三,数据隐私问题,PaaS供应商基本可以看到隐私数据

     目前开源的PaaS也有很多,下面是三个比较常见的开源PaaS,Apach Statos
OpenShift Origin和Cloud Foundry,他们三者的开发主流语言分别对应Java,Go和Ruby,有兴趣大家可以深入源代码研究研究。
第三部分:下一代PaaS推动者 Docker
     目前为止,PaaS技术大致经历了如图所示的三代的演化。目前Docker技术正在推动新一代PaaS的发展。
     首先,初步介绍下docker的情况。
       Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。
       Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。
       Google 也在其 PaaS 产品中广泛应用
      下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见Docker是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。
     Docker能解决什么问题?
     1.环境管理复杂问题
     从各种OS到各种中间件再到各种App,一款产品能够成功发布,作为开发者需要关心的东西太多,且难于管理,这个问题在软件行业中普遍存在并需要直接面对。Docker可以简化部署多种应用实例工作,比如Web应用、后台应用、数据库应用、大数据应用比如Hadoop集群、消息队列等等都可以打包成一个Image部署。
   2.云计算平台的软件配置和管理相关问题
     AWS的成功, 引导开发者将应用转移到云上, 解决了硬件管理的问题,然而软件配置和管理相关的问题依然
存在。Docker的出现正好能帮助软件开发者开阔思路,尝试新的软件管理方法来解决这个问题。
   3.虚拟化手段的变化
     云时代采用标配硬件来降低成本,采用虚拟化手段来满足用户按需分配的资源需求以及保证可用性和隔离
性。然而无论是KVM还是Xen,在 Docker 看来都在浪费资源,因为用户需要的是高效运行环境而非OS, 
GuestOS既浪费资源又难于管理, 更加轻量级的LXC更加灵活和快速。传统的KVM技术与Docker之间的对比如图所示:
   4.LXC的便携性问题
     LXC在 Linux 2.6 的 Kernel 里就已经存在了,但是其设计之初并非为云计算考虑的,缺少标准化的描述手
段和容器的便携性,决定其构建出的环境难于分发和标准化管理(相对于KVM之类image和snapshot的概
念)。Docker就在这个问题上做出了实质性的创新方法。
最后一部分:PaaS平台的选择
     市场上,已经有许许多多的大大小小的公司试图占领PaaS的市场,如亚马逊、谷歌、微软,国内三巨头BAT。在初步探究PaaS的过程中,发现了一个由外国开发者提供的PaaS对比网站,可以基于很多参数帮助开发者决策使用何种PaaS平台。下面就简单的介绍下。
     网站已经贴出,选择PaaS时可以利用一下三个功能
     1.根据条件选择PaaS  
     2.PaaS各个平台1比1的对比
     3.PaaS的市场数据统计
    
     PaaS的市场数据
     主要做出了三方面的介绍
     1.支持单一的语言和支持多种语言的云平台各自在市场上占有的比例
     2.云平台支持的运行时环境的比重,前五母亲是Java,Php,Ruby,Python和Node
     3.云品台扩展性的发展。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐