You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

8.6 KiB

开篇词 | 说来说去到底Serverless要解决什么问题

你好我是秦粤欢迎你和我一起学习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对前端工程师来说会有什么机遇为什么我们要学习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不知道你的看法是怎样的如果你有什么疑惑或者在实践中遇到了哪些困难欢迎在留言区中提出我们共同探讨。