一个完整的系统需要由以下几个层次构成:应用层、数据层、服务层(运行环境、中间健、操作系统)、基础设施层(虚拟化层、服务器、存储器、网路)。
在过去,如果要在网络上搭建一个应用,开发者需要完成所有层次的搭建,包括自己购买服务器、存储器、操作系统,自己搭建运行环境和中间健,并在此基础上开发应用代码和存储数据。
云服务的出现打破了这种固有的开发模式,依照定制化程度的深浅通过提供不同程度的基建服务,从而衍生出了SaaS、PaaS、IaaS等类型的云服务模式。
下图来源于网络,通过这张图,我们可以清晰明了的看到这三种服务的区别,其中黄色部分为云服务商所提供的的内容,绿色部分为应用方自研的部分,其中的理念解读和定义来自于NIST (National Institute of Standards and Technology,美国国家标准和技术研究院)。
首先,SaaS(Software as a Service)简单来讲就是,所有应用和底层服务及数据都部署在云端,以一种租赁的方式提供给应用方,平台按照使用收取一定的费用。
SaaS软件厂商可以分为两种:行业通用型和垂直行业型,具体可以参考下面的两张图:
其次,PaaS(Platform as a Service)就是软件应用代码及数据由应用方独立开发,但其代码可以部署在由云服务公司提供的PaaS软件环境上,应用方不用关心背后的基础设施,包括网络、硬件等;Salesforce Force、Google App Engine是典型的PaaS产品。
再看一下IaaS(Infrastructure-as-a-Service)就是借用云服务公司提供的网络、存储和服务器资源环境,应用方进行独立搭建软件系统及做服务层开发;Amazon AWS、阿里云等都是典型的IaaS厂商。
最后再讲一个概念—aPaas:这是介于PaaS和SaaS之间的一种云服务形态。其是提供一种叫做低代码平台的服务,提供多种非代码性质的应用组件,可以帮助客户以拖拽的方式来设计自己的应用。这种服务可以提供给不具备代码开发能力的应用方来进行相对个性化的应用搭建。