Serverless Framework 社区专家
前几次直播内容,我们详细阐述了什么是Serverless Component,Component 在实战中的应用。如果现有的 Component 无法满足诉求,我们应该如何制作一个自己的Component呢?这样多个云资源编排的Serverless场景化的解决方案是如何运行的,开发者应该怎样按照自己的需求定制化开发?本次直播讲深度讨论关于 Component 的相关内容。
抗击疫情,腾讯云在行动。Python 是一种热门的编程语言,Serverless 是近年来迅速兴起的一个技术概念,基于Serverless架构能构建出多种应用场景,适用于各行各业。
前几次直播内容,我们详细阐述了什么是Serverless Component,Component 在实战中的应用。如果现有的 Component 无法满足诉求,我们应该如何制作一个自己的Component呢?这样多个云资源编排的Serverless场景化的解决方案是如何运行的,开发者应该怎样按照自己的需求定制化开发?本次直播讲深度讨论关于 Component 的相关内容。
本次腾讯产业互联网学堂大咖分享课程邀请 Serverless Framework 社区专家 陈涛 分享关于“如何开发一个 Serverless Express 组件?
”课程的内容。
本次分享内容:
1、Serverless Component 运行机制 2、一个完整的Component 开发步骤 3、Serverless Component 组件开发 4、Serverless Component 运行,调试与发布
首先介绍一下什么是Serverless Component,下图是简单拿了一个全栈的应用,比方说我们全栈应用分为两部分,第一部分是前台,静态资源的展示,包括托管,我们简单称为DashBoard。那么第二部分就是web API的一个组件,我们认识的API其实也是封装了一个express,express下面又有几个组件,Cloud Function和API Gateway,还有COS静态存储等一系列的东西。
第二部分看一下Component的本质到底是什么,这可能对大部分人来说是一个新名词。Serverless Component其实就是一个NPM包,对它的引用也特别简单,我们只要在yml文件里引入我们的一些NPM包的名称,Serverless框架就会帮助我们把NPM install到我们所需要的本地一个路径。那这边其实可以给到大家两个参考,第一个是Express Component,是我们比较早开发的一个组件,第二个是Express Component NPM的地址,大家有兴趣的话也可以去看一下,当然我后面也会简单演示一下它的运行机制,还有调试是怎样。它其实就是一个包管理工具,类似于Python的PIP。
看一下整体的一个component,它的开发步骤。是分四步来做的流程,第一部分是明确我们的需求,以我今天讲的例子为例,今天我要兼容一个express框架。然后我们express里面需要一些什么,比如说可能需要一个计算的部分,那么就使用SF。其次SF需要一个入口,就想到了我们API Gateway,这块也以express举例的话,它其实是有一个需求就是要进入express,一个需求下面其实可以拆解出两个工作就是兼容我们的API网关,还有SF。
其次就是定义配置,比方说最简单的就是定义SF的上传路径,其次是API Gateway一个输出需要达到,这些都是定义配置的步骤。
第三步就是最核心的组件开发,这块的话我也会给大家做一个详细的演示。
第四步就是测试并发布npm包,这块的话,其实我可能不会给大家去推到npm的,因为我们已经推过了这个包,所以推送的话,可以直接按照片的发布流程,直接用命令行去推一下,我这块的话只是做一个测试的步骤就是让大家在本地跑起来。接下来是组件配置的演示。
那么我们来完整看一下组件开发的一些主体。这些参数的话,可以直接去拉我们的仓库,默认仓库里面有一些英文的注释,大家也可以去看。首先有一个标准的Component的主体是由三部分的函数组成的,但Component是没有CI复杂,因为CI有部署创建回滚,各种各样的操作, Component只有两个操作,第一个是部署。第二个是remove,删除移除的一些逻辑。就是Component的一个主体的需求,比方说第一部分,我们需要写一个默认的函数,就是来去执行、准备还有更新部分组件的函数,然后我们其实运行Serverless或者SLS,默认是会执行默认函数这一部分的代码。第二部分是remove,比方说我们要用Component删除一些基础设施,就可以在安装Serverless之后在Serverless里面去咨询,Serverless remove的命令,然后这个命令的话,它其实就是直接打到remove函数里面去做一些基础组件的删除。第三部分就是一些可选函数,比方说,你有一些其他需求的话,除了删除和部署之外,可能需要一些其他东西,那么您就可以在这里写,不过我觉得一般来说我们是不用去写它的。目前的话,我们Component的组件,其实就是分为这三个函数,我们其实只要把逻辑写到这三个函数里面,那么就已经完成了我们80%甚至90%的工作,这块的话,我们一定要引入一个Serverless的核心代码,我们的一个包,然后这块的话是一定要注意这个包,假如你要调试的话也必须得安装到本地。接下来是演示。
调试,其实我之前也是有踩到一个坑,因为我第一次使用的时候我是把整个GitHub克隆到本地的,所以这块的话,其实他就是引用我们本地的一个东西,所以在我们组件进行运行、调试发布的时候,我们就可以去直接定位到跟路径,然后去做这个事情。这个调试其实非常简单,我给大家举一个简单的例子演示。
这里的逻辑,我希望大家可以明白就是我们依然也可以去调用本地来做一些调试发布的工作。那这就是我们后面整体的一个Component组件的运行原理,包括一些调试方法,还有整体的发布步骤。
其次就是有哪些人在用我们Serverless的架构,那么下图也列举出了一些我们的客户,他们都是在用我们的Serverless架构的形态。
那么最关键的问题就是你现在有什么。我们其实现有的一些Component的支持还是比较多的,比方说Express、website、django等。
这就是我们整体的一个Serverless Component的开发具体步骤。接下来是演示。
还有我们可能需要注意到的文件以及每个文件到底是干什么用的。
课程源码相关地址:
GitHub github.com/serverless github.com/serverless-components