在开始 OpenFaaS
之前,需要先了解两个概念: Serverless Computing
, FaaS
近几年 MicroService
微服务,Cloud Computing
云计算 ,Kubernetes
等技术 已经成熟的落地,甚至变着花的玩儿的时候;很多人开始探索下一代架构 Serverless Computing
先说一下个人观点,真正适合自己的才是好的,不要盲目采用新技术
首先解释下,什么是 Serverless Computing
:字面意思 无服务器
,但并不意味着真的没有服务器了,而是说对你而言,不再需要服务器了,取而代之的是,将app直接部署到 Cloud Platform
上,它们去负责以前你不得不自己动手的 server-side tasks
。
通俗一点说就是,你只需要专注于业务逻辑代码,不需要管其他系统架构之类的事情了。说到这,很多人就会想到,这句话好耳熟啊,感觉每出现一种新架构的时候,都是这么sale的。
那下面也就来说说,这些年架构上面的一些变化,也能够很好的理解 Serverless
如何演变出来的。
DIY
: 最早的DIY时代,什么都需要自己来,那时候最常见的就是,建机房,架服务器,拉网线,然后一个巨大的project,试想下从0开始Linux Kernel
…Virtualization
: 各种虚拟化技术的成熟,那时候的旗号是,每年可以节省多少多少server的钱,一台server我可以部署n多个projectIaaS
: 虚拟化的更进一步,连一台物理server也不想整了,物理机房也解放了;你所有的server都是在云端,这时候各种公有云私有云兴起;这里的I
infrastructure 最主要指的是 算力computing/存储storage/网络network
![](openfaas01/20200421103149351_1769491024.png =500x)PaaS
:IaaS
的更近一步,虽然IaaS
已经在云端了,并且是由Vendors来负责computing/storage/network;但是还是需要我们来负责,具体什么样的操作系统OS,OS内都需要安装哪些运行环境Runtime,甚至各种中间件Middleware;而在PaaS
上,这些你都不需要再管了,完全交由vendor来负责,你只需要管理的App和数据;但缺点也是很明显的,你的App必须契合你所选的PlatformSaaS
: System as a Service 不是对于开发人员来说的,而是End User,不再需要安装Software而直接使用,最常见的Microsoft 365,SalesforceCaaS
: 重新回到开发人员,Container as a Service,也就是现在的Kubernetes,也是目前用的最舒服的架构FaaS
: Container架构的更进一步,在CaaS
里,dev还需要负责将诸如tomcat/gunicorn等web server打进Pod内,且需要调优来提高performance;到了FaaS
function as a service,开发人员只需要提供你的代码/function即可,其他的都由FaaS
来负责
说到这,小朋友你是否有很多小问号,”只需要写function就行了?”
是的,只需要提供function即可,如下图: 只需要提供function,在有request的时候,platform将functiuon load成container,来serve request
目前比较有名的 FaaS
是 AWS的Lmabda,而开源方面做的最好的就是 OpenFaaS
了
如果用一句话介绍OpenFaaS的话,就是官方的这句
OpenFaaS® makes it easy for developers to deploy event-driven functions and microservices to Kubernetes. Package your code in a Docker image to get a highly scalable endpoint with auto-scaling and metrics
OpenFaaS
的几大特性
- easy to use: 有UI/Portal可以直接操作,也有Metric/Dashboard可以查看各种指标;
function
support all language- 运行在
k8s
等其他云上 自动扩容
下一篇,就正式开始上手 OpenFaaS