腾讯高级产品经理
随着 Serverless 生态的不断成熟,越来越多开发者使用 Serverless 架构构建自己的业务,Serverless 的典型适用场景有哪些?怎样借助工具,更快更好的部署自己的 Serverless 应用? 本次课程将带你深入了解这些Serverless的最佳实战应用。
抗击疫情,腾讯云在行动。Serverless(无服务架构)被誉为下一代云计算技术,自概念推出以来,因为能带来研发交付速度提升与成本的降低在业内异常火爆。将随着 Serverless 生态的不断成熟,越来越多开发者使用 Serverless 架构构建自己的业务,Serverless 的典型适用场景有哪些?怎样借助工具,更快更好的部署自己的 Serverless 应用? 本次课程将带你深入了解这些Serverless的最佳实战应用。
本次腾讯产业互联网学堂大咖分享课程邀请 腾讯高级产品经理 方坤丁 分享关于“Serverless 开发实战之Nodejs”课程的内容。
本次分享内容:
1、为什么 Serverless 广受开发者喜爱? 2、Serverless 的典型场景 3、深入理解 Serverless Component 4、为你的静态页面加上后端:搭建express框架 & 三分钟快速定制你的新冠病毒疫情信息查询网页
在上一节直播课中,陈涛老师也分享了架构的演进进程,从物理机房到虚拟机,再到容器,再到Serverless。Serverless的出现引发了行业革命,但很多人误认为serverless只是计算的演进,但其实Serverless不单指计算,一般来说Serverless = FaaS + BaaS,既有计算能力的提供,也由后端能力的提供,泛指可以弹性扩缩容,并且按需付费的云服务。这里的按需付费与按量付费是有区别的,按需付费是当你不需要不使用时,不收取费用,而不是按时长收费。虽然这些服务的底层依然会运⾏在服务器上,但由于我们将其Serverless化,开发者对其是没有感知的。
典型的Serverless服务的例子:
都支持弹性扩缩容、按需付费。只要支持上述两个条件,都可以称为Serverless产品。
Serverless 的优势:
右下角的图,展示了在传统的模式下,搭建企业级架构是需要考虑很多方面的,如运维数据库、分配服务器、集群扩缩容、安全、网络等。对于开发者而言,这很多是没必要的,只需关注自身的业务逻辑。最近流行的全栈⼯程师是指,在⼀些不复杂的业务逻辑,⽆需和后端反复得对接⼝。前端也可以使用Serverless做更多后端的事情,更加⾼效,也提升了自己的能力。对于软件来说 Time to Market 的时间也⼤⼤缩短。
Serverless 引⼊的问题和⽅案:
下图是CNCF 基金会landscape对Serverless的矩阵,有很多为了解决上述问题而产生的工具、框架和平台,在不同的平台里可以看到各大云厂商都有自己的Serverless平台,包括开源的厂商也是。框架可以完成上下游资源的打通、调试、排障、优化等。很多工具也是基于这些框架而产生的。
本次demo会使用到的也是最受欢迎的工具Serverless Framework,之所以推荐大家使用的原因如下:
Serverless Framework 贯穿 Serverless应⽤的整个⽣命周期。
在开发自己的应用时,会涉及到开发、部署、测试、监控、安全、审计、协作等,Serverless Frameeork提供了非常完整的解决方案。本次实战主要会用到CLI命令行工具进行部署。
Serverless 架构:典型场景 Top 3
其他场景:这些场景也是很适合Serverless
以下是基于web应用场景展开的,一个典型的应用是静态⽹站托管:通过结合云解析、SSL证书、CDN 和 COS 等组件,快速⽀持静态⽹站托管的场景。⽆需在多个产品控制台进⾏繁琐配置,即可⼀键部署⼀个css/js/html的静态⽹站,⽀持各种框架(Hexo、Vuepress、Lavas、docsify、thumbsup等)上节课陈涛老师也有进行demo演示。
RESTful API场景:当涉及到动态请求时,可以通过 SCF 云函数及 API ⽹关组件,轻松构建 RESTful API,极简配置,便捷部署,即可完成 API 的 CRUD 操作,适⽤于多种业务场景。
一个完整的网站是静态和动态的结合,还会有分离的架构,结合上面的场景,静态资源可以托管到COS上,动态或数据流的请求可以通过Express等框架,然后通过API网关、SCF和数据库的能力来支持,这样就是一个非常完善的Web应用。大家可能会觉得复杂,但其实用了Serverless Framework后体验是一样的。通过结合多个 Serverless Components,结合后端 API 与前端 Vue.js 结合等场景,帮助开发者更便捷地部署 Serverless 全栈 Web 应⽤。
Serverless ⽤户案例
第一个是教育行业案例,EF 英孚教育,是英语教育机构。
EF客户痛点:
客户价值:
第二个是游戏行业的用户案例,江娱互动是⼀家⽹络游戏研发商,主要从事⽹络游戏开发,以及相关游戏服务。旗下有《世界争霸》、《农场⼩镇》等。
客户⽅案:
客户价值:
下图是客户矩阵图,各⾏各业:他们都在⽤ Serverless 架构。对于开发人员掌握使用Serverless已经是很有必要的。
Serverless Components 是 Serverless Framework 重磅推出的基础设施编排能⼒,⽀持开发者通过 Serverless Components 构建、组合并部署你的 Serverless 应⽤。
有以下四个显著特点:
下图是一个简单的Serverless Component例子,是基于腾讯云COS对象存储服务。基于该组件可以快速完成部署。
⾼阶组件:基础组件的复⽤和组合
结合组件,构建 Serverless 应⽤
现在Serverless对框架的支持并不局限于Node.js语言,还包括Python、PHP等,这些组件都是开源的。欢迎大家开发属于你⾃⼰的 Component,成为开源社区的贡献者!
Serverless Component对 Node.js 的框架适配
1. 帮助创建了⽹关、云函数等资源。通过 serverless.js 实现
2. Node.js 组件,把 API ⽹关的event 修改成了 HTTP 请求,让框架匹配到云函数上
具体参考:https://www.npmjs.com/package/tencent-serverless-http
具体参考:github.com/serverless-components/tencent-express/blob/master/docs/configure.md
费⽤问题:超值免费额度
Serverless Framework 服务当前免费, 但该产品所⽤到的相关腾讯云产品将按照资源使⽤量进⾏收费(遵循各产品的计费规则)。通过免费额度构建 serverless 应⽤,每年能节省 (13.3+44.432+6) × 12 = 764.784 元,相当于 PV 3w的站点免费⽤,24 个⽉的免费视频会员,或 10 次免费的机场贵宾厅。关联产品免费额度,详细说明如下图。
课程源码相关地址:
GitHub github.com/serverless github.com/serverless-components