云服务的IaasS/PaasS/FaaS/Saas都是什么?有什么区别?
很多学员问,IaaS、PaaS、FaaS、SaaS这些单词,字母都认识,但这些词到底是啥意思呢?什么乱七八糟糊里糊涂的,搞不清楚!今天,丁老师就来给大家普及一下
一、什么是 IaaS?
IaaS是Infrastructure as a Service的简写,中文翻译为“基础结构即服务”,IaaS是指“你能够使用这个服务来创建VM”,也就是说你能用这个服务创建虚拟机的意思。
比如有一个云端服务是IaaS,那就说明他可以让我们在上面自由的创建VM虚拟机,并且我们可以在该虚拟机中配置自定义的Java版本、Python版本,然后我们也可以在这个虚拟机中自由的运行想运行的程序,完全不受到任何限制。
所以只要是直接提供一台虚拟机给你自由运用的服务,即是属于IaaS的一种,也就是Infrastructure as a Service。
举例来说,像是阿里云的ECS、亚马逊AWS的EC2、GCP的Compute Engine,他们就都是属于IaaS的服务(因为他就是直接提供一台虚拟机给我们,让我们自由去运用)。
IaaS的优点
因为IaaS提供完整的VM存储权,所以灵活性非常高,可以自由配置。
二、什么是PaaS?
PaaS是Platform as a Service的简写,中文翻译为“平台即服务”,到了PaaS这里之后,就没有了VM虚拟机的概念。
比如有一个云端服务是PaaS,那么他只会要求你上传你的程序代码,然后他就会像变魔法一样,直接帮你把这个程序运行起来了,因为他自带运行环境。
所以当你使用了PaaS的服务之后,你就不需要接触虚拟机了,云端服务商会把你的程序运行在一个“容器Container”里面,你只要配置几个容器就可以,剩下的云端服务商会全部包办。
因此PaaS也可以称为是懒人部署法,你不需要像上面的IaaS一样,自己去搞虚拟机然后自己安装Java环境,你要做的就是写好程序上传,然后剩下的云端服务商会全部帮你搞定。
举例来说,像是阿里云的Paas、亚马逊AWS的Elastic Beanstalk、GCP的App Engine、或是Zeabur、Heroku、Vercel…等等的网站,他们就都是属于PaaS的服务。
PaaS的优点
只需要上传程序代码即可运作,降低维运的人力和时间成本。
PaaS的缺点
1.灵活度比较低,碰不到实际的VM层级,没办法直接联机到容器里面做特别的设定。
2.通常会限制程序语言,只支持热门的,太小众的程序可能不被支持。
3.收费较贵。
小结:IaaS和PaaS的区别
所以从上面的IaaS和PaaS的介绍,大概可以感觉得出来IaaS和PaaS 其实是一个对立的关系。
IaaS就是直接丢一个最原始的VM虚机给你,有点像是给你一块地你自己自由发挥。
而PaaS则像是一栋盖好的大楼,里面的设施非常先进漂亮,你只要提着你的行李箱(程序代码)就可以入住,但缺点就是你不能随便更动大楼里面的管线,只能照着他们既定的规则走这样。
所以如果你只是要做一个小型的Project,不想要管环境的安装问题,那就可以直接采用PaaS的服务来部署;而如果你是想要自己掌握所有控制权,想要自己处理防火墙、软件版本…等等的控制,或是你想省点钱的话,那就可以考虑采用IaaS来部署
三、什么是FaaS?
了解了经典的IaaS和PaaS的概念之后,接着我们可以来看一下什么是FaaS。
FaaS是Function as a Service的简写,中文翻译为“函数即服务”或是“功能即服务”。
相较于IaaS和PaaS,FaaS其实是近十年才被提出来的新概念,所以虽然FaaS也是属于XaaS家族的一员,但其实他和上面的IaaS和PaaS没什么关系。
FaaS的概念,是“把程序当成方法来执行”,即是让程序不用一直运行着,而是当有请求来时,就快速启动这个程序,然后请求走的时候就关闭这个程序,简单的说就是不让程序一直启动着,而是有需要的时候才开启他,这就是FaaS的概念。
大家也可以想象一下,一般我们在写后端程序的时候,通常就是把程序运行起来,然后这个程序就会一直运行着,等着去接收前端的请求,即使没有前端的请求过来,这个程序仍旧会一直运行着。
而FaaS即是想要提出一个新概念,就是只有当前端发请求过来的时候,才会去运行起这个后端程序去处理前端的请求,当请求执行完毕后,就关掉这个后端程序,不让他在那边空转,把程序当成是一个函数方法来运行,即是FaaS的概念。
举例来说,像是亚马逊AWS的Lambda、GCP的Cloud Functions,他们就都是属于FaaS的服务。
FaaS的优点
只需要在使用时付费,不需付钱让程序空转。
FaaS 的缺点
1.功能要拆分的比较细,每一份程序要保持在处理非常轻量化的小功能,像是处理一张图片的resize…等。
2.和云端服务绑比较深,万一将来要下云会比较麻烦。
补充:FaaS也称为 Serverless(无服务器运算)
在这里也补充一下,其实 FaaS服务还有另一个称呼,即是Serverless(无服务器运算)。
FaaS之所以能够被称为Serverless,是因为从定义上来说,我们并没有长期运行一个服务,而是当前端请求来时,我们才启动这个server,并且当前端请求走了之后,这个服务也被关掉了。所以在定义上,我们并没有长期运行一台服务器,傻傻的去等待前端发送请求过来,因此这种部署方式,就称为是FaaS,也叫做Serverless(无服务器)。
所以FaaS和Serverless,他们指的其实都是同一件事情,就是把程序当成方法一样来使用,用完即丢,不会长期运行某份程序这样。
四、什么是SaaS?
介绍完前面的IaaS、PaaS、以及FaaS之后,最后我们可以来看一下什么是SaaS。
SaaS是Software as a Service 的简写,中文翻译为“软件即服务”。
SaaS其实就是泛指Gmail、Google Drive这种已经很成熟的软件,SaaS跟工程师其实没有什么特别的关系,通常只是在提到IaaS、PaaS时,会一起拿出来被介绍到。
举例来说:
1.我们在工作上,可以使用Jira、Trello这类的SaaS的软件,帮助我们管理敏捷看版的流程。
2.我们也可以使用Outlook、Gmail这类的 SaaS 软件,帮助我们收发 email。
3.在日常生活中,我们也可以使用Notion、Heptabase 这类的SaaS笔记软件,帮助我们记录工作上遇到的大小事、或是个人的学习笔记。
所以对于SaaS而言,基本上只要是你喊得出名字的软件服务,大部分都是属于SaaS的服务,所以大家在日常的生活中,其实已经大量使用到 SaaS 的服务了。
IaaS、PaaS、FaaS、SaaS总结
所以总结一下上面的介绍的话,XaaS家族就可以被统整成下面这张图片(其中虚线下方所表示的,就是AWS、GCP、Azure所提供的云端服务应用)。
因此大家在工作上,除了专注在后端的程序开发之外,也可以多多观察一下所在公司目前是用什么方式来部署的,虽然部署这部分通常是会交由开发工程师来执行,但是多懂一点云端服务的概念总是更好的。
毕竟只有当我们全面的了解有哪些工具可以运用时,我们才能够活用这些工具,用最高的效率达到我们想要的效果!
Edge浏览器很讨厌,不知道是他们的什么操作习惯?在复制地址栏的网址时,粘贴时就会自动变成该网址的标题名称,很是烦人,有多少人遇到过这个问题呢?研究了下,解决方法很简单,进入edge的设置,选择左侧:共享、复制和粘贴,然后把“URL复制和粘...
这几年,丁老师接了无数个关于分销系统开发的咨询,大多是围绕支付和分账/结算的问题。大部分客户的需求是,通过各种各样的提成、分佣等奖励机制,鼓励销售员去分享推广商品,然后根据业绩来计算佣金,最后按月/季/年,对销售员实现资金的自动结算。这种方...
从智能型手机到超级计算机,传统的电子计算设备已经深深融入我们的日常生活和科学研究中。然而,科技的发展永无止境,一种全新的计算范式正在崛起——量子计算机。这项突破然而,正如Google最新的突破性研究所示,我们距离真正实现量子计算的全部潜力还...