PaaS究竟是什么?
IaaS、SaaS的定义很清楚,而PaaS的定义就比较宽泛。所以,很多人把PaaS当做一个万能的“框”,什么都往里装,特别像一排垃圾桶中的那个“其他垃圾”桶,当你拎了一袋垃圾,不知道往哪个垃圾桶丢时,其他垃圾总是那个不错的选择。
我们来看看几个大厂关于PaaS的定义。
Google Cloud的定义:
-
平台即服务 (PaaS) 是一个完整的云环境,提供开发者构建、运行和管理应用所需的一切,从服务器和操作系统到所有网络、存储、中间件、工具等。
IBM的定义:
-
PaaS 的全称是平台即服务,它提供一个全面、灵活、经济高效的云平台,用于开发、运行和管理应用程序。
从以上两个定义可以看出,PaaS是用于开发者构建、运行、管理应用程序的平台,而不仅仅是底层的IaaS资源。但Google的定义有个侧重点:IaaS的资源需要通过PaaS来获取。
所以,从这个角度上讲,容器云平台当然是PaaS,一些著名的国外容器产品,比如Rancher、OpenShifit等。这也是为什么国内很多企业干脆就把PaaS当成容器云,而容器又是云原生的重要组成,所以,云原生PaaS更加是容器云了。
但是,这样理解——云原生PaaS是容器云——并不全面。PaaS定义中包含重要的一点,PaaS应该全面,应该提供开发者构建、运行管理应用所需的一切。K8s显然不是,容器云产品也不是。K8s的核心能力是对底层资源的抽象与封装,向应用层提供了弹性与韧性的能力。更多的容器云产品只是为K8s提供了一个UI界面,然后提供了一些开发者工具。
从IaaS的严格定义来讲,容器是属于PaaS的,但个人认为,容器核心能力是对底层资源的抽象与封装,是偏向于IaaS的。
当然,云原生PaaS究竟是啥可能没那么重要,更重要的是怎么做。
云原生PaaS的几种做法
我们先来理解一下企业上云。
-
一个应用的承载,下面有4层,我们使用哪一层的云服务,就能够省掉下面几层的建设和维护的成本。比如,你使用的云虚拟机,下面物理机、机房的购买、建设、维护的费用你就省了,使用公有云无非是第三方厂商来提供下面两层的服务,使用私有云就是企业有专门的团队来提供下面两层的服务。
-
这里要重点说明一下,如果使用容器服务,除了可以免掉下面三层的成本,还会有其他的重大价值:
-
弹性。使用K8S能够做到资源弹性伸缩,当业务负载高时,能自动扩副本数,业务负载低时,自动回收副本。减轻应用运维的压力,又能省资源。企业部署应用时,不用像之前一样先预留好大资源以应急,造成大量的资源闲置和浪费
-
可靠性。弹性本身可以提升可靠性,当负载量提升时还能让应用应付自如。其次,当容器的节点故障时可以重新调度到其他节点。或者,当一个容器故障时,重建容器,甚至当一个机房故障时,重新调度到另一个机房
-
屏蔽底层差异。这点是弹性和可靠性的支撑条件之一,能够屏蔽底层差异,才能丝滑地弹性扩容和重调度
凡事都具有两面性,弄清楚了使用不同层次云服务的价值之后,也需要弄清楚使用它的成本,显性成本显而易见,需要看见的是隐性成本,主要有如下隐性成本:
-
使用哪一层的云服务,就需要运维这一层本身
-
上一层的改造和适配
以使用容器(K8S)服务这一层为例,上云上到容器是非常好,但是有两块巨大隐性成本:
-
本层的运维。那么你需要有专业的人来运维K8S,监控告警、集群升级、备份恢复、集群配置、集群调优、外部对接、容量规划等等。懂K8S运维的人,市场上不多,这里付出的成本会比较高
-
上一层的改造和适配。容器的上一层是应用,为了让应用能在容器中很好运行,那么应用需要进行改造,应用的生产方式、部署方式和运维方式。这一点的成本也比较高
理解了企业上云,我们再来看企业做PaaS的一些做法:
-
建一个平台,提供一些列开发者相关工具,CI工具、测试工具、代码管理工具、代码扫描工具等等,提供一个入口供开发者获取IaaS层资源。
-
建一个容器云平台,有的直接采购商业产品,有的基于开源的进行二次开发。然后在容器平台上,提供各种各样的容器版本的开发者相关工具。
毫无疑问,第1种方式已经落伍了,那是传统PaaS的做法。当前的普遍做法是第2种,但第2种就是最好的做法了吗?答案是否定的。
云原生PaaS,有更好的选择
容器当然是更好的选择,问题在于如何提供容器能力。提供开发者相关工具也是好的,同样,如何提供是更好的?
更好的选择是——以应用为中心。
什么是以应用为中心?
进入一个平台,首页就应该是一个个的应用,然后围绕应用,能够对应用进行开发、构建、运行、测试、运维等。在操作应用的时候,资源自动匹配,工具就在操作应用的时候提供,比如,当我部署应用时,自动匹配资源。当我构建应用时,自动调用CI工具的能力。
打个比方,如果我们把底层资源当成自来水,水的使用方式是拧开水龙头,就能够使用,但这仍然不是自来水的高级用法,更高级的用法是——自来水的使用绑定使用场景,比如洗衣机,洗衣机对接好自来水,对于我们而言,不需要再去关注水了,我们只用打开洗衣机洗衣服就够了,洗衣机会根据实际情况自动控制水量。未来家里对水的使用,越来越多绑定在使用场景中,洗衣机、冰箱、智能电饭煲、洗碗机、马桶、刷牙机等等。未来出生的孩子,也许他们再也见不到水龙头,也不知道水龙头是何物。这些孩子就是电器原生的,跟云原生的概念类似。
以应用为中心的云原生PaaS平台是什么样子?我想会是如下这样子,最上层是应用云。
咱们进一步探索,未来的云会是什么样呢?我想会是如下这样子:
企业都是在应用云上进行应用的全生命周期管理,不用再看到阿里云、腾讯云、AWS、企业私有云的细节,也不用运维云资源,这些云服务厂商只是提供了在世界各地不同的服务规格的云资源。企业只需要在应用云上把应用交付到不同云服务。这样,就彻底做到了以应用为中心。个人认为,这是云原生的终态。我们的核心产品CloudOS,就是这么一朵应用云,这是云原生PaaS平台的更好选择。