前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Serverless 开发实战之Nodejs:三分钟开发新冠病毒疫情查询网

Serverless 开发实战之Nodejs:三分钟开发新冠病毒疫情查询网

作者头像
腾讯云serverless团队
发布2020-03-03 17:10:14
1.4K0
发布2020-03-03 17:10:14
举报
文章被收录于专栏:Tencent Serverless 官方专栏

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

文章整理自腾讯云高级产品经理丁坤方在腾讯云大学的视频分享,完整分享视频如下,感兴趣的读者也可以点击文末【阅读原文】下载讲师PDF

本次分享大纲包括:

1、为什么 Serverless 广受开发者喜爱? 2、Serverless 的典型场景 3、深入理解 Serverless Component 4、为你的静态页面加上后端:搭建express框架  5、三分钟快速定制你的新冠病毒疫情信息查询网页

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 Framework 提供了非常完整的解决方案。本次实战主要会用到CLI 命令行工具进行部署。

2、Serverless 架构:典型场景 

Serverless 典型场景

典型场景 Top3:

  • 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 场景

RESTful API 场景:当涉及到动态请求时,可以通过 SCF 云函数及 API ⽹关组件,轻松构建 RESTful API,极简配置,便捷部署,即可完成 API 的 CRUD 操作,适⽤于多种业务场景。

  • 全栈 Web 应用

一个完整的网站是静态和动态的结合,还会有分离的架构,结合上面的场景,静态资源可以托管到 COS 上,动态或数据流的请求可以通过 Express 等框架,然后通过 API 网关、SCF 和数据库的能力来支持,这样就是一个非常完善的 Web 应用。大家可能会觉得复杂,但其实用了 Serverless Framework 后体验是一样的。通过结合多个 Serverless Components,结合后端 API 与前端 Vue.js 结合等场景,帮助开发者更便捷地部署 Serverless 全栈 Web 应⽤。

Serverless ⽤户案例

1、第一个是教育行业案例,EF 英孚教育,是英语教育机构。

EF客户痛点:

  • 原有业务基于服务器搭建部署,每⽉投⼊的维护成本较⾼,且公司逐渐倾向于把运维⼈⼒释放,加⼤开发的投⼊。
  • 公司内部有多套业务系统且波峰波⾕明显,如⼩程序端、内部线索管理系统、⽤户系统等,存在明显资源浪费,且业务迭代周期⻓。

客户价值:

  • Serverless 架构重构成本较低,免去了环境搭建等繁琐⼯作。
  • 重构后的架构维护简单,开发⼈员可轻松兼任不复杂的运维⼯作。
  • SCF 能够保障⾼性能的并发调⽤,夜间也能⾃动缩减资源,节省了资源投⼊。

2、第二个是游戏行业的用户案例,江娱互动是⼀家⽹络游戏研发商,主要从事⽹络游戏开发,以及相关游戏服务。旗下有《世界争霸》、《农场⼩镇》等。

客户⽅案:

  • 所有⽆状态的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 做了哪些改造使其完美适配到云端?

  • 首先,帮助创建了⽹关、云函数等资源。通过 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 次免费的机场贵宾厅。关联产品免费额度,详细说明如下图。

5、三分钟开发新冠病毒疫情信息查询网页

疫情数据展示页模板,根据 Serverless Framework 构建。

1. 安装

  • 安装 Serverless Framework
代码语言:javascript
复制
$ npm i -g serverless
  • 使用 create --template-url,安装相关 template。
代码语言:javascript
复制
$ serverless create --template-url https://github.com/tinafangkunding/nCov-page
  • 在\nCov-page目录下,运行如下命令分别安装目录下的 NPM 依赖:
代码语言:javascript
复制
$ npm run bootstrap

2. 部署

  • 回到 nCov-page 目录下,通过 serverless 命令来部署应用
代码语言:javascript
复制
$ serverless

如果希望查看部署详情,可以通过调试模式的命令 serverless --debug 进行部署。

代码语言:javascript
复制
 dashboard:    url: http://9u9ywac-n56qlg-1251971143.cos-website.ap-guangzhou.myqcloud.com    env:      apiUrl:   https://service-l77nemo2-1251971143.gz.apigw.tencentcs.com/release/      apiUrlSZ: https://myapi.ihogu.com/public/?s=Whfy.city&city=%E6%B7%B1%E5%9C%B3  api:    region:              ap-guangzhou    functionName:        tencent-fullstack-vue-api    apiGatewayServiceId: service-l77nemo2    url:                 https://service-l77nemo2-1251971143.gz.apigw.tencentcs.com/release/
  21s › dashboard › done

如您的账号未登陆或注册腾讯云,您可以直接通过微信扫描命令行中的二维码进行授权登陆和注册。部署成功后,可以直接在浏览器中访问日志中返回的 dashboard url 地址,查看该全栈 Web app 的效果 。

 Serverless 架构揭秘与静态网站部署实战(附实战源码)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ServerlessCloudNative 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档