你好,我是秦粤,欢迎你和我一起学习 Serverless。说起 Serverless 这个词啊,我估计你应该不陌生。就算你没详细了解过,但我确定你肯定在过去几年时间里听别人说过。去年我在参加GMTC 全球大前端技术大会的时候,也惊讶地发现国内几个大公司都已经有成熟的应用案例了,所以我当时就感叹说,“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 应用架构的设计,其中,SFF(Serverless For Frontend)可以让前端同学自行负责数据接口的编排,微服务 BaaS 化则让我们的后端同学更加关注领域设计。可以说,这是一个颠覆性的变化,它能够进一步放大前端工程师的价值。

最后我想说 Serverless 作为一门新兴技术,未来的想象空间很大。我看到有创业公司用 FaaS 来做基础设施编排和云服务编排;也有外包公司利用 Serverless 应用架构的快速迭代能力,提升开发效率,降低出错率,还可以给自己沉淀领域的解决方案;还有包括风险投资方也在逐渐开始关注 Serverless 领域,毕竟这也是一个新的风口。我讲大企业的使用方式只是希望给你一些灵感,不想过多限制你的想象,Serverless 的疆域边界还在等你去扩展。

这里是 GMTC 会议上几个大公司的分享资料,你感兴趣的话,可以先看看。

  1. 阿里跨境供应链前端架构演进与 Serverless 实践
  2. Serverless 前端工程化落地与实践
  3. 从前端和云厂商的视角看 Serverless 与未来的开发生态

问题三: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

实战篇,我会通过 Google 开源的 Kubernetes 向你演示本地化 Serverless 环境如何搭建,并根据我的经验,和你聊聊 Serverless 架构应该如何选型,以及目前 Serverless 开发的最佳实践。

学习路径图

最后,我再来介绍下我自己吧。我叫蒲松洋,秦粤是我的花名。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,不知道你的看法是怎样的?如果你有什么疑惑,或者在实践中遇到了哪些困难?欢迎在留言区中提出,我们共同探讨。