Serverless 的喧哗与骚动(一)附Serverless行业发展回顾
作者 | 阿里中间件高级技术专家 许晓斌
《Maven实战》作者,曾负责 AliExpress 微服务架构演进,现在负责阿里集团 Serverless 技术研发落地。
导读:从 2016 年 AWS 发布 Lambda 以来,全世界的开发者和云厂商对 Serverless 的热情在不断高涨。假设不想在开发应用程序并将其部署在服务器上的过程细节上花费精力,是否有一种简单的架构模型能够满足我们这种想法呢?答案已经存在,这就是今天软件架构世界中新鲜但是很热门的一个话题——Serverless(无服务器)架构。本文作者将利用自身多年的研发经验,带领我们深入了解 Serverless 行业的发展!
《喧哗与骚动》是我喜欢的作家威廉·福克纳的一部小说,小说用多个家庭成员的意识流,从不同的视角描绘了一家三代的悲剧。这部小说有意思的地方在于:对于同样一件事情,从不同人跳跃的意识中能看到迥然相异的景象。
今天大家理解 Serverless 也有点这个意思,因此我以此为题,展开分析。文章只代表作者本人观点。
Serverless is like teenage sex
不知道大家有没有听过这样的话:
Big data is like teenage sex: Everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they are doing it.
我们把 Big data 换一下:
AI is like teenage sex: Everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they are doing it.我们把 AI 换成 Serverless:
Serverless is like teenage sex: Everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they are doing it.
从中可以总结出以下几点:
- 所有人都在说 Serverless;
- 几乎没人知道怎么落地 Serverless;
- 但是大家都觉得其他人在大力做 Serverless;
- 所以大家都宣称自己在做 Serverless。
Serverless 和很多词如微服务一样,是没有精确定义的,也没有事实的标准。什么是事实标准?Kubernetes 是事实标准;对 Java 程序员来说 Spring Boot / Spring Cloud 是事实标准。
事实标准就是一种思想/方法论得到了广泛落地,占领了市场。落地通常意味着两个点:
- 它是开放(开源)的。因此不会有 vendor lock-in,所有人可以放心用;
- 有大量的成功案例。很多人将其用到关键的商业系统中,因此得到了广泛验证。
今天 Serverless/FaaS 领域有这个东西吗?还没有。
Serverless 的愿景
下面是来自 Google Trends 的一个图,其中红色是 Microservices,蓝色是 Serverless。
我个人觉得有关 Serverless 愿景,描绘最清楚的是一个比喻,这个比喻来自 UC Berkeley 在今年2月发表的那篇论文:
简单来说就是:我们今天对云资源的操作方式,就类似于几十年前早期程序员写汇编的方式。
如果你没写过/学过汇编语言,或者已经忘了汇编语言,我特地找了本书拍了一段内容下来:
今天我们把应用程序往云上搬的时候(a.k.a Cloud Native),往往都会做两件事情:
本质上大家都在把面向单机体系架构编写的应用程序,硬搬到云体系架构上。我认为这里存在两个巨大的 gap,这两个 gap 在图中用灰色的框表示了:
云时代,首先基本的资源单位发生了变化,从原来的 cpu、内存变成了容器、函数、分布式队列等等;其次,云天生分布式,因此单机时代大行其道的同步模型就不再适合。
程序员不应该花大量时间去写 yaml 文件,这些面向资源的 yaml 文件应该是由机器生成的,我称之为云编译器,高级编程语言用来表达业务的领域模型和逻辑,云编译器负责将语言编译成资源描述。
如果用一句话来总结,我觉得 Serverless 的愿景应该是:
Write locally, compile to the cloud.
大家在忙什么
为了能够稍微清晰一点地去看这一大堆的产品和技术,我简单的把 Serverless 领域做的事情分了三个层,自下而上分别是资源层、DevOps 层和框架及运行时层。
以下是 Knative 近一年的贡献者及贡献数量的增长情况,数据来自演讲「Knative a Year Later: Serverless, Kubernetes and You」。
刚需在哪里
这个时候团队规模很小,可能两三个人,所有代码放在一个应用内,不需要分布式,不需要隔离。
因此,对于处在平台期和云产品期的产品来说,技术上的隔离能力及调度能力是他们的刚需。
框架和运行时的创新
前面所说的刚需都是集中在稳定性、安全性及资源成本的角度来讨论的。除此之外我们还需要讨论另外一个话题,那就是开发效率,而开发效率具体到技术是体现在框架上的。
面向技术问题提升开发效率的框架:如 Spring 通过依赖注入解决对象组装问题;HSF 解决分布式同步通讯问题;RocketMQ 解决分布式异步通讯问题;Hystrix 解决分布式通讯引入的网络不可靠问题等等。通过使用这些框架,技术的天然复杂度在很大程度被屏蔽掉了。
面向业务问题提升开发效率的框架:阿里的很多业务平台团队都会根据自己的场景(如交易、店铺、供应链)开发业务型框架,赋能开发快速迭代业务。
通常,面向技术问题的框架会有一个团队研发,而面向业务问题的框架则由各类业务平台团队提供,这再一次证明了康威定律的正确性。康威定律翻译成中国的土话差不多就是“屁股决定脑袋”,技术型团队不愿意碰业务问题,而业务平台团队的框架在解决技术问题方面也显得没有技术团队专业,最终的结果是:两种框架割裂得比较厉害。
大家可能听过这么一个故事:
有一条恶龙,每年要求村庄献祭一个处女,每年这个村庄都会有一个少年英雄去与恶龙搏斗,但无人生还。又一个英雄出发时,有人悄悄尾随。龙穴铺满金银财宝,英雄用剑刺死恶龙,然后坐在尸身上,看着闪烁的珠宝,慢慢地长出鳞片、尾巴和触角,最终变成恶龙。
虽然看起来很夸张,但在我看来,这一定程度上体现了一些大中型研发组织主流框架的现状:这些框架在组织发展的历史上发挥了极其重要的作用,然而到了今天,随着云服务不断地成熟,大家都在提云原生,都基于云在构建业务系统的时候,需要框架还在强制用户绑定语言(如 Java),还没做好服务化,把逻辑塞进用户的应用中。有的甚至要求用户的代码必须部署到平台的巨型应用中。
这些限制短期内实现了业务目标,交付了业务价值,但从长期看基本上浇灭了业务开发做框架创新的热情,他们更习惯于等待“位于正确定位的团队”去解决问题,而“处于正确定位的团队”同学呢,可能一时半会还没感受到那些问题。不出意外的话,专注组织内短期业务价值的框架,被推到云上、推到社区、面向更普适通用诉求的时候,获得的认可就会差很多。
传统的框架和运行时,只管理单机层面的资源,而当所有人都用云服务构建自身业务的时候,框架和运行时需要管理的就不再是单机资源,而是云资源了。在这方面行业里已经有了不少产品,比较知名的有 Terraform 和 Pulumi,但我觉得还不够,我觉得理想的云原生框架应该是这样的:
- 能够帮助开发屏蔽云资源的管理。开发都不喜欢像写汇编一样写 yaml,因此框架需要负责资源的分配、回收,编排等等;
- 纯异步的,事件驱动的。这是云天生的分布式特性决定的,如果编程语言范式还是同步的模型,这个框架就没法实现了;
- 没有 vendor lock-in。不绑定实际的云厂商,唯有厂商中立的开发框架才能被广泛使用,框架定义了编程 API,具体的厂商可以提供相关的 driver;
- 同时具备云资源管理和大规模软件开发必须的编程范式。这里的编程范式可能描述不当,但我找不到更好的词,面向对象设计是最主流的编程范式,Spring 就是围绕这个编程范式展开的。在一个框架中解决两个问题,会给开发极好的体验。
小结
Serverless 这个领域看起来极其美好,一旦深入去做了才发现实际非常复杂。这个复杂体现在涉及的工程技术比较广,也体现在用户的期望差异很大,更体现在大家对未来的判断还有很大的差异。
在和团队一起深入这个领域的时候,我也需要不断整理自己的所闻所见、所思所想,因此我计划产出一系列文章,拿出来和大家分享,和大家探讨,这是第一篇,有兴趣的同学可以进群讨论。
Serverless 的喧哗与骚动(一)附Serverless行业发展回顾相关推荐
- Serverless 的喧哗与骚动
戳蓝字"CSDN云计算"关注我们哦! 导读:从 2016 年 AWS 发布 Lambda 以来,全世界的开发者和云厂商对 Serverless 的热情在不断高涨.假设不想在开发应用 ...
- Serverless Devs 2.0 开箱测评:Serverless 开发最佳实践
简介:当下,Serverless 概念很火,很多同学被 Serverless 的优势吸引过来,比如它的弹性伸缩,免运维,高可用,资费少.但真正使用起来去落地的时候发现问题很多,大型项目如何组织函数,性 ...
- Serverless 领域近一年行业发展回顾
简介: Serverless 领域近一年行业发展回顾. 2018年7月,Google 发布了 Knative. Knative 是一个基于 Kubernetes 的开源 Serverless 框架,具 ...
- Serverless 实战 —— 与微服务一脉相承,Serverless适用何种场景?会带来哪些冲击?
Serverless 实战 -- 与微服务一脉相承,Serverless适用何种场景?会带来哪些冲击? Serverless 架构用来描述那些显著或完全依赖于第三方应用或服务("在云端&qu ...
- 基于信通院 Serverless 工具链模型的实践:Serverless Devs
前言 2022 年 6 月 15 日,信通院在中国信通院云原生产业大会上发布<基于无服务器架构的工具链能力要求>标准,至此全球首个云原生 Serverless 开放工具链模型正式发布!Se ...
- 【转载】Serverless 系列之(4): Serverless 的优点
前面(系列之3⃣️)我们就讨论过,云计算的基础设施外包带来五大好处: 降低人工成本 降低风险 降低基础设施成本 扩展性 交付时间 Serverless 同样也有这 5 个优点, 前四个都或多或少是关于 ...
- 给你的博客添加百度收录查询(附Serverless API搭建
Loading- 后端 1.Tencent Serverless 打开腾讯云,新建一个PHP Web函数(懒得适配了,用原作者的吧 直接在下方编辑窗口中hello.php中贴入以下代码 <?ph ...
- serverless是什么?无服务器之serverless
serverless是什么 Serverless首先是用于描述我们的应用程序是明显或充分地依赖第三方应用或服务来管理服务器端逻辑和状态,这些应用是典型的富客户端应用,比如单页Web应用或移动应用,它们 ...
- Serverless 架构开发手册 — “人人都是 Serverless 架构师”先导篇
摘要:本篇实战将介绍如何以超低成本构建动态的 Web 站点,并且实现灵活扩展,限流等效果,最后再跟大家聊一聊"现代应用"的相关概念. 相信很多同学都有过想要拥有自己的 Web 站点 ...
最新文章
- 2022-2028年中国电动牙刷行业深度调研及投资前景预测报告(全卷)
- 工厂模式、构造函数入门
- python 可变参数 关键字参数_Python之 可变参数和关键字参数
- Linux下开启mysql数据库的远程访问权限
- 使用FontAwesome
- ORA-12638处理
- [答疑]能举一个人取代业务实体的例子吗
- c语言上机调试步骤,C语言上机环境与上机调试.ppt
- 8051 C 中的sbit
- OpenCV源码剖析之ImageDecoder
- rdma_RDMA:基本原理和自举探索
- 微信小程序 - 数据转excel下载并复制链接
- 右键菜单“新建”的修改
- Linux设置服务器定时重启
- Python数据分析实战【第三章】2.5-Pandas数据结构Dataframe:基本概念及创建【python】
- 科技论文翻译,俄语文档的语法有何特点
- 093【RTKLIB源码之postpos-9】刨根问底
- 针孔相机(透视相机模型)
- python实现dem输出三维模型_资源三号卫星影像立体像对如何提取DEM数据的方法
- 华为云讲解:1. Istio架构与原理