从“预见”到“遇见” — SAE引领应用步入Serverless全托管新时代

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 随着云原生时代的到来,企业应用也开始面向云进行容器化、微服务化的构建。过程中产生了进阶式的变化,主要是应用的开发设计、应用的交付以及线上运维的变化。

从“预见”到“遇见”

SAE引领应用步入Serverless全托管新时代

——黛忻

阿里云SAE产品经理

image.png

近年来,随着互联网的普及,企业数字化发展越来越快,技术架构也经历了几度更迭。尤其是在线业务部分,企业最初的需求是将业务尽可能在线化,于是产生了早期的单体应用。即便今天,如果有想法要快速落地、试错,单体应用依然是最为推荐的方式。


随着在线业务复杂性的增加和访问的增长,逐渐演进到分布式应用,前端加上负载均衡,后端引入消息缓存等中间件,数据库开始分库分表,才最终得以应对流量的增加。


随着云原生时代的到来,企业应用也开始面向云进行容器化、微服务化的构建。过程中产生了进阶式的变化,主要是应用的开发设计、应用的交付以及线上运维的变化。


服务架构的演进为开发者带来了便利,同时也带来了一定的复杂度。新技术上手门槛较高,容器和微服务是两个典型的拦路虎。在框架选型、服务治理 k8s 运维方面缺少经验,短时内也无法储备专业人员。此外,即便微服务化和容器化之后,企业依然需要关注服务器的配置,人工评估容量和服务器的运维工作,同时还会面临高性能和稳定性的挑战,因此无法享受云带来的最大便利。

image.png

Serverless 的出现带来了跨越式的变革,为企业数字化转型带来了更多机遇。在此模式下,服务器和操作系统的管理部署、运维、资源分配和缩容能力等全部由云计算厂商提供,计算能力真正像水电煤一样被便捷地提供。它能够将原先在传统应用环境中的通用能力转化成云服务,客户可以低成本、高效力地触达。


Serverless最重要的价值可以归纳为三点:


通过基础设施解耦、极致的弹性和故障自动处理等提供永远在线的服务,无须担心宕机。


②  通过高效的研发框架以及DevOps 新形态,做到秒级市场响应。


③  抹平了头部互联网公司与传统企业之间技术竞争力的代差,让传统企业面临大量技术升级和重构时,能够从容不迫,不会出现人才缺口,甚至能够弯道超车。


   企业在上云过程中,如何接入 Serverless


   阿里云提供了一款继 FaaS 形态之外的面向应用的 Serverless 产品——Serverless 应用引擎,简称SAE作为业界首款面向应用的Serverless产品,它提供了全托管、免运维、高弹性的使用体验,能够让应用上云更加开箱即用,支持开源的微服务、定时框架以及 web 应用全托管,并提供了开源侧的增强和企业级的特性。

 image.png

上图为产品的功能架构。


SAE 的底座是基于阿里云的沙箱容器 2.0 IaaS 的基础资源层,提供了平台托管的开发集群,帮助用户屏蔽了IaaS 和复杂的 k8s 运维。


在此之上,SAE 提供了三大核心模块:


应用管理提供了整个应用生命周期的管理和多种发布策略,还具备冷启动加速等先进的技术竞争力。


②  在开源Spring CloudDubbo 基础之上,提供了阿里巴巴近十年来的微服务最佳实践。在开源基础上,额外提供了微服务的无损上下线、限流降级、全链路灰度、服务鉴权等高级特性。


③  提供了运维配套和企业级增强等能力,比如自动弹性、权限隔离等。


基于以上核心能力,无论是Spring Cloud 应用,还是批处理类型的应用,或是 PHP 等多语言的应用,都可以直接通过 war包、jar包、php zip包或 Docker 镜像等方式直接部署到 SAE 上,且能够享受 SaaS 类服务集成的体验。


此外,在开发者工具方面也做了良好的集成,比如能够无缝对接JenkinsTerraformServerless Devs 等开发者工具,为开发者提供非常好的体验。


SAE 的核心竞争力主要包括四大部分:


①   零代码改造。无论是微服务应用还是单体应用,或是开源的定时任务框架,都可以无缝迁移到 SAE同时降低了用户使用 k8s 的门槛,支持代码包部署。


②    弹性效率。能够提供 15 秒的极致弹性效率,让应用端到端地快速扩容,应对突发流量。


③    降本提效。基于 SAE 一键启停的能力,能够实现多套环境按需启停,降本且提效。


④    启动效率。 SAE 联合 Dragonwell突破了 Java 冷启动瓶颈,使得 Java 冷启动的效率提升了40%


因此,可以说SAE 覆盖了应用上云的完整场景,让企业上云更加开箱即用。

image.png

Serverless 微服务作为当今业界非常火热的名词,较为广泛的定义为:CI/CD 流水线,加上内置的高效能研发框架,再加上屏蔽基础 IaaS 层或 k8s 底座,并且提供了端到端的可观测能力,以及一些自动弹性和流量治理服务。


而阿里云的 SAE+MSE 可以称作 Serverless 服务的最佳实践。基于SAE ,以应用为中心,在 SAE 的应用启动过程中内置 MSEagent ,即提供了一整套微服务的能力。加之其底层天然屏蔽了 k8s 底座,提供了一套无服务器的架构,因此可以将 SAE+MSE看作 Serverless 的最佳实践。同时能够做到 100% 拥抱开源并回馈开源,因为 MSE 团队做了大量开源步道以及在开源基础上做了非常多增强。


基于这套 Serverless 微服务的最佳实践,能够使开发效率提升70%,成本降低60%

image.png

SAE 的弹性能力不同于 ECS k8s 的弹性,它的弹性指标更丰富,弹性策略更灵活,主要提供了三种弹性策略。


基于基础监控指标和业务监控指标出发的水平伸缩:比如在开源的开发基础之上额外增加了面向业务层的弹性能力,比如QPSRTTCP的连接数等,基于这些业务指标来精准地实现弹性,整体弹性容量的预估会更加精确。一般适用于有突发流量或点击脉冲的场景。


②  基于定时时间段触发的水平伸缩:可以设置何时开始扩/缩容,扩/缩容到多少实例。同时,SAE 提供了白屏化的操作,相比于自己使用开源的 K8S 装一个 HPA Controller 更简单。


③  基于定时弹性和指标弹性混用的弹性策略(业界首款):很多客户的业务都有潮汐特性,且会伴随流量突发,比如视频直播等场景。因此,我们提供个 了基于指标弹性做兜底,再针对固定时间段的流量峰值叠加定时弹性作为增强的方案,既保证整个弹性的灵活度,又极大满足了用户使用体验,只需要配置一次规则即可满足所有需求。

image.png

电商类、新零售、互娱行业等往往会出现一些不可预期的突发流量。以往一般通过提前预估峰值,按照峰值保留 ECS 资源来应对,但时常会出现容量预估不准,导致资源浪费或不足的情况,更重要的是会影响系统的SLA


采用压测工具加SAE 的方案之后,可以根据压测结果精准地设置弹性阈值,与ARMS 的实时监控指标做对比,系统会自动进行扩缩容操作,无须再做容量的规划,极大节省了硬件成本,实现了秒级的弹性效率,得以轻松应对峰值大考。在紧急情况下,还能够通过限流降级的杀手锏来避免应用雪崩。

image.png

SAE 提供了高效闭环的 DevOps 体系,它完整地覆盖了从开发态到部署态到运维态整个闭环过程。它提供了三种企业级 CI/CD 持续集成解决方案:


无缝对接开源 CI/CD 工具 Jenkins:通过内置的 Maven 插件,可以完成从source code 到构建到整个部署的完整过程。它能够支持war包、jar包和镜像部署等几种模式。


②  云上功能最全的 CI/CD 方案:它与 Jenkins 的区别在于,可以将代码直接托管到云上,由云效来完成代码托管。还能够做到代码侧的安全管理,可以定制流水线,提供完整一致的构建运行的环境。它的功能比较齐全,一般适用于中型规模的企业。


③  最轻量、最易用的 CI/CD 方案:通过镜像仓库和阿里云的容器镜像服务来完成SAE 的部署。它的轻量在于通过 webhook 将代码仓库打通,在容器镜像服务上定制一些构建镜像的规则和触发器的规则,即可完成在代码提交时自动构建和部署的过程。如果使用企业级的容器镜像服务,它还能实现镜像的安全扫描、防漏洞、全球多域分发等能力。

image.png

此外,还可以将SAE ECS 混部,将 ECS 作为常态保有的部分,SAE 作为弹性资源池,混部方案主要适用于两种场景:


场景一:从 ECS 陆续迁移到 SAE 的中间过渡方案,能够提升迁移过程的稳定性。


场景二:将SAE 完全作为弹性资源池作备用。此方案需要保证同个应用的 ECS 实例和SAE 实例都能挂载到同一 sob 后端,并设置好权重比例。如果是微服务应用,还需注册到同一个注册中心。此外,客户也需要做一些适配。


若要复用客户自建的发布系统,需要保证每次发版时 SAE 的实例和 ECS 的实例版本一致;若复用客户自建的监控系统,需要将 SAE 的监控数据和 ECS 的监控数据整合在一起。流量高峰到达时,弹性模块会将弹性实例弹到 SAE 上,极大提升了弹性扩容效率,也降低了成本。


SAE 拥有三个重磅新特性:

1.  支持 Terraform

image.png

作为国内外大客户首选的云上工具,Terraform 的价值在于基础设施及代码,它能够自动配置基础设施,帮助企业以更高速度、更低风险、更低成本实现云应用程序的开发、部署和扩展,极大提高了自动化运维的效率。


这一点在 SAE 落地过程中也得到了非常好的体现。在没有接入Terraform 之前,开发人员需要通过控制台或者云上来部署 SAE不仅需要理解每个 Open API 的定义,还需要清晰地知道多个SAE Open API 之间是否存在互斥关系,是否有串行调用的行为,极易出现线上风险。


而接入Terraform 之后,开发人员无须理解 API 代码的形式,只需将所要管理的资源定义在模板之中即可,操作 SAE 的资源更加安全,对接 CI/CD 以及接到 GitOps 也会更加简单。更重要的是,它还提供了资源编排能力,能够一键式部署 SAE 以及依赖的其他资源,从 0 1 来完成建站,效率大幅提升。


因此,SAE 拥抱了 Terraform 生态,无疑为开发者带来极大的便利。


2.  提供了 PHP 的一站式应用托管。

image.png

PHP 作为最流行的服务器编程语言,牢牢占据榜首位置近十年,全球 82.8% 的网站都是基于 PHP 来开发。


大多数开发者通过市面上常见服务器的运维面板来图形化地运维管控应用。但这些面板存在不少痛点:


第一,只能支持单机的运维,缺少集群的管理,需要逐台操作运维;第二,缺少应用侧的监控能力,应用上云需要自研 APM ;第三,流量突增时,弹性效率无法保证;第四,某些 web 应用的静态文件比较大且更新频繁,如果通过ECS 全量部署,需要耗费1-2分钟,前端体验非常差。


针对以上痛点,SAE 提供了免运维、高弹性、无缝集成 APM 监控的 PHP 全托管服务。在框架方面, SAE 支持了 LaravelThinkPHPWsoole 等流行的框架;在运行环境方面,支持在线应用架构的LNMP 架构,默认提供了PHP+FPM+Ngins 的配置。此外,虽然 SAE 的底座是 K8s 但在产品侧支持 Docker 镜像和 PHP zip包的部署,大大降低了用户的使用门槛。


SAE PHP 应用托管功能矩阵也颇为丰富,比如开发调试类的上传/下载、内置 Xdebug 等,运营时的弹性伸缩、APM 等能力,还能够通过NAS/OSS独立管理静态文件和目录。有了上述能力,可以非常好地支撑 PHP 的几个典型场景,比如静态站点的部署、远程调试、多站点部署,比如存量的ECS 或者宝塔面板的应用往SAE 迁移。


3.  SAE Job正式邀测。


SAE Job功能主要针对以下几个方面的痛点:


异步任务和在线业务通常采用混部的方式,资源共用,稳定性差,SLA 得不到保证。


②  成本偏高,资源利用率低,任务结束无法立即释放资源。


③  任务失败后需要人工重启,运维效率低,且企业需要为此付出非常多人力资源。


④  缺少可观测性和报警,对于任务的失败与成功缺少可视化的明细,失败后无法及时予以报警通知。


基于以上痛点,SAE 提供了全托管、免运维的任务处理平台,能够使开源的 XXL job 等任务框架0改造迁移,且深度地融合了微服务的生态,兼容开源的k8s

image.png

上图为 SAE Job 的功能架构图,底座依然是基于平台提供的全托版k8s,帮助用户屏蔽IaaS k8s 的运维。在此之上提供了任务管理界面,其中包含大量功能矩阵,提供了任务模板的能力以及任务启停的能力,能够详细记录每个任务执行的状态,且在开源 XXL job 的基础之上提供了一些高级特性,比如分片、监控报警、支持单机广播并行计算,能够支持任务幂等以及失败重试等。


上述丰富的任务管理界面,可以通过 war 包、jar 包或 Docker 镜像将任务部署到 SAE 上。能够支持几种调用方式,比如通过 Open API SDK的方式,或在Event Bridge 侧编辑触发器来直接部署到SAE


SAE Job 适用于以下几类场景:基于时间驱动的定时任务,比如整点发优惠券、更新收益;批量数据处理、按月统计报表等实时性要求不高的场景;异步任务解耦场景,比如更新一些活动的状态,异步实现离线查询,与当前的业务逻辑做解耦。


SAE Job 与开源 XXL job 相比,较大的优势在于能够深度融合微服务生态。有些任务在启动过程中需要依赖一些微服务,比如查询产品中心,更新产品的变化,再投递到第三方,过程中与微服务有比较多交互,而 SAE 提供了统一的入口和统一的界面,使得客户微服务与 job 调用的诉求得到了非常好的满足。


综上,SAE job 对于客户的价值能够归结于以下4 点:


高可用:任务运行失败后能够自动重试,得到自愈。


②  免运维:基于 Serverless 架构,提供了免运维和高弹性的特性。


③  节省成本。


④  开源增强特性:比如与微服务生态的集成、任务分片等。


SAE 作为面向应用的Serverless产品,体现了云原生先进技术的完美融合,将容器化微服务和Serverless 最佳实践完美融合在一起,提供了开源微服务、开源的任务框架和单体应用的Serverless 全托管,能够实现“来了就用,功能齐全,用完即走”的效果。

 

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
19天前
|
SQL 分布式计算 Serverless
EMR Serverless Spark:一站式全托管湖仓分析利器
本文根据2024云栖大会阿里云 EMR 团队负责人李钰(绝顶) 演讲实录整理而成
101 2
|
1月前
|
存储 Serverless API
打造你的专属语音助手,基于函数计算托管 CosyVoice 语音模型
今天分享一下,基于阿里云函数计算 FC 以及 CAP(云应用开发平台),极速托管专属的 CosyVoice 应用。并且我们提供了 API 调用方案以及镜像构建源码方便您根据自己的业务任意 DIY。
213 10
|
1月前
|
存储 Serverless API
打造你的专属语音助手,基于函数计算托管 CosyVoice 语音模型
打造你的专属语音助手,基于函数计算托管 CosyVoice 语音模型
|
2月前
|
缓存 前端开发 JavaScript
|
4月前
|
弹性计算 分布式计算 Serverless
全托管一站式大规模数据处理和分析Serverless平台 | EMR Serverless Spark 评测
【7月更文挑战第6天】全托管一站式大规模数据处理和分析Serverless平台 | EMR Serverless Spark 评测
23706 42
|
3月前
|
机器学习/深度学习 Cloud Native Serverless
Serverless 架构问题之CNCF基金会托管的CloudEvents项目内容如何解决
Serverless 架构问题之CNCF基金会托管的CloudEvents项目内容如何解决
34 0
|
3月前
|
监控 API 开发者
SAE的秘密武器:揭秘如何让您的应用瞬间飞跃至最新镜像,永远领跑部署竞赛!
【8月更文挑战第7天】在现代软件开发中,自动化部署至关重要。Serverless应用引擎(SAE)作为云原生服务,简化了无服务器应用的部署与管理。通过设置SAE应用更新策略为“总是使用最新镜像”,并集成CI/CD流程自动触发部署,确保应用运行最新版本。此外,优化部署参数及配置监控和日志服务也必不可少。利用SAE自动部署最新镜像不仅提升了开发效率,还增强了应用的稳定性和安全性。随着云计算的发展,SAE等服务将助力开发者更专注业务创新。
53 0
|
4月前
|
运维 监控 Serverless
Serverless 应用引擎使用问题之SAE怎么设置超时时间
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
缓存 运维 监控
Serverless 应用引擎产品使用合集之在使用函数计算 FC 部署 stable-diffusion 应用时,选了 tagger 扩展插件却拿不到提示词,还报错“Error”,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
运维 Kubernetes Java
Serverless 应用引擎产品使用合集之如何设置能让应用定时启停
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。

热门文章

最新文章

相关产品

  • 函数计算
  • Serverless 应用引擎