云服务的演化历程
整个it系统服务的搭建,随着时间有多个层级的演化。从最早的内部部署(On-premises) 到基于云的Iaas,Paas,Saas,Baas, Faas。服务的构建对开发者越来友好,也更低成本。
内部部署(On-premises)
最早的IT系统在部署时,其依赖的所有环节,皆需IT企业自己搞定,成本和门槛都很高。服务器要放置在机房管理,服务器上要装系统,机房需要打通网络,磁盘不够要买硬盘,此外还要考虑多机房灾备等等。这些对大企业来说尚且有难度的种种,对创新企业更是难上加难。
于是以亚马逊AWS为代表的云供应商诞生了,早期他们所提供的Iaas能够很好的解决上述诸多不便
基础设施即服务(Infrastructure as a Service)
云服务商管理机房、服务器、磁盘、网络接入这些硬件问题。而在其上,使用虚拟化的方式供IT公司自主选择资源大小、性能, 自此基础设施物理的繁杂工作被屏蔽。软件开发公司只需要安装操作系统、各种中间件(比如MQ,RPC框架、数据库等),然后构建应用部署,并提供服务
平台即服务 (Platform as a service)
当系统以微服务构建时,服务调用该怎么注册发现、数据量太大时,怎么分布式的存储。日志怎么收集查询,整个系统该如何监控等等依然需要强大的Devops团队,进行运维。为了解决这个问题,云供应商在基于Iaas的基础上提供了Paas平台,它们以平台化的方式提供存储、监控、服务治理等服务,使得软件供应商,只需要专注于具体的应用开发和部署即可。
就拿数据存储来说,阿里有RDS,腾讯有TDSQL。这些Paas级的平台,提供了很好的可靠性和扩展性,使得初创公司可以专注于业务开发交付,而不是一定要请个DBA
软件即服务 (Software as a service)
前三者都是针对的软件供应商本身的开发运维方式。而Saas只的是软件开发好后的服务提供方式。比如一个CRM系统,
- 本地化部署, 客户出于对数据安全的需求,需要将CRM部署在其公司内部,这可能就牵扯到On-premises模式,需要客户方的IT小组搞定相关的依赖环境
- 私有云部署,客户购买软件后,将CRM部署在自己私有云,或者在公有云上买相关的Iaas、Paas服务,将CRM系统部署其上。总之这套系统是某个客户独享的
- Saas话部署,CRM软件供应商,开发初期,就将CRM以租户的概念进行设计研发。这样后期使用CRM系统的客户,只需要付费开通一个账号,即可享有整个系统服务。
所以Saas不是一种开发部署方式,而是一种系统服务提供方式,他不牵扯开发运维的便捷性,而取决于客户需要什么样的软件服务形式。软件供应商开发的Saas服务,完全也可以使用内部部署的方式,暴露到公网。或者使用共有与的Iaas,Paas平台。
Serverless是什么
无服务器计算 (Serverless computing) 。同Iaas、Paas一样,更多的是针对软件供应商在软件开发运维过程中的进一步的封装抽象,降低开发门槛,使其更加拒绝到业务交付
基于函数和事件更细粒度
传统的微服务系统,最小的开发粒度是一个微服务。而 serverless引入的概念是Function,可以理解为一个功能。比如一个用户中心微服务,就可以拆解为用户注册Function,用户登录Function ,用户查询Function等。
这些功能Function之间以事件进行通信。Function的运行、Event的转发都是有云供应商来管理控制
冷启动、按需付费
传统方式构建的微服务系统,无法动态扩容,比如针对双十一大促,一个电商公司可能需要提前基于预估的流量进行资源申请,系统扩容。预估不可能精确,估少了,流量一大,系统容易崩掉。估多了,资源要真金白银的收费,对公司也是一种损失。
Function的功能够单一,够精简使得云供应商的serverles可以按需冷启动部署Function。软件开发人员,可以按需付费。
无服务器和运维
以微服务方式开发系统,我们需要关注服务要部署几台容器。要基于运维时刻关注系统吞吐量,以便在遇到系统瓶颈时进行系统扩容。而使用 Serverless,开发人员再也不用关注服务器和运维这两件事, Serverless云供应商来自动化解决
参考资料
#executive-summary-summing-up-saas-vs-paas-vs-iaas
https://serverless-stack.com/chapters/zh/what-is-serverless.html
https://aws.amazon.com/cn/blogs/china/iaas-faas-serverless/