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开发框架的设计原理。


相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
4月前
|
人工智能 运维 安全
加速智能体开发:从 Serverless 运行时到 Serverless AI 运行时
在云计算与人工智能深度融合的背景下,Serverless 技术作为云原生架构的集大成者,正加速向 AI 原生架构演进。阿里云函数计算(FC)率先提出并实践“Serverless AI 运行时”概念,通过技术创新与生态联动,为智能体(Agent)开发提供高效、安全、低成本的基础设施支持。本文从技术演进路径、核心能力及未来展望三方面解析 Serverless AI 的突破性价值。
|
12月前
|
Cloud Native 安全 Serverless
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
|
运维 物联网 关系型数据库
关于阿里云Serverless 框架的产品体验
阿里云Serverless框架简化运维,实现5分钟一键部署。弹性伸缩、按需付费等特点让企业专注业务创新,降低成本与运维负担。适用于Web应用、数据分析、物联网等多种场景,支持快速迭代与多语言开发。尽管面临资源配额、网络配置等挑战,其竞争力在于成本节约、功能集成与性能优化,尤其适合追求高效开发与弹性扩展的团队。
488 121
|
消息中间件 人工智能 Kubernetes
解密开源Serverless容器框架:事件驱动篇
Knative是一款基于Kubernetes的开源Serverless框架,提供了云原生、跨平台的Serverless编排标准。作为Serverless中必不可少的事件驱动能力,Knative Eventing提供了云原生的事件驱动能力。
|
监控 Serverless 云计算
探索Serverless架构:开发实践与优化策略
本文深入探讨了Serverless架构的核心概念、开发实践及优化策略。Serverless让开发者无需管理服务器即可运行代码,具有成本效益、高可扩展性和提升开发效率等优势。文章还详细介绍了函数设计、安全性、监控及性能和成本优化的最佳实践。
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
479 1
|
缓存 前端开发 JavaScript
前端serverless探索之组件单独部署时,利用rxjs实现业务状态与vue-react-angular等框架的响应式状态映射
本文深入探讨了如何将RxJS与Vue、React、Angular三大前端框架进行集成,通过抽象出辅助方法`useRx`和`pushPipe`,实现跨框架的状态管理。具体介绍了各框架的响应式机制,展示了如何将RxJS的Observable对象转化为框架的响应式数据,并通过示例代码演示了使用方法。此外,还讨论了全局状态源与WebComponent的部署优化,以及一些实践中的改进点。这些方法不仅简化了异步编程,还提升了代码的可读性和可维护性。
410 1
|
监控 Serverless 云计算
探索Serverless架构:开发的未来趋势
【10月更文挑战第5天】Serverless架构,即无服务器架构,正逐渐成为云计算领域的热点。它允许开发者构建和运行应用程序而无需管理底层服务器。本文介绍了Serverless架构的基本概念、核心优势及挑战,并展示了其在事件驱动编程、微服务架构和数据流处理等场景中的应用。通过优化冷启动、使用外部存储等实战技巧,开发者可以更好地利用Serverless架构提升开发效率和应用性能。随着技术的成熟,Serverless将在未来软件开发中扮演重要角色。
|
运维 Serverless 数据处理
函数计算产品使用问题之Animatediff插件怎么安装
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
运维 Serverless 对象存储
函数计算产品使用问题之如何使用Flask框架支持Stream模式
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。

热门文章

最新文章

相关产品

  • 函数计算