Serverless应用引擎SAE-测评

简介: Serverless应用引擎SAE 2.0 公测版本

本文分 五 大版本:

1,开通SAE

2,小游戏测试

3,三种部署方式

4,建议和思考

5,总结


测试环境:SAE 2.0公测版

浏览器: firefox 117.0.1



很久之前就听过SAE(Serverless App Engine)大名了,是一个全托管、免运维、高弹性的通用PaaS平台。第一印象是低门槛,零改造支持容器化上云,但个人觉得过多的封装,导致维护开发层面的灵活性不够,用惯了黑屏kubectl等维护ACK的话,在SAE上使用就有点束手束脚了。这次推出的升级版本2.0 ,强调极致弹性、标准开放、简单易用,这三大功能。对于新兴业务以及一些小白用户或者创业的公司更加友好,省去了自建平台,重复造轮的步骤,实现开箱即用,一键上云。

那我们开始测评下。




一,开通SAE


开通试用

建议使用试用权益。

图片.png


公测版本信息,可以点击体验。

图片.png


授权角色服务后,点击创建应用

图片.png


开通非常简单。





二,小游戏测试


按教程指导,创建游戏应用,指定游戏代码仓库。

图片.png


配置完成,点击应用启动

图片.png


一直在启动中,等了约10分钟,一直处于启动中。

图片.png



后来点击右上角的启动应用,设置了实例范围,才算启动成功。

应是漏掉了教程里的 容量设置。

图片.png


当实例未设置数量时候。

直接访问公网链接,报错,提示信息不够明显。

{"ErrorCode":"ResourceExhausted","ErrorMessage":"Function concurrent request count exceeded"}。


测试效果:

图片.png



整体测试流程下来比较丝滑,界面跟函数计算类似,非常熟悉的功能和界面布局。





三,三种部署方式


使用三种部署方式将代码或者镜像推送到SAE上。

(卖个关子:本来是四种,但SAE还不支持第四种,那第四种是什么部署方式呢,具体请看下文。)


1,初始化一个应用demo

直接初始化一个 com.sae.demo的 jar 包项目

图片.png

本地进行一些简单的代码添加,设置controller,定义个RequestMapping路由 /demo。

图片.png


调试好代码后,启动正常。



2,使用代码部署-dockerfile方式


SAE只支持Push代码到仓库的事件,后续以此事件触发构建。

先将代码传到个人gitee上。

图片.png


gitee授权SAE 访问。

图片.png



关联后直接创建应用,以dockerfile方式构建。

图片.png



图片.png

但一直处于创建中,后来查到SAE 以dockerfile构建需要做先编译再做镜像构建。

图片.png


所以这一步,有问题,一般我们在dockerfile里只定义部署动作,编译和构建动作 是在平台完成的,比如云效Flow,就是这么个逻辑。

但SAE 需要我们在dockerfile里定义好代码编译和镜像构建。

查了下,SAE对Source-To-Image(S2I)的过程,使用的是谷歌的kaniko,对dockerfile逐行解析并执行。


重新编辑dockerfile

图片.png


构建成功,因为没有指定settings文件,依赖都从外网下载,花了13分钟 构建,比较慢。

图片.png


查看镜像,不大,才75MB。

图片.png

测试访问正常:

图片.png


图片.png




更新代码触发构建

我们简单修改时间为 17:39,看看SAE是否是持续构建的。

图片.png


18点多的时候,已经构建完成。

因为设置的新版本流量为0,需要手动调整更换版本和流量比例。

图片.png


查看新内容。

图片.png

3,使用代码部署-系统自动构建

故名思义是编译构建动作全部交给SAE完成。


图片.png

建议是先在本地 全部构建一遍,省去不必要的编译依赖麻烦,没有问题再执行系统检测自动构建。

建议删除mvnw文件。

图片.png


自动检测构建,在构建模块会存在偶发问题,频率不低,构建错误,只能重试。

图片.png



构建成功

图片.png

图片.png



访问正常。

图片.png

图片.png



进行代码修改,查看是否触发构建。

图片.png

构建正常

图片.png

手动调整流量比例,此时突破了 实例1-10的限制,会生成2个版本各1个实例。

图片.png


访问,返回新数据

图片.png


4,使用镜像部署


SAE使用已有的应用镜像创建应用。启动脚本和参数建议在构建镜像时候直接在dockerfile定义。

不过我们得先创建个镜像仓库,此处使用 阿里云的ACR。

图片.png


图片.png

仓库建好后,使用flow构建镜像


图片.png

构建完成,转储到ACR的个人仓库下。

图片.png



图片.png


创建应用的时候直接指定这个镜像版本。

图片.png


测试正常。

图片.png




监控和通知

SAE 默认使用的是Arms的基础监控,不需要单独设置,包括QPS、RT、HTTP状态码、实例数、CPU和内存使用率、磁盘空间等。一般情况已经够用了。

图片.png


有了监控我们需要配置事件通知,方便应用有重大变化时,及时感知和介入。

图片.png

图片.png


对实例进行了重启,但没有收到钉钉信息。不知道是不是还不支持2.0版本

图片.png





四,建议和思考


建议1-默认镜像选择可手动修改


建议不要使用灰选,建议可自定义修改,现在需要点击修改镜像 再跳转选择界面,相对复杂了。

图片.png


可以参考ACK的操作,简单明了。

图片.png



建议2-不支持codeup

源代码库 竟然不支持codeup,在阿里云生态,应该都需要支持codeup。

因为代码库公司使用不太会变更,涉及变更代价比较大,我们使用云效很久了,如果迁移到第三方,涉及授权和使用习惯还有一堆webhook要改,非常不方便。

图片.png





建议3-不支持VPC构建

不支持vpc网络拉取镜像,这个镜像是当前账户的CR个人仓库,SAE竟然不支持。

如果走公网,需要一定的公网流量成本和构建延迟。


图片.png



建议4-界面状态添加

建议 实例界面可以观察到更多信息。

比如 应用有没有启动,启动了多少个,当前访问量等。

每次要看应用状态,都需要一个个点进去,非常不方便。

图片.png




建议5-日志随时暴露

可以将构建日志暴露出来

图片.png

还有启动日志,也最好同步输出

图片.png


目前看启动成功后,没有实时同步展示启动日志。

日志管理中的日志,随着应用启动不会主动显示,有了访问后才有展示日志。

我等了10分钟都没有展示,感觉控制台日志就是随着HTTP访问后才被触发的,建议可以随启动应用实例 进行同时暴露。

图片.png

有请求才有日志展示。


图片.png




建议6-bug反馈

当前状态 已经完成第二步流量配置,启动状态等待中。

图片.png

但此时切到其它界面比如日志管理查看,返回到基础信息界面,还是有1-2s的初始化状态,显示创建中,2s后,再进入到启动应用实例的启动中状态。感觉前端又进行了重检。


图片.png





建议7-创建失败但进度消失

启动应用实例,一段时间后,创建进度 板块会自动消失,一般实例启动成功才会主动结束创建流程,结果没启动也突然消失了,用户不知所措。

应用实例没有启动成功,也查看不到日志,公网访问错误,应用整体状态也没有反馈透露。

建议,优化这块内容,最好把启动错误信息给暴露出来。然后启动状态也需要反馈给用户。上面这种情况很多人会很无助,因为实例没有启动,状态没有显示出来,但是从监控里看到访问记录却进来了。

图片.png


图片.png

图片.png

图片.png



查看有错误的访问记录

图片.png



建议8-降级限流

SAE前端如果没有 WAF 或者MSE-Higress 网关的话,建议增加降级限流 开关。

比如可以设置流控规则,当超过 20QPS的时候,会调用 AHAS服务进行行为管理,比如自定义返回页面,跳转指定页面等。

可以对IP、Header、Cookies等访问特征行为进行拦截,限流等。

还可以进行重写、跨域CORS、失败重试、认证、流量复制等场景




建议9-mvn构建自定义


建议构建 的时候能自定义 构建命令

mvn install 需要指定环境 生成对应的环境版本。

比如,我们编译为测试环境:

mvn clean install -U -Dmaven.test.skip=true -P testing -s settings.xml

我们编译为生产环境:

mvn clean install -U -Dmaven.test.skip=true -P production -s settings.xml

图片.png




建议10-流量检测


建议增加 流量检测。

类似ACK中,通过存活探针(Liveness)对实例进行存活检测,调用失败就重启pod

通过业务探针(Readiness)对实例进行业务接口检测,准备就绪,就打开流量访问。

目前,看SAE只有健康检查,没有区分存活和业务的功能,有时候应用是需要多个接口关联确认正常后才能打入流量访问。

图片.png




建议11-构建问题


使用代码构建的时候,不会清理现场,导致构建镜像包 比较大。

图片.png


源码和产物都在一起,镜像包有271MB,然而同样的代码,我自己本地打的应用包约70MB,相差较多。

没有预热的话,会增加一定冷启动时间。

图片.png

图片.png



缓存问题:



4分钟前已经删除这2个文件了,估计是缓存问题,重试了几次还是加载了。

图片.png


SAE 公测版,构建的时候貌似不会自动清理缓存,构建容器应该是没有重置。

只能 返回到实例基础信息界面,点击停止应用 ,启动应用。

图片.png

图片.png


重新启动应用后,git clone下来的代码就同步了,不存在这2个删除的文件了。

图片.png




建议12-灰度发布控制


建议灰度发布的时候,除了流量模式外,能增加一些请求头header或者Cookie等控制,

流量验证版本的时候不一定方便,范围控制也是问题,使用header就比较方便了,准确找到新版本,验证正常后,将流量打入新版本中,再安排老版本平滑下线。

图片.png



其次建议能编辑版本,增加说明,方便版本部署,不会混淆。

如果是代码部署的,能从git里获取commit信息那最好不过了。

图片.png



建议13-事件通知

建议新版本增加 事件通知功能。

比如,构建,部署,流量切换等重要操作有钉钉、邮件、webhook等通知功能。

对公测版本进行了实例的停止和启动测试,没有触发事件通知。


图片.png



图片.png

图片.png




建议14-白名单扩展CIDR


建议尽早支持CIDR地址,目前只支持IP非常不方便。比如前端代理使用的是WAF等有多个变动出口IP,加IP无法解决,如果关联的云产品只提供CIDR的白名单,不知道如何添加是好。

图片.png




建议15-自适应弹性


自适应弹性,没有 更多可操作指标,比如CPU、内存之类做HPA。

目前只有流量波动做弹性伸缩。

本例,使用AB压测了静态接口100次,和1000次。

压1000次后,才从实例1 弹到2个副本,度过5 分钟平稳期,后再缩回1 副本。

但部分场景 ,尤其是后端逻辑复杂的,长事务性请求的,更需要CPU和内存去体现访问压力,这时候如果不做扩容,服务基本就挂了。

图片.png


图片.png



建议16-不支持flow 构建部署

我们代码仓库是Codeup。

Flow可以使用gitee,也可以选择其它代码源,此处使用codeup,跟flow依赖性更好,也省去了授权问题。

云效是支持SAE构建和部署的,但配置后发现只支持老版本,不支持2.0公测版本。

图片.png

图片.png





五,总结

通过以上几种简单的构建部署方式,我们可以管中窥豹,大概了解SAE 2.0 公测版的应用接入方式,大家可以选择其中一种,或者几种,结合自己的业务进行使用。

个人是 建议java 技术栈使用 镜像部署,尤其是你们之前有一定容器使用经验的,更加应该使用镜像构建。比如之前在本地使用K8S,使用SAE后,可以平滑接入到阿里云Serverless PAAS平台。

因为环境已经在镜像包里定义好了,SAE 公测版本目前对环境识别上还不是特别好,不支持自定义编译参数,尤其还不支持云效接入。如果使用镜像部署,其实内部不变,更多的是换了个载体,进行微调适配即可。

如果使用源码自动构建 需要很多尝试,建议本地先做好编译和构建测试,再使用SAE。

图片.png


但总体看瑕不掩瑜,SAE2.0公测版本,使用上还是非常容易入门的,界面简单,创建和发布应用非常快,也支持按量付费。底层全部是容器标准构建,可以一键上云,提升运维研发效率。尤其是弹性伸缩功能,令人印象深刻。我在上面使用ab 压测了1000个请求,SAE瞬间按流量拉起了新的副本,5分钟后又缩容到最低可用副本,后面没有请求,直接缩容到 0 副本,没有业务流量就不需要付费,这对于一些营销热点等新兴业务以及一些创新创业的公司更加友好。

如果你有使用过K8S或者ACK等产品,那SAE2.0 也肯定受你青睐。SAE 是Serverless产品,全程云托管,免运维,弹性伸缩,支持白屏化操作,根据应用健康自动调配流量,可灰度、可观测和可回滚。中小企业可以极速构建云上微服务应用,通过弹性伸缩从容应对突发性流量洪流,灵活启停应用环境降低资源成本。

希望SAE能更加丰富产品功能,丰富S2I的构建能力,提升CICD能力,真正实现一键上云上容器,造福广大中小企业。

相关实践学习
SAE 极速部署专属AI证件照神器
本实验带您体验在SAE快速部署一套自己专用的AI 证件照神器。使用SAE部署应用,您无需长期租用服务器,SAE允许在不使用时实例缩容为零,不产生费用。
目录
相关文章
|
4月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
593 30
|
5月前
|
存储 人工智能 Serverless
函数计算进化之路:AI 应用运行时的状态剖析
AI应用正从“请求-响应”迈向“对话式智能体”,推动Serverless架构向“会话原生”演进。阿里云函数计算引领云上 AI 应用 Serverless 运行时技术创新,实现性能、隔离与成本平衡,开启Serverless AI新范式。
594 12
|
10月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
1112 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
10月前
|
人工智能 开发框架 安全
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
831 30
|
8月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
502 0
|
5月前
|
人工智能 运维 安全
聚焦 AI 应用基础设施,云栖大会 Serverless AI 全回顾
2025 年 9 月 26 日,为期三天的云栖大会在杭州云栖小镇圆满闭幕。随着大模型技术的飞速发展,我们正从云原生时代迈向一个全新的 AI 原生应用时代。为了解决企业在 AI 应用落地中面临的高成本、高复杂度和高风险等核心挑战,阿里云基于函数计算 FC 发布一系列重磅服务。本文将对云栖大会期间 Serverless+AI 基础设施相关内容进行全面总结。
|
5月前
|
运维 Kubernetes 测试技术
应用多、交付快,研发运维怎么管?看云效+SAE 如何一站式破局
通过在云效中创建 SAE 服务连接并关联集群,团队可将应用环境直接部署到 SAE,实现从代码提交、镜像构建到 SAE 部署的自动化流水线。该集成打通了研发与运维的壁垒,特别适用于应用数量多、团队规模大、交付节奏快的组织,助力企业实现敏捷、可靠的持续交付。
|
5月前
|
人工智能 Kubernetes 安全
重塑云上 AI 应用“运行时”,函数计算进化之路
回顾历史,电网的修建,深刻地改变了世界的经济地理和创新格局。今天,一个 AI 原生的云端运行时的进化,其意义也远不止于技术本身。这是一次设计哲学的升华:从“让应用适应平台”到“让平台主动理解和适应智能应用”的转变。当一个强大、易用、经济且安全的 AI 运行时成为像水电一样的基础设施时,它将极大地降低创新的门槛。一个独立的开发者、一个小型创业团队,将有能力去创造和部署世界级的 AI 应用。这才是技术平权的真谛,是激发全社会创新潜能的关键。
|
10月前
|
Kubernetes 数据可视化 Java
SAE 实现应用发布全过程可观测
本文聚焦阿里云Serverless应用引擎(SAE)用户在发布过程中的痛点,如“发布效率低、实例启动过程不透明”等问题。通过分步骤可视化解决方案,帮助用户明确问题、理解原因并最终解决,提升SAE平台使用体验。文章详细剖析了发布过程慢、信息透出不足及实例启动黑盒等痛点,并提出通过可观测、可解释和可优化的策略解决问题,同时展示了具体实现效果与后续优化规划。
595 68
|
运维 Serverless 应用服务中间件
Serverless 应用引擎产品使用合集之关于OSS映射目录的大小限制,如何可以跳过
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
Serverless 应用引擎产品使用合集之关于OSS映射目录的大小限制,如何可以跳过