Serverless 团队协作:通过阿里 CloudFormation 轻松部署函数应用
Serverless 架构随着云计算的普及越来越受欢迎,相比传统的服务器架构,Serverless 架构可以让开发者从基础设施管理中解放出来,专注于业务逻辑的实现。在 Serverless 架构中,我们可以将所有的代码打包成一个个函数,上传到云函数平台,引入事件触发机制来触发函数执行逻辑,这种按需执行的方式更加灵活高效。与此同时,Serverless 也有着团队协作的需求,如何在多人协作的开发中,更加方便快捷地部署和管理 Serverless 应用呢?本文将介绍如何通过阿里 CloudFormation 的 Serverless 应用管理方式,轻松部署和管理函数应用。
一、简介
CloudFormation 是云原生的自动化服务,它可以轻松地为您的应用程序和基础架构生成和管理资源堆栈。资源是 AWS 中的任何服务或功能, 如 Amazon EC2 实例、Amazon RDS 数据库、API 网关、Lambda 函数、Amazon S3 存储桶等等。CloudFormation 使您可以使用 JSON 或 YAML 模板来描述要包含在要创建的资源堆栈中的所有资源及其属性。
跨多个 AWS 账号和区域工作的分布式应用程序通常由数百个资源组成。手动设置和管理这些部署变得异常棘手,这时使用 CloudFormation 完成自动化即可。
二、 准备工作
- 了解 CloudFormation
作为初学者,可以先去阅读 CloudFormation 和 Serverless Application Model 的使用文档。当然需要先有一定的 AWS 基础。
- 了解函数应用
函数应用是 Serverless 应用组成的最基本单元,理解函数应用的概念可以让我们更好地使用 CloudFormation 管理 Serverless 应用。阿里云函数计算(Function Compute)是基于函数计算能力的,这里我们以阿里云函数计算为例。可以先阅读阿里云函数计算文档主页。
三、 架构设计
- 建立项目
首先,我们要在阿里云函数计算上创建一个函数应用,用于存储我们需要使用 CloudFormation 管理的函数应用。我们以一个使用 Expressjs 开发的 Web 应用为例。我们可以创建一个包含如下文件的项目:
-- -------------------- ---- ------- ------- - ------ - ------------ - -------------- -------------- - - ------------------ ---------- - ------------- ---------- - - --------
- 编写应用代码
我们以 Hello World 为例,这里我们需要创建一个 /hello
接口,访问此接口后,返回 "Hello World!" 的文本。详见如下代码:
// app.js
const express = require('express'); const app = express(); const { helloController } = require('./controller'); app.get('/hello', helloController); app.listen(9000, () => console.log('Server is running on 9000'));
//controller/helloController.js
exports.helloController = (req, res) => { res.send('Hello World!'); };
在这个代码中,我们创建了一个基于 Expressjs 的 Web 应用,并在 /hello
路由上预处理分发给 helloController
进行处理。在 helloController
中,返回了 "Hello World!" 的文本。
- 编写 Serverless 配置文件
这里我们使用 CloudFormation 基于 Serverless Application Model 标准编写一个与之对应的配置文件 serverless.yml
:
-- -------------------- ---- ------- ------------------------- ------------ ---------- ------------------------------- ---------- -------------- ------------ -------- ----- -------- ------- ----- ----- -------- ----- ----------------------------- ----------- ------------ -------- ----- -------- ------- -------- ------- ----------- --------------- ---- ---------- ------ ----------------- ----------- - ----------------- --------- --------- ----- --------- --------------------------- --------- ----- ----------------------- -------- ----------- -------- -------- ----------- --- -------- - -------- -- ---------------------- -- -------------------- - ------------------------------------------ ------- ------- - ----- ----- ------------- ------- --- --------- ---------
在这个配置文件中,我们声明了 helloWorldFun
资源,它是一个基于 Serverless Application Model 标准的函数应用。在 function
属性里,我们指定了函数应用的一些参数:函数名称、代码位置、运行环境、函数运行时间、执行的事件驱动模式等等。这些参数都是通过 CloudFormation 提供的资源声明方式来进行配置管理的。
四、 运行并验证
- 运行项目
可以使用如下命令在本地启动函数应用:
$ npm install $ npm start
这里启动后,应用就可以在地址 http://localhost:9000/hello
访问了。
- 上传并部署项目
接下来,我们通过 CloudFormation CLI 工具来部署项目。首先,安装 CLI 工具:
$ npm install -g @alicloud/fun
然后创建配置文件和部署项目:
$ fun config $ fun deploy -y
在 fun deploy
命令执行后,阿里云函数计算平台会自动创建一个函数应用,上传当前目录的代码,然后构建并部署到函数计算平台上。
- 验证部署结果
在函数应用启动成功后,我们可以通过运行 fun deploy
命令查看应用的信息。也可以在应用中心或函数计算平台上查看。
在通过应用的访问地址 http://$service_name.$region_name.fc.aliyuncs.com/2016-08-15/proxy/myserverless-helloworld/hello/{{name}}
,访问 /hello
接口来测试我们的函数应用。
五、 总结
通过使用 CloudFormation 来管理 Serverless 应用,我们可以在开发过程中更加便捷地部署和管理服务,提高开发效率和代码可维护性。在多人协作开发中,更可以有效地整合资源和管理配置,提高团队沟通和协作效率。在实际开发过程中,在了解 CloudFormation 和 Serverless Application Model 的基础上,可以根据实际需求灵活配置函数应用,提升开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64fec67995b1f8cacdd7307c