云原生技术实践训练营:课时1:All on Serverless 化繁为简,一步上云
All on Serverless 化繁为简,一步上云
内容介绍
一、课程概述
二、计算的进化趋势
三、Serverless 概念解读
四、Serverless 应用引擎
五、Severless Devs
一、课程概述
非常高兴能和各位老师和同学一起进行 Serverless 相关技术的学习和实践。这一篇章的主题是 All on Serverless,即化繁为简,一步上云。Serverless 技术是未来阿里云十年的终极形态,现在会对 Serverless 技术本身以及 Serverless 在云产品上的典型代表做一个基本介绍。
本章节主要分成四个部分。第一部分主要是对 Serverless 的概念进行解读,解读完之后第二部分和第三部分会对 Serverless 云产品形态典型的两个产品——以函数形态作 Serverless;以应用形态作 Serverless的两个典型产品,一个是函数计算,另一个是 Serverless SAE 做一些介绍。最后会站在一个开发者的角度,通过 Serverless 工具量的介绍让大家了解如何快速的将应用能够部署到 Serverless 上,以及这样的架构对现在的应用架构有什么样的影响。
二、Serverles 概念解读
1、计算演进的趋势
首先看一个计算演进的趋势,其实是传统架构到 Serverless 架构的一个演变,核心的问题是主要矛盾和次要矛盾的关系。在构建现代业务系统的时候主要复杂度应该集中在业务代码编写和三方软件的编写,主要的复杂度集中在构建。但实际上在开发传统应用的时候大量的时间花费在非功能性的算例,包括基础设施的运维或者是业务的运维这种非核心的复杂度上。Serverless 架构相当于是从传统架构把这些非关键性或者是非核心矛盾的负载从开发者一侧移动到云平台一侧,使得开发者能够关注度核心复杂度或者核心业务上,只关注业务的代码编写。
从整个算例的发展过程也可以看到,从最开始的物理机到虚拟化之后的云主机再到现在已经被广泛使用落地的容器以及所认为的 Serverless 是未来十年的一个终极计算形态。对于开发者来说算例阶段的演进会使其越来越关注于业务逻辑,而愈发不关注于底层实践,越来越低的人力成本以及资源成本。
Serverless 概念的提出并不真的是 Server 消失,其对用户强调的是 no server。整个的开发者关注于业务而不在于关注基础设施,基础设施的复杂度移交给云产商进行解决。
2、Serverless 发展历程
从最早的2012年的 Iron.io 的副总裁 Ken 首次提出 Serverless 的概念,2014年全球领先的 AWS 第一次发布的公有云的商业化的 FaaS 产品 Lambda。2017年国内的厂商跟进,包括阿里云推出的函数计算 FC。2019年推出 SAE 的产品,一直到2021年。其实可以看到 Serverless 特别是在2021年是典型的前期的孵化阶段,处于一个即将大规模落地的阶段。
3、核心产品全面 Severless 化
在2022年的云栖大会上发布的整个阿里云的核心产品全面 Serverless 化,全面 Serverless 化背后的思考其实就是“从上云到用云,从资源到服务”这样的一个思维状态的转变。最早的企业和开发者其实是上云,上云会购买 ECS 或者是 VM 去使用,但购买完之后的架构仍然是传统的架构。当业务从零一直扩展到一万甚至是百万用户的时候会发现还是需要处理非常多的运维复杂度或非核心的一些关注焦点。希望通过 Serverless 这样的产品服务能够从上云转到用云,从资源的层面上能够真正为各位开发者提供像水像煤像电这种即使即用的服务。
围绕着背后的思考整个阿里云核心的产品 Serverless 其实就是 FC以函数为代表, SAE 以应用为代表, ASK 以容器为代表的三种 Serverless 核心的应用域。配套包括存储,包括数据,包括数据库、大数据以及人工智能全部都会 Serverless 化。
Serverless 化对于原有架构的改变会从原有的集中式研发企业应用架构,比如20年前可能开发一个架构就是单体的架构,然后到分布式研发互联网分布式架构,也就是十年前可能是淘宝,天猫使用微服务的架构,然后一直到真正上云,用组装式研发 Serverless 架构。
核心点就是无论是2万的用户还是2000万的用户,当把一个应用构建在 Serverless 架构上的时候,会发现都能够自适应的伸缩,秒级的自动扩容和峰级的自动缩容。
本质是开发者的核心是用来构建业务,实现业务价值,而不是关注非复杂性的复杂度。如果用函数计算产品的话,基本的日调用次数是200亿次。
在双十一的话有百万的 QPS 洪峰,整个的函数计算 Serverless 形态,在国内的话包括在force的一年的评测,特别是在前沿评测,也是与 AWS 同时处于第一位的,因为它一个是业务层面上一个是产品层面上。
刚才介绍的就是围绕着中间的计算态,其实就是以函数为代表 FC,以应用为代表 SAE,以容器为代表 ASK,它的周边可以理解为就是Serverless 周边的所有的相关的存储数据,包括人工智能相关的产品全部存储其中。
开发者如何能够把好的云产品使用其实就是通过 Serverless 的工具链快速的把应用进行交付,然后通过 Serverless 应用中心,其中有非常多的应用模板,然后帮助快速构建运用以及相应的 Serverless 解决方案。如果面向千行百业,比如面向电商,面向交通,面向物流,去构建相应的应用。
4、Severless 应用中心:让 Severless 更易开发
计算三款产品,然后云服务全部 Serverless 化,中间的话是工具链,然后通过 ALL on Serverless 解决方案场景以及去构建 Serverless 应用,然后去完成整个的 Serverless 从底层的云产品到上层业务的构建。
Serverless 应用中心其实可以帮助开发者的话提供非常多的应用场景的应用模板,在实践的时候 AIDC 可以体会到随便点一下就可以快速的去构建一个画图的应用,包括有一些企业级的通容特性,包括多环境会帮助开发者去把这个业务的测试环境、愈发环境,一直到上线最后的生产环境去进行有效的隔离,包括全生命周期的的管理。就是从代码看,一直到构建完应用,然后到上线以及最后的整个开源开放、生态建设的理念。
5、千行百业背后的 Severless 力量
其实 Serverless 发展到现在的话就是阿里云 Serverless 始于2017年,到2023年的话,其实已经在千行百业去开展。典型的应用比如在护渔和教育这个行业,能够看到特别是在线教育行业有很多直播课,各位同学可能也上过直播课,上完直播课结束之后会有录制点播回放。很多厂商会去用 Serverless 做这种在线的直播课的录课;在游戏中,也能看到一些知名的厂商用 Serverless 去做战斗结算、打包分发这样的能力;然后在人工智能中看到有一些 VR 的企业以及国外的厂商,会利用 Serverless 去部署人工智能的influence 的一个推理平台,以及日本降旗这样的一个推理的服务。然后在新零售和电商的话,可以看到特别是在秒杀和大促这种不可预知的流量是非常适合 Serverless 形态的,因为特别是这种不可预知的流量的时候,其实没有办法作为开发者准确的去评估机器规模。
举例说明:当没有办法预知明天的规模是100万 QPS 还是1000万QPS 的时候,其实没有办法有效的去做机器的储备,如果按照峰值去储备的话,会发现花了非常多的钱,但是储备了非常多的机器。但是实际的资源利用率却非常低。
如果没有Serverless 的话,实际上可以做到一个按需使用、按需付费,然后极致的一个弹性去保证业务,然后包括在高德特别是刚刚过去的五一长假,高德的高峰整个包括地图服务都是构建在 Serverless 上,最后是能源。
三、函数计算(FC)
1、函数计算(FC)是什么
现在简单就是进入第二个章节,然后开始去介绍一下以函数为代表的 Serverless 的一种形态,这种产品就是 FC 还是计算。函数计算 FC 到底是什么这个其实很重要,我觉得还是一个以开发者的视角去讲这个事情,会让大家更容易去理解。当客户的业务可能是 AI 的业务,也可能是新零售,新金融或者说在线或者互联网或者传统的产业。其实是希望开发者能够聚焦于业务的自身,当完成业务自身的开发之后,通过把代码交付或者通过把代码打到镜像。镜像交付的方式交付到函数计算。
首先函数计算会提供一个弹性高可用的能力,也就是在弹性这个层面上的话,可以理解当用户的一个请求打过来的时候,可以在百毫秒级弹出一个计算实例与被用户的请求进行服务。在用户没有请求之后,这个实例就会要释放掉,用户真正计费是在请求处理的阶段去进行计费,然后同时提供高可用,会提供3az的一个高可用的计算服务。第二点的话就是高效敏锐,其实就是函数计算平台提供了一个完整的日志可观测和告警的能力,能够让开发者很方便很健壮的去运维自己的业务。
最后的话只要是按需低成本,函数计算的整个的计费力度的话,大概是所有云产品上最细的一个力度,CPU 的话是能到毫秒,然后GPU的话是到秒,使用的一秒就花一秒的钱,使用的一毫秒就花一毫秒的钱。
Serverless 中会有两个核心,就是函数计算会围绕一个 Serverless工作流去做一个相应的对函数计算的编排,然后在上面的话会有一个阿里云生态能力集成。用户可以向 oss 上传的一个视频文件,函数计算就可以得到这个上传的文件,然后去进行项目的处理。
2、函数计算 FC 是云产品的连接器
其实可以认为函数计算有一个非常明确的定位,函数计算加上阿里云的所有的产品,能够形成一个新生态,也就是说当开发者把业务代码步入到函数计算的时候,函数计算有能力通过 SDK 和 API 的能力去调用所有的云服务。这个是大家都能做到的,但是反过来还有一点可能不是每个人都能做到,就是所有的云服务能够去驱动或 call back 去回调函数计算,这个就是常说的函数计算是一个事件驱动的架构。对此还是举几个例子会比较简单一点。比如说像刚才举的oss上传文件或删除一个文件,或者说 Kafka 投递一个消息,对应函数计算等一个真正的函数,拿取函数后后面的计算资源,然后去进行相应的处理。这种架构其实会免去用户很多的次要复杂度的相应的工作,使得用户专注于自己的业务开发上。
3、函数计算 FC 应用场景
一共有六种函数计算的典型的应用场景,分别给大家去介绍一下。第一种的话其实是在 HTTP,这种用函数计算可以非常快的构建 API Surging。比如前端有一个H5的小程序,后面会调用一个 API Surging 接口去查天气预报,可以非常快的在函数计算上去构建一个 API Surging。
第二个就是音视频、图片和文本处理场景,比如音视频录制和音视频转码,图片的处理。文件在上传到云存储的时候,函数计算会对文件进行处理。
第三个场景就是 ETL 场景,比较常见的是多个函数的 work follow 的编排,涉及到数据的清洗以及数据的处理包括数据的 MapReduce,这也是一个非常典型的场景。
第四个就是游戏,游戏现在非常多的就是打包、游戏结算、战斗结算这样的能力。第五个就是一个新型的场景,就是用 Serverless 去做 AI 和 GPU 的 influence,AI 在 influence 的场景下其实是无状态的,无状态特别适合用 Serverless 的场景去进行快速的显示。在这样的场景下函数计算提供了在所有产品中最细密度的 GPU 的切分能力,可以提供1GB 的显存以及对应算例的推演能力,来降低所有开发者的是使用成本。现在有一个 AI 处理好的模型,如果是去买一台完整的 GPU ECS,这个成本就很贵。最后一个场景就是周期性的任务,对于用户上传的图片并对这些图片进行一个扫描。
四、Serverless 应用引擎
1、SAE 是什么
SAE 和函数计算会有一定的差异,也会有一些非常相似的地方,SAE
可以看作是微服务领域最佳的 Serverless 的实践,开发者使用的是 Spring,Cloud 以及 Dubbo 等主流的微服务的框架,使用 SAE 有一个好处就是可以代码零改动的获得 Serverless 的能力,包括 Nascos 的配置,一系列的服务发现;包括存储挂载,限流降级,可观测,这些能力都会具备。另外的确就是低门槛,对于使用者来讲不需要去理解,还是关注于自身的业务就行。另外就是一个成本最优效率最高的方案,其中讲解起来还是比较空洞的,在下一个章节对 SAE 有一个更深层次的理解。
2、SAE 应用场景
首先就是低门槛的微服务的架构转型,传统应用的代码能改造就可以使用 SA;第二就是低门槛的情况,如果在语音上第一次配置 KPS 的集群,门槛还是非常高的,取决于对整个云产品的网络对韵产品的存储及其整个周边对 KPS 本身实践的理解。当使用 SAE 的时候,这些概念全部都会被使用,会提供一个 KPS 的最佳实践,同时 SAE 也会有流量潮汐,流量脉冲这种算例的动态的弹性的支撑,包括按照弹性策略和指标策略。当有一个脉冲峰值的时候,能够很快的进行一个弹出。在业界其实是没有流量的,会很快进行缩流,来到算例和成本的最优解,这个解法其实也会提升内部系统的资源利用率,SAE 同时提供了周期性的任务,最重要的是 SAE 可以帮助企业快速上云。
开发者工具链
五、Severless Devs
1、Serverless 工具链接与 Serverless Devs
上面是开发者,下面是云服务,因为工具链能够少理解或者是不理解云的复杂的,能够快速地把应用布置在云上,最上面一层有 BFF 和 SSR 这样的应用,然后通过 Server Devs 包括在开发、测试、部署和监控,最终部署到云服务。对云服务是一个整体的编排,能够让应用很好地排在云服务上。
2、从生命周期管理到效能提升
传统结构其实就是一个人的肉身,自己需要运维自身的计算集群。Serverless 架构由 Serverless 类型的云产品并在其帮助下把传统的非核心价值的工作解决掉,包括集群管理和弹性。最后是工具链下的 Serverless 架构,让开发者更少的去理解云产品的复杂度,更快速地去进行部署,其中包括从一个应用的初始化到一个应用的开发到一个应用的调式。特别是在云上调试的时候由本地的调试也有线上的调试。这种调试的便利性会给开发带来便捷性,包括多环境的部署以及到最后的线上的运维。
在过去的十年容器技术和 KPS 技术是一个从无到有,从前期的孵化到现在广泛使用的过程。Serverless 是认为在下一个十年越过技术孵化器将会大规模落地的过程。整个的云产品包括阿里云包括整个行业全部 on Serverless,也希望从专用到通用,能够帮助开发者从复杂到简单。