减持|玩转 serverless devs 的三种部署方式( 三 )


  • Custom Container
  • Custom Runtime
  • 预置 Runtime 部署
扩展阅读(友商对比)
前面主要讲了 , 利用 serverless devs 的部署的三种方式 。
现在 , 让我们先回到 预置 Nodejs Runtime 部署 这种方式 , 在部署时 , 开发者们应该都注意过 。 我们在传统 web 框架部署到 FC 时 , 需要安装一个额外包: @serverless-devs/fc-http 来包裹我们的框架实例 。 这个包是干啥用的呢?
@serverless-devs/fc-http 本质上是一个 阿里云FC 兼容传统 web 框架的适配层 , 和友商的 tencent-serverless-http 一样 , 它们都源自于 serverless-http 。
【减持|玩转 serverless devs 的三种部署方式】不过同样是 proxy , 阿里云和腾讯云的实现方式有所不同 。
阿里云的 @serverless-devs/fc-http 负责做一些 FC 的http函数 上下文 和传统 web 框架上下文相互转化的适配 。
腾讯云的 tencent-serverless-http 本质上是一个 SCF事件函数 与 腾讯云的API网关 的适配层 。
它负责把用户请求API网关后 , 传给云函数 event , 转化为函数内部包裹的 web框架(expresskoa...)能够处理的 http上下文(reqresctx...) , 经过中间件的处理后 , 再把响应值转化为API网关要求的响应格式 , 来响应用户的请求 。
一图以蔽之:

Image腾讯云的 事件函数 部署 web框架 , 和 web函数 部署 web server 区别主要在于上图的 proxy 层 , 是在用户代码内 , 还是在 SCF 云函数环境中 。
这个不同 , 本质上源自于 2 个云厂商实现 云函数 的方式不同 。 所以阿里云的 事件请求处理程序(Event Handler) 和 HTTP请求处理程序(HTTP Handler) 和腾讯云的 事件函数 还有 Web函数 不能直接进行类比 。
阿里云的 Event Handler 和 HTTP Handler 更像是不同的函数种类 。 这个种类的不同 , 也体现在了函数的入参和响应方式上 。
腾讯云的 事件函数 则和阿里云的 Event Handler 比较相似 , 而 Web函数 个人感觉其实更接近于阿里云的 Custom Runtime 的部署方式 。 区别主要在 , 阿里云要自己去下载 Runtime binary , 腾讯云则内置了一些 Runtime 。
同时相比于腾讯云 , 阿里云目前没有开放在线安装依赖的功能 。 当然这避免了用户想要自定义 安装包的源 这类的问题 。 同时也在一定程度上变相倡导了在容器中开发的方式 。
附录
bootstrap 示例如下所示
#!/bin/bash/code/node-v16.14.2-linux-x64/bin/node dist/main.js