大约2017 年国内 Serverless 技术开始兴起,我所在团队负责前端中后台系统的研发,后端为了方便扩展就把接口设计得很原子化,导致前端渲染一个页面要发几十个请求,前后端联调很痛苦,沟通成本非常高,开发效率也很低。

为了提升前端开发效率和页面加载性能,我们用 Node.js 开发了很多 BFF(Backend for Frontend)应用来做接口的聚合裁剪。可随着接入的系统增多,BFF 应用数量和复杂度日趋上升,不仅消耗了大量机器,还导致前端运维成本急剧增高,很多时候都要去排查服务器的问题。

机缘巧合下,我抱着试一试的心态引入了 Serverless 来实现 BFF 层,结果让前端从运维中解放出来,同时也减少了不必要的机器资源浪费。

Serverless 时代已来临

实际上,Serverless 概念从 2012 年就提出来了,随后 AWS 在 2014 年推出了第一款 Serverless 产品Lambda,开启了 Serverless 元年。

此后国外 Serverless 生态迅速发展,诞生了如 Serverless FrameworkVercel 等很多优秀的产品。只是国内起步比较晚,2017 阿里云和腾讯云才相继发布了国内的 Serverless 产品:函数计算和云函数,这时 Serverless 才开始进入大多数国内开发者的视野,各大厂商开始极力宣传和实践 Serverless,到现在不过短短三年,国内 Serverless 开发进入白热化阶段,周围不管大厂小厂,都开始用 Serverless 解决各自业务中的效率和成本问题。

比如,阿里这两年的“双十一”都在用 Serverless 提升应用弹性能力、降低服务器成本;Airbnb 在用 Serverless 做实时分析报警;微博在使用 Serverless 进行图片个性化处理;石墨文档也在用 Serverless 实现实时协作……

Serverless 带来的机遇

Serverless 说白了,就是一种不用关心服务器的架构思想,开发者可以不关心除业务代码之外的事情,进而提高业务的迭代效率,使用的云服务也是用多少付多少,从而节省成本。总的来讲,Serverless 对开发者研发方式的影响是巨大的

对前端工程师来说,曾经你部署一个 BFF 或者服务端渲染应用,要购买机器、安装环境,甚至考虑负载均衡、分布式缓存、流量控制等复杂后端问题,而 Serverless 把这些能力封装成服务,让你开箱即用,解决你不会服务器运维的困难。另外,由于 Serverless 把后端变得很简单,甚至前端工程师自己就可以独立完成整个应用开发了,再加上前端工程师离用户最近,所以前端可以成为产品负责人。

而且虽然 Serverless 时代已经来临,但国内 Serverless 生态距离国外还有不小差距,国外关于 Serverless 的开发框架、WebIDE 等技术已经比较成熟,而国内还处于发展初期,这种“差距”对于国内前端工程师来说是个很好的机会。

当然,Serverless 对后端工程师也有很大的影响,虽然关注 Serverless 的前端人数的确比后端要多,但掌握 Serverless 技术,对后端工程师极为必要。因为基于 Serverless,后端工程师不用再关心系统运维,可以专注于业务开发,深入业务细节,使业务快速迭代,帮助业务成功。另一方面,后端工程师也可以深入底层去构建 Serverless 基础设施,让技术为更多开发者服务。

如果一个开发者会 Serverless,那说明他很关注前沿技术,未来可以以更高效率、更低成本的方式为公司完成业务创造价值,从而给公司带来产品和技术上的领先。

学习 Serverless 所面临的挑战

虽然开发者开始关注、尝试 Serverless,但在学习中也会遇到很多问题。

大部分网络文章对 Serverless 几乎都是概念的介绍,书籍中就算有实践案例也只是简单的 Demo,深度不够。这让开发者的 Serverless 学习过程变得极其困难,很多知识盲点都要自己探索,无法建立自己的知识体系。(比如,Serverless 应用开发的全流程是什么?怎样对 Serverless 函数进行本地调试和编写单元测试?)

当然,随着国内云厂商对 Serverless 的支持越来越完善,一些大厂和实践者也开始推出 Serverless 的开发教程,但往往都局限于某个云产品,很容易成为云产品的宣传,不能深入 Serverless 技术本身,不具有普适性。由于 Serverless 本身严重依赖云产品,很容易让开发者被云厂商绑定,比如当开发者选择阿里云之后,就很难迁移到腾讯云,这也是开发者的痛点之一。

另外,虽然所有人都在谈论 Serverless,越来越多的企业和开发者开始尝试使用 Serverless,但都还处于探索阶段,落地经验输出还非常少, 更不用说大型 Serverlss 架构项目的落地经验了。这就导致开发者在使用Serverless 开发复杂业务时缺少经验、容易踩坑,很难将传统应用迁移到 Serverless 架构,开发者需要汲取大厂落地经验,才能更好地使用和发挥出 Serverless 的价值。

课程设计

这门课,希望能脱离具体云产品平台的限制,聚焦在 Serverless 技术本身,循序渐进地从概念到开发基础帮你逐渐理清知识盲区,形成知识体系,再通过真实的落地经验与典型的场景案例,让你真正理解和学会运用 Serverless。

课程划分为四个模块。

  • 概念篇: 从云计算发展历程的角度,为你深度剖析 Serverless 兴起的必然因素,让你建立对 Serverless 的宏观认知,然后通过一个案例带你理解 Serverless 这个概念。
  • 开发基础篇: 我会从一个开发者的视角,从应用设计、开发、测试、部署的整个流程,为你解释开发 Serverless 应用的基础知识,帮你理清知识盲点。学完之后,你就可以开发一个简单的 Serverless 应用了。
  • 开发进阶篇: 鉴于市面上比较缺乏大规模 Serverless 应用的实践经验,我会针对系统迁移难、厂商依赖强、经济成本高、应用不安全等开发者关心的痛点问题,将我在大型 Serverless 架构中总结的相关经验分享给你。学完之后,你就能更好地进行 Serverless 技术选型,基于 Serverless 开发复杂业务。
  • 场景案例篇: 我会选择一些开发者比较常见且十分典型的真实场景案例(比如基于 Serverless 实现弹性可扩展的 Restful API 系统),带你将前面学习到的理论知识运用于实践,从零开始设计开发一个复杂的 Serverless 应用,深刻感受 Serverless 给开发模式带来的改变,以及开发效率的提升。

为了更全面地了解 Serverless,我还特地画了一张学习路径图:

未标题-1.jpg

虽然 Serverless 技术还比较新,但我相信它终会成为技术架构的主流,因为成本和效率永远是开发者和企业最关心的两大问题

技术新意味着你有更多的机会,越早学习、实践就越能占领技术先机。