![Serverless架构下的AI应用开发:入门、实战与性能优化](https://wfqqreader-1252317822.image.myqcloud.com/cover/938/44476938/b_44476938.jpg)
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产品页面截图。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-15.jpg?sign=1739443600-nxdDxj431cZ7hhrAUm5kHBnwMvqo7ZmF-0-998001c914ee64e22e307c3a18d3c9cd)
图2-15 AWS Lambda产品页面
单击“创建函数”按钮进行函数的创建,如图2-16所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-16.jpg?sign=1739443600-LKFzP66kKRMMhUl7WIbdzKxvs1k6yjFQ-0-f1d385d1790b78486d25dee137c69334)
图2-16 AWS Lambda创建函数页面
填写好函数名称,并且选择一种熟悉的语言,单击“创建函数”按钮就可以完成函数的创建。AWS Lambda函数编辑页面如图2-17所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-17.jpg?sign=1739443600-Tf3JAc9KU8ZmhD02hCbnO2FKGl2iIDq2-0-a9e88ffb0c6596f4c8e423a7273fb655)
图2-17 AWS Lambda函数编辑页面
此时单击“测试”按钮,并且设置一个测试事件,如图2-18所示。
创建完成事件之后,再次单击“测试”按钮,即可看到程序运行结果,如图2-19所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-18.jpg?sign=1739443600-EweCyazLaXsG4Vye4Ai156zhUSDVROD0-0-56d910a470786dfc97de031bb5146018)
图2-18 AWS Lambda事件配置页面
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-19.jpg?sign=1739443600-rt51gI5Qk2EY6Sdwyq0ld17Td7fTrEpV-0-9493fd9be73ca4efd18de31849653fd7)
图2-19 AWS Lambda函数运行结果页面
至此,一个非常简单的函数就创建成功了,并且完成了基本的测试。
(2)以阿里云函数计算为例
当注册并登录阿里云账号之后,需要找到函数计算产品,并单击进入产品首页,如图2-20所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-20.jpg?sign=1739443600-bIwNLDxFYbvESQrAK4ludjQz1Q3NdhND-0-807e53079c1071c1f631a54ce4104e59)
图2-20 阿里云函数计算产品首页
选择左侧的“服务及函数”,并进行服务的创建,如图2-21所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-21.jpg?sign=1739443600-mmwoVEscPR9XWrRSpF8Ra6BPc3mzmlOn-0-2577c66f068712d4d9ccdb266379ee94)
图2-21 阿里云函数计算创建服务页面
然后进行函数的创建,如图2-22所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-22.jpg?sign=1739443600-Agij5BlG8vKbo908FL0TA2HwinXX7doY-0-eeaff671b53df3420a862c6d822788b7)
图2-22 阿里云函数计算创建函数页面
相对于其他的云平台,在阿里云函数计算平台,我们不仅要为即将创建的函数设置函数名称、选择运行时等,还需要设置该函数所在的服务。在阿里云函数计算的体系中,引入服务的概念会带来一定的好处。
·相关联的函数可以放在一个服务下进行分类,这种分类实际上比标签分类更直观明了。
·相关联的函数在同一个服务下共享一定的配置,例如VPC配置、NAS配置,甚至某些日志仓库的配置等。
·通过服务,我们可以很好地做函数环境的划分,例如对于一个相册项目,该项目可能存在线上环境、测试环境、开发环境,那么可以在服务层面做区分,即可以设定album-release、album-test、album-dev三个服务,进而做环境的隔离。
·通过服务,我们可以很好地收纳函数。如果项目比较大,可能会产生很多函数,统一放在同一层级会显得非常混乱,这时就可以通过服务进行有效的收纳。
完成函数的创建之后,我们可以进行代码的编辑。和AWS Lambda类似,阿里云函数计算同样支持从对象存储上传代码,支持直接上传代码包,以及在线编辑。除此之外,阿里云函数计算还支持直接上传文件夹,如图2-23所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-23.jpg?sign=1739443600-U0gW0JDRquKhP6IdUMWmoQ25bNywMGKa-0-b7c024029e829b4ea60549d9f4cae31c)
图2-23 阿里云函数计算代码编辑页面
如图2-24所示,保存代码之后,可以单击“执行”按钮进行函数的触发、测试。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-24.jpg?sign=1739443600-ez7BbqLIRtnoene9NiCpRVJAUmkuAKQq-0-84984bed990a1d7250dd8c04d758fe56)
图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所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-25.jpg?sign=1739443600-JVx4CgmPVwGn3qVrby4IzgpOJsY5CIvb-0-ac7814839e94b1f50e59104ab5373360)
图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所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-26.jpg?sign=1739443600-cRAlGsYBgjuPc07GOF5RUbzWvKC1Ougs-0-520f3113c946811c6515445532855ca6)
图2-26 通过Serverless Framework创建项目
4)进入项目目录(执行cd my-service命令),并部署(执行Serverless deploy-v命令),部署过程如图2-27所示。
项目部署成功后,可以进行更多操作,具体如下。
·触发函数(执行Serverless invoke-f hello-l命令),结果如图2-28所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-27.jpg?sign=1739443600-FHUh88s9ctDkEUplRb2ZFgwK7Lc61KyE-0-70649a59316aadf146e5b19c6c02b781)
图2-27 通过Serverless Framework部署项目
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-28.jpg?sign=1739443600-tQGVAG1tQ2RLA62fNhYWXzNKI7sRImZR-0-e1cc40ead6cdaadad3c18d0ffd5234d7)
图2-28 通过Serverless Framework触发函数
·查看部署历史(执行Serverless deploy list命令),结果如图2-29所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-29.jpg?sign=1739443600-taMAy3LCH1YV9IjZogJfkQQVN3vj6bIl-0-559827f8178ca2d05e95f98ab2d2c33d)
图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所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-30.jpg?sign=1739443600-0MLXuSFGJQfqBKQPr9rAqPDigweu0J4A-0-98bc25f0e0ad512addf3d66d23b20cfc)
图2-30 通过Serverless Devs创建项目
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-31.jpg?sign=1739443600-NA1ct3q5dgyRIQVYNXqMtuJMVE1a3UtU-0-627af1f7af7d29ae0103758da752a7f0)
图2-31 通过Serverless Devs部署项目
项目部署成功之后,可以进行更多操作,具体如下。
·触发函数(执行s invoke命令),结果如图2-32所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-32.jpg?sign=1739443600-oUqN6QXn5Gh6PhZ4SxenE5yR4rK5T8w0-0-8ff927aa046cd999dd3e336e6660383a)
图2-32 通过Serverless Devs触发函数
·查看线上函数详情(执行s info命令),结果如图2-33所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-33.jpg?sign=1739443600-OX65n0vSwGf5FqW4c0X3WyBchOXJmxjH-0-8aae61c65b34688a7f98d2ac2134b7fc)
图2-33 通过Serverless Devs查看函数详情
与Serverless Framework不同的是,Serverless Devs还拥有比较完善的桌面客户端。开发者可以通过桌面客户端进行应用的创建、管理以及相关配套功能的使用,示例如下。
·查看应用列表,并快速创建应用,如图2-34所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-34.jpg?sign=1739443600-NrCanBrmBEvEtrbO6tRPyMpVAZAEQ1Un-0-3b855e0ac9f0dc47303af6791d880ed1)
图2-34 通过Serverless Devs桌面客户端查看应用列表
·创建应用之后,可以进行应用的管理。图2-35是Serverless Devs桌面客户端管理应用界面。
·其他配套功能的使用如下。
〇一键压测函数性能,如图2-36所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-35.jpg?sign=1739443600-EiKluMqQ4WPiBuebNnjQulURQTmJO3rv-0-224992fe516e520e84cfb2059ad6a7f2)
图2-35 通过Serverless Devs桌面客户端管理应用
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-36.jpg?sign=1739443600-SjXbl41O3E969SVA6qHSGM8felN2U57T-0-d34c96f80ee63bb3fc42a358df5a1d8c)
图2-36 通过Serverless Devs桌面客户端一键压测函数性能
〇一键对函数资源进行调试,如图2-37所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-37.jpg?sign=1739443600-YLzAxy9wjLY7WFRXbwYHoe4u1Pe8HZ5n-0-e2deb5761f4c14498bb1a1bfc407fedf)
图2-37 通过Serverless Devs桌面客户端一键对函数资源进行调试
〇一键查看函数多维度指标信息,如图2-38所示。
![](https://epubservercos.yuewen.com/4C56FC/23695871601352506/epubprivate/OEBPS/Images/2-38.jpg?sign=1739443600-9Ddr20HI30SkNLGE513IYIZ1qfWcn0m7-0-c79c9f92eda2f6626bee6570196c98a0)
图2-38 通过Serverless Devs桌面客户端一键查看函数多维度指标信息
除此之外,Serverless Devs还拥有较为方便的Yaml可视化配置功能,如图2-39所示。