点击观看大咖分享
抗击疫情,腾讯云在行动。Serverless(无服务架构)被誉为下一代云计算技术,自概念推出以来,因为能带来研发交付速度提升与成本的降低在业内异常火爆。将随着 Serverless 生态的不断成熟,越来越多开发者使用 Serverless 架构构建自己的业务,Serverless 的典型适用场景有哪些?怎样借助工具,更快更好的部署自己的 Serverless 应用? 本次课程将带你深入了解这些Serverless的最佳实战应用。
本次腾讯云大学大咖分享课程邀请 腾讯高级产品经理 方坤丁 分享关于“Serverless 开发实战之Nodejs”课程的内容。
本次分享内容:
1、为什么 Serverless 广受开发者喜爱? 2、Serverless 的典型场景 3、深入理解 Serverless Component 4、为你的静态页面加上后端:搭建express框架 & 三分钟快速定制你的新冠病毒疫情信息查询网页
1、为什么 Serverless 广受开发者喜爱?
- 各⾏各业都在互联⽹化(电商、教育、办公),并且需要提供“软件”给客户使⽤。可以从本次疫情影响看到发展线上业务是非常重要的。
- 对于不同⾏业的企业来说,软件需要更容易开发和运维,这也是客户的核心需求。
- 云计算⾏业为了⽀持上述需求,将不断演进。
在上一节直播课中,陈涛老师也分享了架构的演进进程,从物理机房到虚拟机,再到容器,再到Serverless。Serverless的出现引发了行业革命,但很多人误认为serverless只是计算的演进,但其实Serverless不单指计算,一般来说Serverless = FaaS BaaS,既有计算能力的提供,也由后端能力的提供,泛指可以弹性扩缩容,并且按需付费的云服务。这里的按需付费与按量付费是有区别的,按需付费是当你不需要不使用时,不收取费用,而不是按时长收费。虽然这些服务的底层依然会运⾏在服务器上,但由于我们将其Serverless化,开发者对其是没有感知的。
典型的Serverless服务的例子:
- 云函数 Cloud Function
- API ⽹关 API Gateway
- 对象存储 Object Storage
都支持弹性扩缩容、按需付费。只要支持上述两个条件,都可以称为Serverless产品。
Serverless 的优势:
- 免费额度,按需付费,降低成本。
- 弹性扩缩容,轻松应对突增流量。使得资源利用率得到提升。
- 关注业务代码,减少运维复杂度。这使得开发者的效率得到提高。
右下角的图,展示了在传统的模式下,搭建企业级架构是需要考虑很多方面的,如运维数据库、分配服务器、集群扩缩容、安全、网络等。对于开发者而言,这很多是没必要的,只需关注自身的业务逻辑。最近流行的全栈⼯程师是指,在⼀些不复杂的业务逻辑,⽆需和后端反复得对接⼝。前端也可以使用Serverless做更多后端的事情,更加⾼效,也提升了自己的能力。对于软件来说 Time to Market 的时间也⼤⼤缩短。
Serverless 引⼊的问题和⽅案:
- 资源的组织和管理更加细致。需要更多关注整体函数的管理和组织。
- 框架的适配和改造。
- 代码调试和排障时和传统开发⽅式的差异,需要通过更多外围的、业务的数据定位问题。
下图是CNCF 基金会landscape对Serverless的矩阵,有很多为了解决上述问题而产生的工具、框架和平台,在不同的平台里可以看到各大云厂商都有自己的Serverless平台,包括开源的厂商也是。框架可以完成上下游资源的打通、调试、排障、优化等。很多工具也是基于这些框架而产生的。
本次demo会使用到的也是最受欢迎的工具Serverless Framework,之所以推荐大家使用的原因如下:
- 开源:最具规模的 Serverless 开源项⽬,在GitHub上拥有34156颗星。
- ⼴泛下载和使⽤:2019年有1200万次下载,有240%增⻓,可以看出来使用量是很大的。
- 客户群⼴泛:被创业公司/500 强公司使⽤,另外Serverless和腾讯云有战略合作,所以在国内技术和工具的支持也会更好。
Serverless Framework 贯穿 Serverless应⽤的整个⽣命周期。
在开发自己的应用时,会涉及到开发、部署、测试、监控、安全、审计、协作等,Serverless Frameeork提供了非常完整的解决方案。本次实战主要会用到CLI命令行工具进行部署。
2、Serverless 的典型场景
Serverless 架构:典型场景 Top 3
- REST API & GraphQL
- Web Application,在该场景上有天然的优势,本次demo也是基于该场景进行的。
- Data Pipeline: Streaming(流数据)& Batch(批量数据)
其他场景:这些场景也是很适合Serverless
- Object Store Callback对象存储的回调
- Web Socket
- Scheduled tasks(定时任务)
- IOT back-ends
- Chatbot(对话平台)
- …
以下是基于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 架构重构成本较低,免去了环境搭建等繁琐⼯作。
- 重构后的架构维护简单,开发⼈员可轻松兼任不复杂的运维⼯作。
- SCF 能够保障⾼性能的并发调⽤,夜间也能⾃动缩减资源,节省了资源投⼊。
第二个是游戏行业的用户案例,江娱互动是⼀家⽹络游戏研发商,主要从事⽹络游戏开发,以及相关游戏服务。旗下有《世界争霸》、《农场⼩镇》等。
客户⽅案:
- 所有⽆状态的HTTP接⼝,⽐如客服消息接收、⽀付回调均迁移到 Serverless 架构上
- ⽆需返回的异步任务,⽐如游戏⾥的上报玩家排名
- 定时任务,⽐如定期对玩家推送相应的活动信息
客户价值:
- API部分没有服务器了,省⼼
- 监控内容⽐较详细
- 引⼊消息队列解耦更彻底,信息不丢失
- 版本管理⽅便,出问题及时切换
下图是客户矩阵图,各⾏各业:他们都在⽤ Serverless 架构。对于开发人员掌握使用Serverless已经是很有必要的。
3、深入理解 Serverless Component
Serverless Components 是 Serverless Framework 重磅推出的基础设施编排能⼒,⽀持开发者通过 Serverless Components 构建、组合并部署你的 Serverless 应⽤。
有以下四个显著特点:
- 快速部署 – 速度是很重要的,Components ⽀持极速部署 Serverless 架构和应⽤。
- 全⾯覆盖 - 既能⽀持基础设施的 Components,也可以⽀持更⾼维度的,场景级别的 Components。
- 轻松复⽤ - 你构建的每个 Component 都可复⽤,并且对外发布后,也可以⽀持他⼈使⽤。
- 灵活组合 - 可以通过 YAML 或者 Javascript 灵活组合不同的 Components。
下图是一个简单的Serverless Component例子,是基于腾讯云COS对象存储服务。基于该组件可以快速完成部署。
⾼阶组件:基础组件的复⽤和组合
结合组件,构建 Serverless 应⽤
现在Serverless对框架的支持并不局限于Node.js语言,还包括Python、PHP等,这些组件都是开源的。欢迎大家开发属于你⾃⼰的 Component,成为开源社区的贡献者!
Serverless Component对 Node.js 的框架适配
- Serverless Component 做了哪些改造使其完美适配到云端?
- 帮助创建了⽹关、云函数等资源。通过 serverless.js 实现
- Node.js 组件,把 API ⽹关的event 修改成了 HTTP 请求,让框架匹配到云函数上
具体参考:https://www.npmjs.com/package/tencent-serverless-http
- Component 的全量配置都覆盖了哪些参数,⽤在哪?
具体参考:https://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 次免费的机场贵宾厅。关联产品免费额度,详细说明如下图。
4、为你的静态页面加上后端:搭建express框架
&三分钟快速定制你的新冠病毒疫情信息查询网页
课程源码相关地址:
官网 https://serverless.com
GitHub https://github.com/serverless https://github.com/serverless-components
腾讯云文档 https://cloud.tencent.com/product/sf
问卷
为了给广大开发者提供最实用、最热门前沿、最干货的视频教程,请让我们听到你的需要,感谢您的时间!点击填写 问卷
腾讯云大学是腾讯云旗下面向云生态用户的一站式学习成长平台。腾讯云大学大咖分享邀请行业技术大咖,为你提供免费、专业、行业最新技术动态分享。