This commit is contained in:
louzefeng
2024-07-11 05:50:32 +00:00
parent bf99793fd0
commit d3828a7aee
6071 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
<audio id="audio" title="开篇词 | 说来说去到底Serverless要解决什么问题" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/f5/6e/f52633b211fe2715f15034ee0646106e.mp3"></audio>
你好我是秦粤欢迎你和我一起学习Serverless。说起Serverless这个词啊我估计你应该不陌生就算你没详细了解过但我确定你肯定在过去几年时间里听别人说过。去年我在参加[GMTC全球大前端技术大会](https://gmtc.infoq.cn/2019/shenzhen/track/675)的时候也惊讶地发现国内几个大公司都已经有成熟的应用案例了所以我当时就感叹说“Serverless终于要飞入寻常百姓家了。”
### 三个问题
作为一名Serverless的拥趸者过去几年时间里我总是喜欢向朋友和同事推荐Serverless技术。不过在“推销”的过程中他们经常会问我一些问题那在今天的开篇词里我就来统一回答下这些共性的问题吧我估计你也会问到。
**问题一说来说去到底Serverless要解决什么问题**
我不知道你有没有算过你们公司每年在服务器上的开销,反正在创业之前我是没算过,总觉得这钱算了也没必要,还是应该多花心思在怎么挣钱上,但后面当我真正自己开公司之后,才知道柴米贵。
咱们就拿自己部署一套博客来说吧常见的Node.js MVC架构需要购买云服务商的Linux虚拟机、RDS关系型数据库做得好的话还要购买Redis缓存、负载均衡、CDN等等再专业一点可能还会考虑容灾和备份这么算下来一年最小开销都在1万元左右。但如果你用Serverless的话这个成本可以直接降到1000元以下。
Serverless是对运维体系的极端抽象就像iPhone当年颠覆诺基亚一样它给应用开发和部署提供了一个极简模型。这种高度抽象的模型可以让一个零运维经验的人几分钟就部署一个Web应用上线并对外提供服务。也就是说你根本不需要再学习怎么在Linux上装Web服务器怎么配置负载均衡等等这些繁琐的偏运维方向的工作。
所以你要问我Serverless解决了什么问题一句话总结就是它可以帮你省钱、省力气。
**问题二为什么阿里巴巴、腾讯这样的公司都在关注Serverless**
首先Serverless可以有效降低企业中中长尾应用的运营成本。中长尾应用就是那些每天大部分时间都没有流量或者有很少流量的应用你可以想想你们公司是不是也有很多。这一点我特别有感触尤其是企业在落地微服务架构后一些边缘的微服务被调用的概率其实很低。而这个时候我们往往又很难通过人工来控制中长尾应用因为这里面不少应用还是被强依赖的不可以直接下线处理。Serverless之前这些中长尾应用至少要独占1台虚拟机现在有了Serverless的极速冷启动特性企业就可以节省这部分开销。
其次Serverless可以提高研发效能。我们专栏会讲到Serverless应用架构的设计其中SFFServerless For Frontend可以让前端同学自行负责数据接口的编排微服务BaaS化则让我们的后端同学更加关注领域设计。可以说这是一个颠覆性的变化它能够进一步放大前端工程师的价值。
最后我想说Serverless作为一门新兴技术未来的想象空间很大。我看到有创业公司用FaaS来做基础设施编排和云服务编排也有外包公司利用Serverless应用架构的快速迭代能力提升开发效率降低出错率还可以给自己沉淀领域的解决方案还有包括风险投资方也在逐渐开始关注Serverless领域毕竟这也是一个新的风口。我讲大企业的使用方式只是希望给你一些灵感不想过多限制你的想象Serverless的疆域边界还在等你去扩展。
这里是GMTC会议上几个大公司的分享资料你感兴趣的话可以先看看。
- [阿里跨境供应链前端架构演进与 Serverless 实践](https://static001.geekbang.org/con/55/pdf/1710853715/file/%E7%BC%AA%E4%BC%A0%E6%9D%B0.pdf)
- [Serverless 前端工程化落地与实践](https://static001.geekbang.org/con/55/pdf/3151321591/file/%E7%8E%8B%E4%BF%8A%E6%9D%B0%20%20Serverless%20%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%8C%96%E8%90%BD%E5%9C%B0%E4%B8%8E%E5%AE%9E%E8%B7%B5.pdf)
- [从前端和云厂商的视角看 Serverless 与未来的开发生态](https://static001.geekbang.org/con/55/pdf/1359804153/file/%E6%9D%9C%E6%AC%A2%20%20%E4%BB%8E%E5%89%8D%E7%AB%AF%E5%92%8C%E4%BA%91%E5%8E%82%E5%95%86%E7%9A%84%E8%A7%86%E8%A7%92%E7%9C%8B%20Serverless%20%E4%B8%8E%E6%9C%AA%E6%9D%A5%E7%9A%84%E5%BC%80%E5%8F%91%E7%94%9F%E6%80%81.pdf)
**问题三Serverless对前端工程师来说会有什么机遇为什么我们要学习Serverless**
相对其他工种而言Serverless给前端工程师带来的机遇更大它能让前端工程师也享受到云服务的红利。如果说Node.js语言的出现解放了一波前端工程师的生产力那Node.js+Serverless又可以进一步激发前端工程师的创造力。口说无凭到时候你看完咱们专栏里的例子就能体会到这句话的意思了。
另外我觉得学习Serverless是成为云开发者的最适合的切入点。无论你是零基础还是资深服务端运维都可以从Serverless上学习到现代服务端运维体系的重要思想我在第一节课就会讲
回答完这几个问题我想你对Serverless已经有了初步了解。接下来我也不想绕弯子我就再和你聊聊我准备怎么给你讲这门课吧。
### 课程设计
基础篇我会继续带你理解Serverless要解决什么问题以及Serverless的边界和定义。搞清楚了来龙去脉我们会进入动手环节我会通过一个例子来给你讲解Serverless引擎盖下的工作原理以及FaaS的一些应用场景。
进阶篇我们将一起学习FaaS的后端解决方案BaaS以及我们自己现有的后端应用如何BaaS化。为了更好地展现Serverless的发展历程和背后的思考我也为你准备了一个基于Node.js的待办任务的Web应用你要做好准备这里我会给你布置很多动手作业。
GitHub地址[https://github.com/pusongyang/todolist-backend](https://github.com/pusongyang/todolist-backend)
实战篇我会通过Google开源的Kubernetes向你演示本地化Serverless环境如何搭建并根据我的经验和你聊聊Serverless架构应该如何选型以及目前Serverless开发的最佳实践。
<img src="https://static001.geekbang.org/resource/image/8b/83/8bde1e4a6ae3adb4f5ab5f410a9b1e83.jpg" alt="" title="学习路径图">
最后我再来介绍下我自己吧。我叫蒲松洋秦粤是我的花名。2006年从电子科技大学毕业后我就进入了UT斯达康现在这公司已经谢幕它是小灵通的主要生产厂商做通讯相关的工作当时的职位是PHP前端工程师。2013年我跳槽加入百度从PHP前端工程师转为了Node.js前端工程师。2015年开始又和朋友折腾创业用Node.js做智能家居IoT。2016年底创业没成我又回到了国内某一线互联网公司负责Node.js应用治理和Node.js微服务架构设计。
我在用Node.js做微服务时发现微服务本身提出了很多理念但微服务在服务端运维却缺少给力的支撑平台后来我们就试着用容器集群搭建了自己的Container Serverless。结果证明它不但可以支撑Node.js微服务运维还可以提高Node.js中长尾应用的资源利用率。再后面大家都意识到了Serverless带来的便利性于是我们团队也就整体参与到了公司Serverless整体建设中了。
在研究并落地Serverless技术的过程中我发现国外的Serverless开源社区其实比国内更加活跃。自从2014年AWS推出第一个FaaS服务Lambda后国外的很多公司都在积极推进Serverless的生态发展并且开始占领高地制定了很多的规范。而放眼国内目前还只有为数不多的大型互联网公司在重点跟进其他人基本上只是在观望或者看热闹。
因此我也特别希望通过这个专栏能够带你真正理解Serverless并让你尽快享受到技术的红利。Serverless 肯定是未来云计算发展的重点方向作为工程师特别是前端工程师我们应该思考的是如何抓住这波机遇如何利用FaaS+各种创意,组合碰撞出各种化学反应,去为公司、为自己创造更大的价值。
以上就是今天的全部内容。有关Serverless不知道你的看法是怎样的如果你有什么疑惑或者在实践中遇到了哪些困难欢迎在留言区中提出我们共同探讨。

View File

@@ -0,0 +1,47 @@
<audio id="audio" title="特别放送 | 为什么阿里要举集团之力趟坑Serverless" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/d2/ee/d2ecde527136a457ee99cdb9b53c6aee.mp3"></audio>
你好我是专栏编辑冬青。在课程正式开始之前我要先向你推荐一篇InfoQ记者蔡芳芳的文章。为了探究Serverless的价值、生态位以及局限之处蔡芳芳采访了阿里高级前端技术专家杜欢并表达了自己的看法。以下为具体内容。
作为阿里巴巴经济体前端 Serverless 研发升级项目的负责人,杜欢过去两年花了大量时间推进集团内部的 Serverless 研发模式升级工作。这是一项牵涉整个阿里集团层面的技术升级工作。阿里 2018 年正式启动内部 Serverless 资源底座的准备工作2019 年基于搭建好的底座建设上层前端框架,到 2019 年双十一,阿里已经在部分电商导购业务上开始实践这套新的研发模式。
Serverless 兴起于 2017 年,在最近两年伴随着云原生概念的推广愈发火爆。在这波 Serverless 浪潮里,阿里是国内走得最前面、说得也最多的一个。但为什么阿里会上升到整个集团的高度来推进 Serverless 研发模式升级,我们仍然感到好奇。对此,杜欢表示:“ 这件事本身好像是一件技术的事情,但其实它背后就是钱的事情,都是跟钱相关的。”
杜欢告诉 InfoQ 记者,为了保障业务的稳定性和可用性,阿里对每一个应用上线都有相应的规范和规则。哪怕是一个很小的内部应用,一天可能只有一两个访问量,上线也需要遵守既有的规范,这势必会消耗一些固定资源。单个应用消耗的资源可能很有限,但所有应用消耗的资源累积起来也是一个不小的数字。阿里内部自己做了分析发现,除了主要的核心应用之外,已经上线的应用中超过 80% 都是非核心的中长尾应用。目前阿里经济体的体量和业务量已经达到非常大的量级,在现有的研发模式下,这些中长尾应用会带来比较大的资源浪费。
其次,现有的研发形态并不能最大化地发挥部分工作岗位的价值,这同样是一种浪费。以导购类型的业务为例,开发这样一个业务通常需要前端开发工程师和后端开发工程师一起配合,但这两个开发岗位在该业务形态下并不能很好地发挥自己的全部价值。对于后端工程师来说,他在这个业务里要做的事情更多只是把现有的一些服务能力、数据组合在一起,变成一个新的数据提供给前端;而前端开发工程师负责把这个数据在页面上展示出来。这样的工作比较机械化,也没有太大的挑战,并不利于后端工程师的个人成长和岗位价值发挥;但在现有的研发模式下,由于缺乏前后端的连接点,前端工程师又不能去做这些比较简单的后端工作,业务上线也不可能给到前端工程师时间和机会去学习再实践。
而 Serverless 既可以满足资源最大化利用的需求,也能够调优行业内的开发岗位分层结构,让每个开发岗位都能够在最适合自己的地方发挥最大的价值。杜欢表示,阿里正是因为看到了经济体内存在的上述问题,在尝试寻找相应解决方案的过程中发现 Serverless 可能是一个好的解决方案,才开始研究 Serverless研究后认为确实可行才启动了“阿里巴巴经济体前端 Serverless 研发升级项目”这样一个项目,拉上大家一起来共建。
那么 Serverless 是只对阿里这样的公司才适用吗?什么样的公司、应用或场景应该选用 Serverless 的架构模式?
在杜欢看来,这是一个“伪问题”。他直言,并不存在什么样的场景和模式适合 ServerlessServerless 应该被广泛地运用在不同的场景和实际开发需求中。从云厂商的角度来看,云计算未来一定会成为整个社会和商业的基础设施,届时使用云计算就应该像现在我们使用水电煤一样简单,不需要了解水从哪里来、怎么过滤、怎么铺设管道等一系列问题,只需要打开水龙头接一杯水而已。
而 Serverless 的概念正好可以帮助云计算朝这个方向往前走一步它提倡的是人们不需要关心应用逻辑以外的服务相关的事情包括管理、配置、运维等用多少就付多少。从这个角度来看Serverless 是真正让云计算变成社会商业基础设施的一个实现路径,也更接近现在业内提倡的云原生的方式,因此人们在使用云计算的过程中自然就应该按照 Serverless 的方式来使用。
杜欢认为,大家今天对是不是该用 Serverless 还有疑问,主要是因为还没有看到足够多 Serverless 成功应用的案例。这也是阿里巴巴先从自己内部实践 Serverless 研发模式升级的另外一个原因,希望通过这件事达成两个目的,一是向大家普及 Serverless 的概念,二是从自己的实践过程中总结出一套好的实践方式并共享出来,帮助大家更好地了解应该怎么落地 Serverless。
### 前端开发者看好、后端开发者观望Serverless 为何如此?
过去这一年 Serverless 在前端领域被频繁提及,很多开发者非常看好,并认为它一定是未来前端大趋势之一,相比之下非前端领域还是观望态度居多。杜欢告诉记者,之所以会出现热度差,是因为 Serverless 的概念天然弥补了前端开发工程师的不足,但却跟现在很多后端开发工程师的能力有一定程度的重叠。
在杜欢看来,绝大多数后端开发工程师的成长路径是先做后端业务逻辑,慢慢了解应用的每个环节,再逐步成长为后端架构师,能 Hold 住整个应用架构。但云原生 Serverless 的出现,一定程度上会使这种后端架构能力变得普及,并且是以平台或服务的方式,而不是以人的方式。这乍看起来对于整个后端岗位可能是一种冲击,但杜欢认为 Serverless 并不会完全取代后端。当前整个开发生态依然缺少优秀的架构服务,尤其是低成本、可持续发展、针对特定行业优化的架构服务。未来后端工程师还是会成长为架构师,但是可能不是通用架构师,而是偏业务解决方案的行业架构师。此外,云厂商也需要专门构建 Serverless 方案的架构师,这是后端工程师的另一个新机会。
杜欢告诉 InfoQ 记者Serverless 对前端和后端带来的影响总体都是正向的。对于前端来说Serverless 不仅补足了前端工程师现有的能力,还可能使整个前端行业的定位发生变化。原来经常有人会认为前端的工作很简单,面向 UI 做好开发就行,剩下的工作可以交给后端。但是云端的应用开发模型出来之后,也就是前端和 Serverless 结合之后,大家对前端的诉求就不仅仅是开发一个页面了,而是要能交付整个应用的开发。
前端工程师除了要保持在 UI、交互逻辑方面的优势还要理解整个业务和业务背后的意图这意味着未来前端行业的思考模式会变成面向业务的思考模式。与此同时前端的协同和开发模式、上下游流程也会发生变化原来前端可能很少跟产品经理、设计打交道未来前端要对整个应用负责就需要天天跟产品经理、设计打交道。后端则要在最底层提供更深的能力付出比如如何按照一亿流量的支出支撑十亿流量这是更大的挑战。
### 目前 Serverless 最佳实践模式尚未出现
当前谈 Serverless很多人会提函数计算、FaaS但杜欢认为当前 Serverless 尚未出现一个最佳实践模式。在他看来,现在已经有一些 Serverless 的框架开始涌现,云厂商对 Serverless 的支持也越来越完善,确实是时候去尝试实践 Serverless 了。但要说最佳实践,就必须有足够多的人去实践过并表示认同,而现在实践 Serverless 的人本来就很少、实现的业务也很少,因此还没有哪一种方式谈得上是最佳实践。
不过杜欢提到 Serverless 实践过程中有一点需要重点关注——学习曲线是否足够平缓。要成为最佳实践模式,至少要做到能让开发者以一种方式专注于业务代码的开发,无需关注运行平台的差异性,一处编写可以处处运行,开发者只要掌握一种方式就可以在不同业务之间没有学习成本地切换。阿里巴巴近期开源的函数运行时框架 Midway FaaS Run Time 就是朝着这样的目标设计出来的,但还需要更多人尝试并认可,才有可能在未来变成最佳实践。
杜欢表示,目前 Serverless 在国内的发展和采用依然处于初期阶段,经过这两年的概念普及,大部分人都已经注意到并接受了 Serverless但业务实践偏少仍在不断探索之中。相比之下国外整体要领先 1-2 年,国外几个大的云厂商前期对整个研发生态的教育和布道做得比较多,应用也比较早。现在国外已经出现不少 Serverless 框架,比较知名包括 Serverless.com 和 Zeit.com。
但对于 Serverless 未来的发展,杜欢信心十足。在他看来,未来云计算的普惠,一定是通过 Serverless 的方式去放大和落地实现的,而基于云端的应用模式也一定会是未来创新创业的选择。问题在于如何做好从传统开发模式到云开发模式的迁移。其中非技术层面的挑战主要来自于开发者,前后端工程师对 Serverless 的态度可能不一致,有的后端工程师会觉得 Serverless 抢了自己的工作很难接受,他没有看到更深层次对自己有收益的地方;有的前端工程师认为 Serverless 只是增加了自己要做的事情,而不能看到这个东西对自己提出了更高的要求,那他未来也未必能够胜任这项工作。
而技术层面的挑战主要包括两块:首先,云厂商自身要提供更多的 Serverless 能力,或者说现有云计算的能力要有更多被转换成能以 Serverless 的方式提供服务,未来云厂商要越来越多地提供这方面的支持;其次是研发模式,未来对于云时代的原住民来说,所有东西都在云上,开发方式必然会发生变化,如何去解决这些问题,让一个新人加入一项新业务之后可以更快地写下第一行代码,这是另一项挑战。
展望 2020 年 Serverless 的发展趋势杜欢说道“2020 年 Serverless 会进入初步实践阶段,还不能称之为大规模实践,可能到 2021 年才会进入大规模实践阶段。在这个过程当中,云厂商会进一步补充更多的 Serverless 服务,包括一些后端的 BaaS 服务,把基础打得更牢一点。”
今天的分享就到这里,下节课我们正式开始学习!