2.4.1 如何开发、部署Serverless应用
1.通过控制台进行函数创建
本节将基于Serverless架构,在主流云厂商的FaaS平台上实现Hello world输出。
其实无论哪个云厂商,通过其FaaS平台输出Hello world,步骤基本是一致的。
1)注册账号,并登录;
2)找到对应的FaaS产品,例如AWS的Lambda、阿里云的函数计算等;
3)单击“创建函数”按钮,进行函数的创建;
4)配置函数,包括函数名称、运行时(可以认为是要使用的编程语言,或者要使用的编程环境等);
5)完成创建,并测试。
(1)以AWS Lambda为例
当AWS账号注册完成时,可以在AWS的控制台找到Lambda这款产品。图2-15是AWS Lmabda产品页面截图。
图2-15 AWS Lambda产品页面
单击“创建函数”按钮进行函数的创建,如图2-16所示。
图2-16 AWS Lambda创建函数页面
填写好函数名称,并且选择一种熟悉的语言,单击“创建函数”按钮就可以完成函数的创建。AWS Lambda函数编辑页面如图2-17所示。
图2-17 AWS Lambda函数编辑页面
此时单击“测试”按钮,并且设置一个测试事件,如图2-18所示。
创建完成事件之后,再次单击“测试”按钮,即可看到程序运行结果,如图2-19所示。
图2-18 AWS Lambda事件配置页面
图2-19 AWS Lambda函数运行结果页面
至此,一个非常简单的函数就创建成功了,并且完成了基本的测试。
(2)以阿里云函数计算为例
当注册并登录阿里云账号之后,需要找到函数计算产品,并单击进入产品首页,如图2-20所示。
图2-20 阿里云函数计算产品首页
选择左侧的“服务及函数”,并进行服务的创建,如图2-21所示。
图2-21 阿里云函数计算创建服务页面
然后进行函数的创建,如图2-22所示。
图2-22 阿里云函数计算创建函数页面
相对于其他的云平台,在阿里云函数计算平台,我们不仅要为即将创建的函数设置函数名称、选择运行时等,还需要设置该函数所在的服务。在阿里云函数计算的体系中,引入服务的概念会带来一定的好处。
·相关联的函数可以放在一个服务下进行分类,这种分类实际上比标签分类更直观明了。
·相关联的函数在同一个服务下共享一定的配置,例如VPC配置、NAS配置,甚至某些日志仓库的配置等。
·通过服务,我们可以很好地做函数环境的划分,例如对于一个相册项目,该项目可能存在线上环境、测试环境、开发环境,那么可以在服务层面做区分,即可以设定album-release、album-test、album-dev三个服务,进而做环境的隔离。
·通过服务,我们可以很好地收纳函数。如果项目比较大,可能会产生很多函数,统一放在同一层级会显得非常混乱,这时就可以通过服务进行有效的收纳。
完成函数的创建之后,我们可以进行代码的编辑。和AWS Lambda类似,阿里云函数计算同样支持从对象存储上传代码,支持直接上传代码包,以及在线编辑。除此之外,阿里云函数计算还支持直接上传文件夹,如图2-23所示。
图2-23 阿里云函数计算代码编辑页面
如图2-24所示,保存代码之后,可以单击“执行”按钮进行函数的触发、测试。
图2-24 阿里云函数计算代码执行页面
可以看到,系统已经输出相关日志:Hello world。至此,一个非常简单的函数就创建成功了。
2.通过工具进行函数创建与部署
通过Serverless开发者工具入门Serverless应用开发、部署、运维是非常方便的,本节将以Serverless Framework为例介绍Lambda应用的部署,以Serverless Devs为例介绍阿里云函数计算应用的部署,并对工具侧的函数创建、部署以及其他相关功能进行探索。
(1)Serverless Framework与AWS Lambda
Serverless Framework是一款开源的命令行工具。相比于供应商提供的CLI命令行工具,Serverless Framework具有多云功能。目前,Serverless官方网站提供了11个常见的Serverless Framework产品,如图2-25所示。
图2-25 Serverless Framework产品
下面通过Serverless Framework开发者工具,并以AWS Lambda为例进行实践,探索如何创建、部署Serverless应用。
1)安装Serverless Framework开发者工具(执行npm install-g Serverless命令)。
2)设置AWS凭证信息(执行Serverless config credentials--provider aws--key key--secret secret命令)。
3)建立模板项目(执行Serverless create--template aws-python3--path my-service命令),结果如图2-26所示。
图2-26 通过Serverless Framework创建项目
4)进入项目目录(执行cd my-service命令),并部署(执行Serverless deploy-v命令),部署过程如图2-27所示。
项目部署成功后,可以进行更多操作,具体如下。
·触发函数(执行Serverless invoke-f hello-l命令),结果如图2-28所示。
图2-27 通过Serverless Framework部署项目
图2-28 通过Serverless Framework触发函数
·查看部署历史(执行Serverless deploy list命令),结果如图2-29所示。
图2-29 通过Serverless Framework查看部署历史
(2)Serverless Devs与阿里云函数计算
Serverless Devs是一个开源的Serverless开发者平台,致力于为开发者提供强大的工具链。通过该平台,开发者可以一键体验多云Serverless产品,极速部署Serverless项目。按照官方目前的描述,Serverless Devs已经支持包括AWS Lanbda、阿里云函数计算、百度智能云函数计算、腾讯云云函数、华为云函数工作流等在内的多个云厂商的Serverless相关产品。
下面通过Serverless Devs开发者工具,以阿里云函数计算为例进行实践,探索如何创建、部署Serverless应用。
1)安装Serverless Devs开发者工具(执行npm install-g @Serverless-devs/s命令)。
2)设置阿里云凭证信息(执行s config add--AccessKeyID AccessKeyID--AccessKeySecret AccessKeySecret--AccountID AccountID命令)。
3)建立模板项目(执行s init node.js12-http-d fc-hello-world-demo命令),初始化过程如图2-30所示。
4)进入项目目录(执行cd fc-hello-world-demo命令),并部署(执行s deploy命令),部署后的结果如图2-31所示。
图2-30 通过Serverless Devs创建项目
图2-31 通过Serverless Devs部署项目
项目部署成功之后,可以进行更多操作,具体如下。
·触发函数(执行s invoke命令),结果如图2-32所示。
图2-32 通过Serverless Devs触发函数
·查看线上函数详情(执行s info命令),结果如图2-33所示。
图2-33 通过Serverless Devs查看函数详情
与Serverless Framework不同的是,Serverless Devs还拥有比较完善的桌面客户端。开发者可以通过桌面客户端进行应用的创建、管理以及相关配套功能的使用,示例如下。
·查看应用列表,并快速创建应用,如图2-34所示。
图2-34 通过Serverless Devs桌面客户端查看应用列表
·创建应用之后,可以进行应用的管理。图2-35是Serverless Devs桌面客户端管理应用界面。
·其他配套功能的使用如下。
〇一键压测函数性能,如图2-36所示。
图2-35 通过Serverless Devs桌面客户端管理应用
图2-36 通过Serverless Devs桌面客户端一键压测函数性能
〇一键对函数资源进行调试,如图2-37所示。
图2-37 通过Serverless Devs桌面客户端一键对函数资源进行调试
〇一键查看函数多维度指标信息,如图2-38所示。
图2-38 通过Serverless Devs桌面客户端一键查看函数多维度指标信息
除此之外,Serverless Devs还拥有较为方便的Yaml可视化配置功能,如图2-39所示。