简介:越来越多的云产品都会向全托管、Serverless 形态演进。当云的产品体系 Serverless 化达到一个临界值,通过函数计算这样的 Serverless 计算服务结合其他 Serverless 形态的云服务,能够完整的实现整个应用时,Serverless 就会变成了一个确定的技术趋势,并越来越流行。

作者 | 不瞋

刚刚过去的 2021 年天猫双 11,阿里云函数计算与阿里巴巴运维体系全面实现标准化对接,打通研发的最后一公里,首次实现了业务全链路“ FaaS + BaaS ”的 Serverless 体系化研发,覆盖淘特、淘系、阿里妈妈、1688、高德、飞猪等业务场景,支撑场景数量同比增加 2 倍,峰值流量总数同比增加 3 倍,实现了百万 QPS 的突破,人效提升 40%。

前段时间,我与 InfoQ 大咖说合作了一期直播,跟开发者们聊了聊我眼中的 Serverless。大家对于 Serverless 热情很高,但是顾虑仍然存在,这也是我写作本文的原因。作为这一技术浪潮的见证者,我想跟大家一起思考 Serverless 诞生的原因,阿里云 Serverless 技术和产品的演进历程,以及我对 Serverless 未来趋势的判断。

01 云产品体系的 Serverless 化推动技术演进

虽然 Serverless 对很多人来说,仍然比较新鲜,但其实 Serverless 这种形态早已有之。

2010 年我刚加入阿里云,参与飞天操作系统研发,飞天操作系统最初是通过管理数千台的机器来执行大数据处理的。用户的编程界面是 MapReduce 任务,通过 SQL 语句等来处理海量数据,这就是早期的 Serverless 形态。

阿里云的第一个云服务对象存储 OSS,亚马逊云科技的第一个云服务 S3,它们其实也都是 Serverless 形态的存储服务。用户不需要关心数据如何被分片存储到不同的服务器上来实现负载均衡,也不需要考虑如何做到在服务器宕机或者交换机故障时,保证数据的高可靠性和高可用性,他们只需要用简单的 API 就可以实现海量数据的可靠存储。他们都屏蔽了 Server 的复杂度,让用户有一个非常简洁的 Serverless 体验,这些都是 Serverless 形态。

2012 年,Serverless 概念被首次提出,到亚马逊云科技正式商用 Lambda,Serverless 开始流行并逐渐走红。近 10 年时间,这样的演进过程并不偶然、也非一蹴而就,反而是带着宿命般的必然性,其背后原因是云的产品体系一直都在向 Serverless 化演进。

无论是阿里云、Azure,还是亚马逊云科技,绝大多数新产品都是全托管的 Serverless 形态。时至今日,公有云的用户越来越习惯使用全托管的服务,除了省力以外,对很多用户来说,最重要的是能更高效的解决业务问题。如果全托管的服务能带来更好的性能、更好的稳定性、更少的运维代价,为什么不用呢?

按照这些逻辑,越来越多的云产品都会向全托管、Serverless 形态演进。当云的产品体系 Serverless 化达到一个临界值,通过函数计算这样的 Serverless 计算服务结合其他 Serverless 形态的云服务,能够完整的实现整个应用时,Serverless 就会变成了一个确定的技术趋势,并越来越流行。

02 Serverless 走出幻想破灭的低谷

2017 到 2018 年,我们都有体感 Serverless 热度达到了一个高峰,但和很多新兴技术一样,从概念大讨论到企业落地应用,都会经历幻想破灭的低谷。从 Serverless 这十年的发展来看,无论是学术界还是工业界,都认为这是一项颠覆式的技术,在提升研发效率、资源效率上有着巨大的潜力。但作为一个新概念和新的计算形态,Serverless 最主要的挑战是对开发者心智的改变,在工具链、编程模型、应用架构上,都需要开发者转换思路。



今天,这些问题正在被快速的、持续的解决。

Serverless 正处于稳步上升期,我们能看到业界最主要的云服务商在不断推出不同形态的 Serverless 计算服务,比如 Google Cloud Run,亚马逊云科技的 App Runner,阿里云的 Serverless 应用引擎 SAE。另外,阿里云的函数计算这类最经典的 Serverless 计算服务,也正变得越来越通用,对应用的侵入越来越少。

无论在阿里巴巴上还是在阿里云上,开发者对 Serverless 的认识越来越客观、务实,并在越来越多的场景中引入 Serverless 技术和相关的工具链,驱动 Serverless 生态愈加成熟。

03 给开发者安全感,是最重要的事

我们经历了一个从 Serverless 非常受关注到落地困难,再到 Serverless 被广泛使用的全过程。这个过程中也确实遇到了不少挑战,解决 Serverless 落地困难的关键,在于给开发者安全感。对开发者来说,Serverless 把更多的技术层面的东西交给了云厂商去做,所以怎么给他们安全感,让他们无负担使用是非常关键的,也是他们做技术选型时最关注的点。

开发者这种安全感的担忧主要来自于两方面:

  • 云厂商锁定问题:Serverless 让应用更深度的依赖于云服务商的能力,如何避免 vendor lock-in,从一个云迁移到另一个云,会有哪些障碍?
  • 控制黑盒问题:云厂商接管了应用的运行平台,怎么能提供给用户控制力?比如用户怎么能看到足够丰富的指标来优化应用或者掌控应用运行的情况?云平台出问题了怎么办?出现问题时,用户有什么手段能快速查明问题,恢复服务?

对于供应商锁定的担忧。阿里云是以公有云、阿里集团、开源三位一体的方式打造 Serverless 产品,坚定的拥抱开源开放。阿里云函数计算的 Runtime 运行时采用无侵入的标准的 http-server 协议,用户使用 Golang 或者 PHP 写的 Web server 放上来就可以跟 Serverless 平台去交互。

另外函数计算的可观测能力基于开源开放的 OpenTelemetry、OpenTracing 等标准。阿里云推出的 Serverless Devs 工具链也是开源开放的,提供了多个云厂商的 Serverless 应用部署的能力。承载阿里云事件生态的 EventBridge 也是采用 CNCF CloudEvents 开放标准。这些都是希望开发者能够通过开源开放的方式来使用产品,未来,我们会积极推进 Serverless 领域的标准。

对于控制黑盒问题,最主要的是要做好产品设计的平衡,既能给开发者控制力,又能减小开发者的复杂度。阿里云函数计算把给开发者安全感看作最重要的事情,我们在可观测性上是业界首个,也是目前唯一一个透出了实例级别的指标,让用户能更容易调优 Serverless 应用。我们透出了非常细粒度的资源计量数据,让用户能更容易判断费用是否符合预期。

在未来,我们会将系统事件和状态以合适的方式透出给开发者,让他们能更容易预期系统的行为。我们也会在问题诊断等方面开放更多的能力,去贴合开发者已有的开发习惯,让他们能更平滑的使用 Serverless。

04 正在全面落地的 Serverless

在应用场景上来看,Serverless 不再仅仅是小程序,还有电商大促、音视频转码、AI 算法服务、游戏应用包分发、文件实时处理、物联网数据处理、微服务等场景。Serverless 正持续与容器、微服务等生态融合,降低开发者使用 Serverless 技术的门槛,反过来也将促进传统应用的云原生化。

在企业赋能方面,尤其是疫情之后,能够看到用户对 Serverless 的认知变深,在很多场景下,切换到 Serverless 架构确实能够为用户带来明显的收益,用户逐渐认可这项技术。

1、Serverless 全链路、全场景覆盖天猫双 11

2020 年天猫双 11,阿里云实现了国内首例 Serverless 在核心业务场景下的大规模落地,扛住了全球最大规模的流量洪峰,创造了 Serverless 落地应用的里程碑。

今年天猫双 11,阿里云 Serverless 支撑业务场景更多,范围更广,阿里云函数计算与集团内的运维体系全面实现标准化对接,打通研发的最后一公里,首次实现了业务全链路“ FaaS + BaaS ”的 Serverless 体系化研发,覆盖淘特、淘系、阿里妈妈、1688、高德、飞猪等业务场景,支撑场景数量同比增加 2 倍,峰值流量总数同比增加 3 倍,实现了百万 QPS 的突破,人效提升 40%。

2、网易云音乐音视频算法的 Serverless 探索

网易云音乐产品背后,实际有非常多的算法服务支撑,比如多种码率的音频转码、听歌识曲中应用的音频指纹生成和识别、副歌检测、小语种音译歌词等等。这些任务的资源需求和执行时间变化很大,需要使用 C++、Python 等多种语言实现,对算力的弹性要求非常大。

原先网易是在自己的数据中心搭建这样一个算法服务平台,落地了 60+ 音视频算法,对接 100+ 的业务场景。但随着业务增长,基础设施管理的负担越来越大。虽然通过了很多方式去简化了内部业务场景、算法等的对接,但越来越多夹杂存量、增量处理的算法;不同流量的业务场景规模,以及不同业务场景可能会复用同一类算法的,导致在业务上的时间越来越少。

比如上线一种新算法,首先要对超过 6000 万首存量歌曲进行处理,这要求平台在短时间内弹出大量算力,可靠的执行任务,同时提供完善的应用、实例等多维度的监控信息。这些需求是非常匹配函数计算的。网易在函数计算上高峰期一天处理超过 2000 万个任务,算法应用到业务 10 倍速的提升,稀疏调用的算法成本大幅缩减。

网易这个案例最有意思的点,在于他们在应用层融合了自有机房和公有云上的服务。以往大家谈到 Serverless,觉得它很难在混合云的场景下应用。网易的案例证明了专有云和公有云融合不是只有资源纳管这一种方式,在应用层考虑融合方案,有时候效果会更好。

网易云音乐音视频算法的 Serverless 探索之路

3、南瓜电影 7 天全面 Serverless 化

另一个比较有意思的案例是南瓜视频使用 SAE 实现传统微服务应用的零迁移改造,只用了一周就完整迁移到 SAE 平台。

南瓜原有的微服务平台面临几个挑战:

  • 运维成本高。要管理基础设施,要规划网络,要升级系统等等,大量的时间花在这些低价值的工作上,而不是专注于业务的发展;
  • 机器难以规划容量。热点电影经常造成访问热点,临时扩容操作复杂、慢。南瓜经历了业务的爆发式增长,因为一部热映电影,1 小时新增 80 万注册用户,比正常流量高了 80 倍,系统很快就崩了。

这次经历促使南瓜进行了技术升级。用户也对比了 K8s 和 SAE,最后认为要玩转 K8s ,需要组建好专业团队,代价不小。SAE 的产品形态非常有亲和力,南瓜只花了很短的时间就迁移到 SAE,现在所有的应用都运行在 SAE 上。

南瓜电影 7 天内全面 Serverless 化实践

05 Serverless 不是未来,是现在

云的发展一定是往更高的抽象层面发展,让用户研发效率更高更敏捷,资源使用更高效。因此云的产品体系一定是 Serverless 化,也就是越来越多的云服务是全托管、Serverless 的形态。如果我们把云看作一台计算机,那么 IaaS 层是硬件,以 K8s 为代表的容器编排系统是操作系统,而 Serverless 计算则是应用的运行时。所以 Serverless 是云的未来,这实际上不算是对未来的预测,而是正在发生的事实。

接下来,Serverless 的产品形态会变得多样,早些年大家都把 Lambda 这样形态的产品等同于 Serverless 计算,这几年我们看到 Google Cloud Run,亚马逊云科技 App Runner 等针对 Web 应用场景的 Serverless 服务,阿里云函数计算也在不断演进,比如支持容器镜像、更少的运行限制等等。而且针对传统微服务等存量市场,我们还推出了 SAE 这样形态的服务,让用户能够非常方便的把存量应用迁移上来,享受 Serverless 的红利。

Serverless 底层技术发展上也有一些值得关注的趋势。包括在资源调度上更加智能,因为 Serverless 的计算模式给平台提供了更多的负载信息,使得平台有机会通过数据驱动的方式在资源调度、流量路由等方面做得更加精准。另外,Serverless 有望支持更多类型的硬件,包括 ARM 类型的 CPU、GPU 或者 FPGA 等异构硬件,给用户提供更有性价比的计算类型。

谈未来,就不免说到对 Serverless 终点的判断,我想云就像一台计算机,在过去的 10 年,云主要是通过 Cloud Hosting 的模式,在兼容原有编程模式的同时,为开发者提供了海量的算力。但这种模式有点像使用汇编语言编程,开发者需要处理相当多的细节。微软预测未来 5 年将新增 5 亿个应用,超过过去 40 年的总和,这是传统的开发模式难以支撑的。

所以我们看到现代应用、低代码等理念开始流行。下一个 10 年,云的编程模型将迎来巨大的创新。过去 PC、移动互联网,都从一开始的硬件创新,发展到形成自己的原生编程模型,形成完整的、繁荣的产业生态,云也正在经历这样的过程。最终,云会有属于自己的、原生的、高效的编程模型和应用研发模式。而 Serverless 在云的生态中,扮演应用运行时的角色,是承载应用运行的基础设施。

作者简介:

不瞋:阿里云 Serverless 产品研发负责人,致力于构建下一代弹性、高可用的无服务器计算平台。

原文链接

本文为阿里云原创内容,未经允许不得转载。

解决 Serverless 落地困难的关键,是给开发者足够的“安全感”的更多相关文章

  1. 云开发如何解决serverless对端的最后一公里问题

    前端圈从来不缺少新的技术.点子和话题,有些留下来了而有些则转瞬即逝.在决定一种新技术是否能够长久的所有因素里,最核心的必然是自身实力过硬能够经受住实践检验.而除此之外,这项技术所解决问题的广泛程度.受 ...

  2. TKE 超级节点,Serverless 落地的最佳形态

    陈冰心,腾讯云产品经理,负责超级节点迭代与客户拓展,专注于 TKE Serverless 产品演进. 背景 让人又爱又恨的 Serverless Serverless 炙手可热,被称为云原生未来发展的 ...

  3. Wampserver红色橙色解决思路----端口冲突是关键

    Wampserver不是绿色:wampserver下载安装不需要配置环境,在这之前需要下载tomcat,并确保启动,不然会是红色.安装好wampserver(就是在安装过程不会弹出缺少什么文件,我的就 ...

  4. 【已解决】Chrome提示:"请停用以开发者模式运行的扩展程序"的解决办法

    chrome用户在安装了一些第三方的chrome插件后,每次打开浏览器的时候都会出现“请停用以开发者模式运行的扩展程序”的提示,只有每次点击取消之后才能正常使用扩展.如下图所示 那么有没有什么方法可以 ...

  5. 解决macOS因为它来自身份不明的开发者,不显示允许任何来源 –安装文件下载损坏问题

    打开时提示"已损坏,打不开.您应该将它移到废纸篓"或身份验证,因为它来自身份不明的开发者,和不显示允许任何来源,图片解锁和应用程序问题(如图片/application应用程序损坏, ...

  6. Serverless介绍篇(一)云开发在Serverless方面取得了怎样的新成果?

    过去几年间,Serverless 发展迅猛,与其相伴的还有从小程序.移动端等到前后端一体化的演进与实践,也正因如此,从云计算到前端,众多开发者都极为关注.本文介绍了腾讯云CloudBase 的 Ser ...

  7. Serverless的概念&定义-无服务计算详解

    过去几年间,Serverless 发展迅猛,与其相伴的还有从小程序.移动端等到前后端一体化的演进与实践,也正因如此,从云计算到前端,众多开发者都极为关注 Serverless到底是什么? 在国内,Se ...

  8. Serverless 如何在阿里巴巴实现规模化落地?

    作者 | 赵庆杰(卢令) 来源 | Serverless 公众号 一.Serverless 规模化落地集团的成果 2020 年,我们在 Serverless 底层基建上做了非常大的升级,比如计算升级到 ...

  9. 跨国合作:Serverless Components 在腾讯云的落地和实践

    导语 | Serverless Components 是 Serverless Framework 推出的最新解决⽅案,具有基础设施编排能⼒,开发者通过使⽤ Serverless Components ...

  10. 浅谈服务治理、微服务与Service Mesh(三) Service Mesh与Serverless

    作为本系列文章的第三篇(前两篇<浅谈服务治理.微服务与Service Mesh(一)Dubbo的前世今生>,<浅谈服务治理.微服务与Service Mesh(二) Spring Cl ...

随机推荐

  1. vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.是什么 权限是对特定资源的访问许可,所谓权限控制,也就是确保用户只能访问到被分配的资源 而前端权限归根结底是请求的发起权,请求的发起可 ...

  2. IDEA 2019.3 plugins 插件搜索不出结果

    proxy的url输入: http://127.0.0.1:1080 重启idea即可

  3. OpenCV常量值含义表

    色彩空间转换常量 常量值 说明 cv2.COLOR_BGR2GRAY 从 BGR 色彩空间转换到 GRAY 色彩空间 cv2.COLOR_RGB2GRAY 从 RGB 色彩空间转换到 GRAY 色彩空 ...

  4. module的定义及端口的作用

    模型功能 module是verilog中层次划分的基本单元 通过module之间的调用,可以实现硬件描述层次的提高 端口列表则是module的输入输出,和数字电路的走线连接等效 基于module的不断 ...

  5. 才储性格测试(INTJ 专家型——追求能力与独立)

    INTJ 专家型--追求能力与独立 一.你的荣格理论图形 二.基本描述 才储分析:您的性格类型倾向为" INTJ "(内向 直觉 思维 判断 倾向度: I60 N56 T74 J5 ...

  6. 5W1H聊开源之What——开源协议有哪些?

    开源许可协议是指开源社区为了维护作者和贡献者的合法权利,保证软件不被一些商业机构或个人窃取,影响软件的发展而开发的协议.开源协议规定了用户在使用开源软件时的权利和责任,虽然不一定具备法律效力,但是当涉 ...

  7. #树上带修莫队,树链剖分#洛谷 4074 [WC2013]糖果公园

    题目 分析 考虑将树转换成序列求解,那就用欧拉序,入栈一次出栈一次正好抵消掉 注意当起点不是LCA的时候要将起点加入,剩下就是带修莫队板子题了 代码 #include <cstdio> # ...

  8. Spring Boot 项目五维度九层次分层架构实现实践研究——持续更新中

    var code = "12433d02-b242-4fd2-937d-750761a365ea" 说明:本博文有参考一些技术博主的思路,据实践内容及代码持续总结更新中. 五个分层 ...

  9. nginx重新整理——————http请求的11个阶段中的preaccess[十四]

    前言 简单整理一下preaccess. 正文 主要是介绍一下上文提及到的limit_req以及limit_conn. 里面是http_limit_conn_module 默认编译进去. 生效范围: 全 ...

  10. css 文字溢出省略号

    前言 css 文字溢出后显示省略号,这是一个非常常规的操作,但是你会发现在网上很多给出的例子两行之后显示省略号,却没有用. 这是为什么呢?please look follow. 正文 在一行省略的: ...