Serverless开发框架及依赖安装原理(上)

本文涉及的产品
简介: Serverless开发框架及依赖安装原理(上)

前文回顾


传统应用部署的特点

如果应用很长时间没有使用,大部分资源都是浪费的。如果想要按需使用,首先需要初始化虚拟机,再初始化应用运行环境,然后在启动应用,整个过程耗时达到分钟级别,对于业务而言这显然是不可接受的。而基于运行环境的重用能够实现毫秒级的热启动。

  • • 直接进行处理无需启动应用
  • • 一直消耗硬件资源

Serverless的优势

  • • 应用的百毫秒启动
  • • 资源利用率和业务性能的平衡

Serverless的特点

  • • 组成Serverless应用的函数是事件驱动的但也可以直接用API调用函数
  • • 函数可以同步调用或异步调用,定时触发器函数是异步调用的,异步调用函数建议主动记录并处理异步调用结果
  • • 函数的启动过程分为下载代码、启动容器、启动运行环境、执行代码四个步骤,前三个步骤称为冷启动,最后一个步骤是热启动
  • • 执行上下文重用可以提高Serverless应用性能,但在编写代码时要注意执行上下文重用带来的风险
  • • 函数并发限制导致函数执行时间延迟
  • • 执行上下文重用导致每次处理的都是同一份数据


如何提高应用开发调试和部署效率?


在实际应用中,绝大多数应用由很多函数组成,应用部署的时候需要将所有函数统一部署,并且函数运行依赖Faas环境,这样导致函数代码不能直接在本地运行,这样的一些限制给应用开发调试和部署流程带来了挑战。

新的挑战

  • • 函数太多如何管理
  • • 本地开发时如何进行调试
  • • 代码开发完成后如何部署

什么是Serverless开发框架

Serverless的开发框架不是传统的Express.js、Spring Boot等代码框架,而是集成Serverless思想、贯穿Serverless应用从开发到上线全流程的工具。

基于Serverless开发框架很容易开发一个Serverless架构的应用,企业也能轻松的把现有的业务演化为Serverless架构。

除了底层的Faas和Baas基础设施,上层的开发框架也是非常重要的一部分,直接决定了开发者使用Serverless的成本。

从框架开发者的角度和思考如何去设计Serverless开发框架

Serverless开发框架所应具备的基本功能:应用管理、应用开发、应用调试、应用部署。

从形态上来看,Serverless开发框架可以抽象为一个平台或服务,用终端工具或控制台的方式提供给开发者使用。


应用管理

网络异常,图片无法展示
|

应用的管理主要是函数的管理,各个Faas平台也考虑到了这一点,比如函数计算的服务功能、Lambda的应用功能。

你可以把同一个应用的函数都在同一个服务下创建。一个服务代表一个应用。

那怎么描述服务和函数的关系呢?

因为它们是静态的,不会在代码运行的时候改变,可以使用yaml文件或js文件来表示。

在创建函数的时候,也需要指定函数的入口、编写语言、触发器。

image.png

假设终端工具是一个可执行脚本,可以提供Serverless init命令自动为用户创建一个管理Serverless应用的yaml配置文件,有了应用的配置文件之后,开发者就需要开发代码了。

image.png

为了近一步的简化用户操作,可以提供代码的开发模版,开发者基于模版一键生成Serverless应用。这样开发者就可以在本地用自己喜欢的编辑器来开发代码了。

也可以提供一个Web IDE,为开发者初始化本地运行环境,这样开发者就不用在本地安装编辑器就能开发,也不用关心运行环境的差异。

各个Faas平台也都提供了自己的Web IDE,比如AWS Cloud9、腾讯云函数计算的Code Studio(基于VS code开发的,微软19年5月份发布了vs studio online,让开发者轻松实现web ide)


image.png

目前体验最好的是Cloud9,但相比本地开发还是有一定差距的。


应用调试

image.png

应用调试非常麻烦,想要调试这个函数需要手动构建event,context,callback参数来测试函数的运行状态,而麻烦点在于这些参数依赖Faas环境,不同的运行环境不同触发器的入参都有差异。

如何让开发者方便调试

  • • 远程调试

将代码部署到Faas平台,然后直接调用FaaS平台的接口执行函数,再得到函数运行日志及返回结果。

  • • 本地调试

由开发框架模拟函数运行时环境,构造函数参数来执行函数。本地调试效率更高。

对于Serverless开发框架来说,这两种调试方式都需要,也就是需要实现serverless invoke和serverless local invoke两个命令。

根据yaml的配置解析出应用的服务名称和函数列表然后调用FaaS平台的接口来创建和更新服务和函数。

在创建函数的时候,FaaS当中的函数代码通常以压缩包的方式生成在文件的存储服务中。

部署函数之前现在本地把代码压缩成.zip文件。

部署应用的时候,将代码部署到FaaS当中进行调试,可能每次代码改动都会影响到线上服务,如果有版本控制就可以避免。

image.png


账号设置与多平台支持

image.png

把账号信息保存到用户自己的磁盘上,这样应用部署的时候就可以从磁盘读取账号信息,以用户账号调用FaaS平台接口,这样就可以把函数部署到用户自己的云账号下面。

一个优秀的Serverless开发框架需要支持不同的云平台和厂商的支持,因为不能限制用户只使用某一种云服务。

Serverless开发框架最好还要抹平不同Serverless平台的差异,让应用能够在不同Serverless平台中进行平滑迁移,甚至让开发者使用一个开发框架、一套开发流程就能够实现多云部署。

要支持多种Serverless平台需要在开发框架上去配置各个不同的平台,但现在各个平台都没有一个统一的标准,这是难点之所在。


image.png

所以在创造一个开发框架的时候首先要抽象出平台各个公共的部分,然后制定一套你的开发标准,再以适配器的方式适配不同的Serverless。

通过一个Serverless命令对开发者提供所有服务,贯穿Serverless应用开发到线上的全流程,这其实是主流Serverless开发框架的设计原理。


相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
3天前
|
存储 缓存 IDE
在函数计算(FC)中,如果已经按照指示完成了插件的安装,但插件没有显示在SD的菜单中
在函数计算(FC)中,如果已经按照指示完成了插件的安装,但插件没有显示在SD的菜单中
12 3
|
5天前
|
缓存 Java Serverless
Serverless 应用引擎常见问题之安装完serverless dev报错如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
25 4
|
3月前
|
Serverless Linux Windows
在函数计算中,如果pip安装速度较慢
在函数计算中,如果pip安装速度较慢
35 1
|
27天前
|
人工智能 Serverless API
函数计算常见问题之函数计算和云上安装依赖的关系是什么
函数计算(Function Compute, FC)是阿里云提供的无服务器计算服务,它允许用户在无需管理服务器的情况下运行代码,但在配置和执行过程中可能遇到报错,本合集致力于梳理FC服务中的常见报错和配置问题,并提供解决方案,帮助用户优化函数执行环境。
34 1
|
6天前
|
人工智能 JavaScript 小程序
Serverless 应用引擎常见问题之函数计算安装serverless devs成功了但是配置密钥这步一直不成功如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
17 1
|
6天前
|
关系型数据库 Serverless 分布式数据库
Serverless 应用引擎常见问题之安装完serverless dev通过终端执行s config add返回错误如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
17 1
|
1月前
|
人工智能 Serverless API
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
|
1月前
|
小程序 IDE Serverless
【经验分享】支付宝小程序serverless云开发拓荒
【经验分享】支付宝小程序serverless云开发拓荒
74 0
|
2月前
|
人工智能 Serverless API
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
7410 132
|
2月前
|
人工智能 Serverless API
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
为了帮助用户高效率、低成本应对企业级复杂场景,函数计算团队正式推出 Stable Diffusion API Serverless 版解决方案,通过使用该方案,用户可以充分利用 Stable Diffusion +Serverless 技术优势快速开发上线 AI 绘画应用,期待为广大开发者 AI 绘画创业及变现提供思路。
87233 4

热门文章

最新文章

相关产品

  • 函数计算