下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

【IaaS与PaaS】我们又为什么要选择PaaS呢?

作者:课课家教育     来源: http://www.kokojia.com点击数:1177发布时间: 2017-04-28 13:00:35

标签: 云应用IaaSPaaS

  从用户(开发者或应用)的角度来看,无所谓什么PaaS、IaaS,用户使用的就是服务(统一的服务生命周期管理、资源管理、API等),如何分层、服务架构怎样,是底层平台的事情。

  知识分享:

  从IaaS->PaaS->SaaS这个顺序上理解,PaaS是程序语言栈的“技术”PaaS,对上层的应用透过IaaS提供弹性的运行服务和devOps支持,这是停留在概念扫盲阶段。

  无论是当前的PaaS(Beanstalk/CloudBees/OpenShift/Heroku)还是Docker/Rocket容器,由哪一个真的在为今天大家看到的SaaS厂商(国内外好多啊,不点名了。。。)的应用服务吗?

  那么问题来了,未来在IaaS/PaaS/SaaS生态中,PaaS应该扮演的角色是什么?

  >技术类PaaS+应用,大概是真的要在云端解放程序员时间效率,降低互联网创业公司门槛了,专注开发、弹性部署

  >专业类PaaS+应用,在这方面http://force.com是开山鼻祖,在云中还原了传统企业信息化架构技术,也是真正在大中型企业信息化领域持续赚到钱的厂商,只是IaaS和PaaS技术都是私有的(收购的Heroku单说),这方面ERP厂商Workday势头也很猛。最可惜单独看PaaS这层,还是薄了一点点

  再看SaaS,你是不是觉得"软件即服务“这个落套的名字有点无聊了?当这个世界都将被软件去定义的时候,软件都是服务的时候,是SaaS的胜利吗?

  在未来一切是服务的年代里,IaaS->PaaS->SaaS这个组合路线说不定会这么演进:IaaS->PaaS->App。当街访一名软件创业者:今天,说你的企业定位是做行业应用的,好像在当下云计算大潮里都有点不好意思开口。明天,如果你是基于PaaS的行业应用提供商,就一定不落套/继续大赚企业信息化市场的大盘。

  总之,SaaS是个好定义!但是演进演进着就离企业信息化真正需求越来越远了,我从6年前就认定SaaS是个含有负能量的贬义归类。PaaS + App的开箱即用和充分的企业个性业务适应才是云计算应用的未来。

     何为PaaS:

  地球人都知道PaaS就是Platform as a Service的缩写,但到底什么是PaaS呢?

  假如我们现在需要一个业务,提供一个很简单的"hello world"服务,那么需要的资源有哪些呢,看下图:

【IaaS与PaaS】我们又为什么要选择PaaS呢?_云应用_IaaS_PaaS_课课家教育

  IaaS&PaaS覆盖图

  从最底层的IDC、机房、网络、服务器,到服务器上的操作系统,操作系统上的服务软件(主要包括WebServices、数据库、缓存等),当然最终在WebServices里运行的是我们的业务代码。如果我们生活在互联网的初始阶段,那么这些元素都是需要我们关心的,我们不得不为带宽机架跟运营商打交道,为域名备案跟通管局打交道,为服务器跟服务器供应商打交道,最后还得雇佣管理一个运维团队,帮助维护自己的IT资源。这会使人疯掉!

  现在幸福的事情,IaaS(Infrastructure as a Service),来了,IaaS帮我们节省了红线所涉及的部分,包括IDC、网络、服务器、甚至包括部分操作系统,为什么说部分操作系统呢?因为我们还是要关心操作系统挂掉、机器宕机等因素,如果我们不关心,或者说我们从业务的架构上不考虑这些因素,是很难保证业务稳定的。

  而PaaS呢?PaaS帮我们节省了蓝色涉及的部分,也就是说除了IaaS节省的部分外,还节省了服务软件和代码的部分,换句话说,PaaS提供了一个完整的业务开发、运行环境,我们无需关心怎么安装Apache、怎么配置缓存、怎么配置数据库读写分离,所有这些已经以服务的方式(注意:不是以机器的方式)提供好了,我们需要做的,只是把业务代码放上来就好了。

  总之,IaaS提供的还是虚拟机资源,而PaaS提供的是实际业务的开发、运行环境,正如SAE对自己的定位:“Web应用/业务的分布式开发、运行平台”。

  PaaS和IaaS的区别

  刚才说了IaaS主要是虚拟机资源,而PaaS提供的是业务的开发、运行环境,那么PaaS和IaaS的区别就是这些吗?

  云计算追求的就是通过共享从而降低成本,并且利用技术提供更好的服务。我们来看一个生活中的例子:

  我们去饭店吃饭,菜很好吃,但有一个事比较烦心:“到底点多少菜”,点的多了怕浪费,点的少了怕不够吃,快吃完了再点又怕上菜慢,现在我们利用云计算的思路解决这个问题。

  IaaS的办法:将菜“虚拟化”,将一份菜切分为半份菜、1/3份菜,甚至1/4菜,用户可以点小份。

  这种办法很有效,可以有效降低我们吃饭的成本,但仍不是特别方便,A,我们无法准确预估需要点多少份;B,吃着吃着饭,突然来了一个朋友,又要现点份菜,这需要上菜时间,耽误工夫。

  那么怎么才能做的更好呢?人类吃饭的单位都是一口,没有人能吃“半口饭”,能不能按照口供应呢?我们来看:

  PaaS的办法:通过一种技术,将菜按口供应,每个顾客只要张嘴就可以吃菜,不张嘴就不吃了,停止计费,来了一个新朋友,也是通过同样的方式,只要张嘴就有菜吃。

从这张图可以看出,PaaS对比IaaS虚拟化的粒度更细,更贴近用户的实际需要,因为用户真正需要的并不是虚拟机,而是满足业务运行需求。

  IaaS&PaaS解决问题对比:

  从这张图可以看出,PaaS对比IaaS虚拟化的粒度更细,更贴近用户的实际需要,因为用户真正需要的并不是虚拟机,而是满足业务运行需求。下面我们来仔细讨论一下PaaS和IaaS的区别吧:

  PaaS的计费粒度更细:

  从计费粒度上,PaaS比IaaS更细,IaaS普遍以 虚拟机的实例数*运行时间 计费,即使IaaS标榜他们的计费单元可以精确到秒级,但如果用户业务某个时间段没有任何请求,用户仍然需要为这部分虚拟机使用时间付费,因为用户无法预知下一次请求什么时候到来,所以用户无法关闭所有虚拟机。

  而PaaS是以请求消耗的资源为单元计费的。

  这样,如果用户的业务暂时没有任何请求,则用户无需支付任何费用,做到了真正的“所付即所用”。

  从SAE上用户的实际使用情况来看,几乎所有用户对比之前的使用IaaS时都会有不同程度的成本节约,以某创业为例,日均15万PV,

  PaaS比IaaS更可靠

  IaaS用户容易高估自己的服务可靠性,这里面有两个原因:

  - IaaS服务厂商往往夸大自己的服务可靠性,实际从目前看任何一个IaaS厂商都时不时有重大故障报出来

  - IaaS用户迷信厂商提供的SLA,自己不进行高可靠架构部署

  我见过在IaaS只用2台虚拟机,然后标榜自己的服务可靠性有多高的用户,殊不知当物理机宕机时,虚拟机一定会收到影响,目前IaaS服务商能提供热迁移的只是少数,即使能提供也是需要提前准备的,无法做到故障时实时切换

  PaaS隐藏了服务器、虚拟机的概念,把一切功能服务化,而这些服务都是基于高可靠架构的,以SAE提供的Cron定时服务为例,这套Cron服务是基于分布式环境,任何一台机器宕机都不会影响定时任务的准确触发。

  PaaS是真正的“高可扩展”

  要明白这个问题,我们先来看什么叫“可扩展”,可扩展有两个层面:

  1,用户可以自行扩展资源,通过手工的方式(包括页面点击、API调用等):

  2,随着用户的业务扩张,自动扩展:

  几乎所有的IaaS厂商都可以实现层面1,但层面1的问题是,用户不知道什么时候扩展。用户真正需要的是层面2的扩展,即随着业务增长,资源自动扩展,整个过程用户可以完全不感知,目前这种层面的“高可扩展”没有任何一家IaaS厂商提供。

  而SAE恰恰提供这种层面2的高可扩展,SAE会自动判断用户的业务是否存在等待队列,一旦请求出现等待,将自动将请求分配新的计算节点,通过这种机制,用户从PV 100/天涨到PV 1亿/天,可以做到瞬间实现而无需用户做任何操作。

  PaaS是免运维的云计算:

  “免运维”是PaaS的最大魅力,因为用户把代码放上来,就可以完全不管了,无论业务凋零还是业务暴涨,都无需人工干预,当然SAE提供完整的图表展现用户的各种请求曲线,了解业务情况还是必须的。在SAE上的很多用户团队里都是0运维,也就是一个运维人员都没有,这在传统业务团队中是不可想象的。

  PaaS的缺点:

  虽然PaaS有免运维、高可靠、自动扩展、更加节约成本等优点,但是PaaS也有缺点,PaaS的最大缺点就是因为用户无法看见服务器,感受不到虚拟机,这样限制了用户的自主性和灵活性,比如用户想部署一个自己的C程序,或者用户想直接开一个FTP管理文件,这些需求都无法在PaaS中满足,因为PaaS 提供的是一个业务的开发、运行环境,而不是用户能够登陆的云主机。

  那么既然PaaS有优点也有缺点,那么什么情况适合使用PaaS呢?

  PaaS的适用场景:

  其实,PaaS和IaaS各有各的适用场景,主要由以下一些规律:

  非HTTP业务(如游戏服务端、数据分析服务)适合用IaaS,HTTP业务(网站、RESTfulAPI服务端)适合用PaaS;

  大型团队(拥有丰富的系统、网络、运维能力和经验)适合用IaaS,创业团队/小型团队(团队规模小,全部聚焦在业务)适合用PaaS;

  技术团队(喜欢定制化、喜欢掌控一切)适合用IaaS,产品团队(聚焦在产品开发)适合用PaaS;

  资金充裕(能够雇佣昂贵的系统工程师、能够支付没有流量的虚机费用)的团队适合用IaaS,资金紧张(对成本比较care的用户)的适合用PaaS;

  PaaS是真正的云计算平台:

  总之,在桌面时代,我们需要的不是IBM ThinkPad、甚至不是Windows,而是上面成千上万的应用、游戏;到了云时代,我们需要的既不是几core的虚拟机、也不是什么EBS存储,而是一个能让我们的业务稳定可靠省心运行的环境,如果有这样的环境,除了技术Geek,我想没有人想管服务器。

PaaS尽管有种种问题,但它确实是从诞生就想提供给用户一个省心、稳定的业务运行环境

  PaaS尽管有种种问题,但它确实是从诞生就想提供给用户一个省心、稳定的业务运行环境,用户一旦部署,不需要关心扩容,不需要关心架构,不需要关心宕机,不需要关心配置,不需要关心优化,就可以随着业务的发展时时满足各种需要,所以PaaS是真正的云计算平台。

  小结:由于它们各有优缺点,因此也有逐渐融合的趋向。例如亚马逊就在自己的IaaS服务上提供了一定程度的PaaS功能。无论如何,服务的最终目的都是为了满足消费者,不管今后两者是趋于融合还是继续并行,都要看云计算客户的需求如何改变。如果大家还想要了解更多相关内容,欢迎关注课课家教育平台!

赞(18)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程