Serverless 开发实战之Nodejs:三分钟快速定制你的新冠病毒疫情信息查询网页

直接加入直播课程分享群,与讲师零距离沟通。
4
腾讯内部独家SCF资料包
1
课程PPT
4
腾讯云大学热门学习路径,0基础上手
  • 1
    添加右侧“学习君”微信号
  • 2
    向学习君回复口令 “SF”
  • 3
    获得课程福利包
学习君微信公众号
“学习君”微信号

讲师简介

方坤丁

腾讯高级产品经理

Serverless Framework / Components 等开源项目的活跃贡献者,5年云计算产品策划经验,对云计算行业有较丰富的经验和理解,致力于 Serverless 架构中解决方案的推出和落地。腾讯云 Serverless 系列课程特约讲师。

简介

随着 Serverless 生态的不断成熟,越来越多开发者使用 Serverless 架构构建自己的业务,Serverless 的典型适用场景有哪些?怎样借助工具,更快更好的部署自己的 Serverless 应用? 本次课程将带你深入了解这些Serverless的最佳实战应用。

课程大纲

抗击疫情,腾讯云在行动。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 应⽤。

有以下四个显著特点:

  1. 快速部署 – 速度是很重要的,Components ⽀持极速部署 Serverless 架构和应⽤。
  2. 全⾯覆盖 - 既能⽀持基础设施的 Components,也可以⽀持更⾼维度的,场景级别的 Components。
  3. 轻松复⽤ - 你构建的每个 Component 都可复⽤,并且对外发布后,也可以⽀持他⼈使⽤。
  4. 灵活组合 - 可以通过 YAML 或者 Javascript 灵活组合不同的 Components。

下图是一个简单的Serverless Component例子,是基于腾讯云COS对象存储服务。基于该组件可以快速完成部署。

⾼阶组件:基础组件的复⽤和组合

结合组件,构建 Serverless 应⽤

现在Serverless对框架的支持并不局限于Node.js语言,还包括Python、PHP等,这些组件都是开源的。欢迎大家开发属于你⾃⼰的 Component,成为开源社区的贡献者!

Serverless Component对 Node.js 的框架适配

  • Serverless Component 做了哪些改造使其完美适配到云端?

1. 帮助创建了⽹关、云函数等资源。通过 serverless.js 实现

2. 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

全部评论
讲师/助教

评论