轻松构建基于 Serverless 架构的小程序

本文涉及的产品
简介:

前言

自 2017 年第一批小程序上线以来,越来越多的移动端应用以小程序的形式呈现。小程序拥有触手可及、用完即走的优点,这大大降低了用户的使用负担,使小程序得到了广泛的传播。在阿里巴巴,小程序也被广泛地应用在淘宝/支付宝/钉钉/高德等平台上。

为了支撑大量的小程序,服务端面临的挑战有:

  • 大量的小程序是不活跃的,传统的至少一台服务器的方式会造成资源浪费;
  • 在活动高峰期小程序的调用量激增,要求服务端能够快速进行弹性伸缩。

而小程序开发者往往是客户端/前端的开发者,更多的精力在开发业务代码与应用的快速上线上,而无心顾暇服务端的运维操作。

阿里云 函数计算 是一个全托管 Serverless 计算服务,让开发者无需管理服务器等基础设施,只需编写和上传代码,就能够构建可靠、弹性、安全的服务。

函数计算弹性、免运维、高效、安全的特性十分适合作为小程序的服务端。

解决方案

函数计算封装了一套小程序服务端模板,帮助小程序开发者快速搭建基于函数计算的小程序。

使用这个模板搭建小程序应用具有以下特点:

  • 运维效率高: 无需管理服务器,部署函数即可上线
  • 开发效率高: 基于封装好的数据接口,直接开发业务代码
  • 零费用启动: 服务端基于函数计算,数据库采用表格存储,都是按量付费并且有较大的免费额度

小程序的工作流程

搭建流程
一个完整的支付宝小程序需要以下几个元素:

  • 支付宝 App:是支付宝小程序的载体,运行在用户手机端
  • 小程序客户端:是小程序展现给用户的操作页面
  • 小程序服务端:是小程序的逻辑处理单元,比如对用户进行身份认证以及对数据进行存取
  • 支付宝服务端:是支付宝 App 的逻辑处理单元,包含用户的身份信息

函数计算封装了一套小程序服务端模板,帮助小程序开发者快速搭建基于函数计算的小程序。下面介绍服务端模板的工作流程。

FC 服务端模板工作流程

除了基础设施的运维问题,服务端主要解决两个通用问题:

  1. 身份认证: 服务端提供的 API 如何对客户端的请求进行鉴权?客户端的信息如果泄露如何保证数据安全?
  2. 数据访问: 客户端如何进行数据库操作和文件操作?

这是每一个小程序开发都会遇到的共性的问题,可以通过一些框架或者模板来避免重复建设。因此我们基于函数计算开发了一个小程序应用模板,解决了这些通用的问题,让开发者能够专注在业务逻辑上,快速开发上线自己的小程序。

服务端工作流程

  1. 客户端小程序通过支付宝 App 的 API,获得 authCode,这个过程会在 App 中弹出用户授权框;
  2. 小程序客户端向小程序服务端发起 createSession 请求,用于初始化的身份认证;
  3. 小程序服务端将 authCode 传给支付宝服务端,支付宝服务端校验 authCode,返回 accessToken;
  4. 小程序服务端根据收到的 accessToken 生成一个 sessionId 和一个 STS token,在服务端记录这 2 个信息然后把它们返回给客户端。STS token 是用于访问服务端函数的凭证,而 sessionId 作为前面认证成功而建立的会话信息,通过这 个sessionId 可以识别当前请求的用户信息;
  5. 小程序客户端再次需要获取数据,带着证明自己身份的 sessionId 向小程序服务端发起获取数据请求;
  6. 小程序服务端首先根据 sessionId 获取用户身份信息,再根据用户信息获取相关数据;
  7. 将用户数据返回给小程序客户端。

搭建流程

注册支付宝小程序

  • 准备工作:注册支付宝开发者账号
    如果您尚未注册支付宝开发者账号,使用支付宝账号登录 蚂蚁金服开放平台,并完成开发者身份注册。详细信息请参见 开发者入驻说明
  • 创建支付宝小程序应用

    APPID

    • 生成密钥,需要在小程序服务端与支付宝服务端配置密钥,对交易数据进行双方校验
    • 将公钥配置在 【设置】->【开发设置】-【接口加签方式】,并记录私钥

搭建小程序服务端

  • 准备工作

  • 部署应用

    • 进入控制台应用中心,选择 Mini App Todo List Server Template 模板,填写刚才记录的 APPID 与 PrivateKey,为 DBInstance/LogProject 取个自定义的名字(如果名字已被占用,会报 Already Exists 的错误),部署应用

搭建小程序客户端

fcAccountId 阿里云AccountId
fcRegion 函数部署的区域,例如cn-shanghai
fcServiceName 函数计算服务名称
sessionFunctionName session函数的名称,例如session
dbFunctionName db函数的名称,例如db

由于 fc-nodejs-sdk 使用了ES6语法,在发布小程序时,需要在小程序项目的根目录下,新建一个文件mini.project.json,填入以下内容:

{
  "node_modules_es6_whitelist": [
     "@alicloud/fc2"
  ]
}

至此,开发工作已经完成,您可以调试,上线您的小程序啦。

总结

小程序上线后随着访问量的增加或者活动期间的访问突增,对后端服务的稳定和弹性也是一个很大的考验。函数计算上传代码即可运行,极大地提高了后端服务的开发效率;混合模式的弹性伸缩,轻松应对负载变化。服务端模板与客户端模板可以快速搭建基于函数计算的小程序应用,这些特点使得函数计算成为支撑小程序很好的选择。

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
前端开发 Serverless
Serverless 服务中的前端解决方案——通用 Serverless 架构
Serverless 服务中的前端解决方案——通用 Serverless 架构自制脑图
95 0
Serverless 服务中的前端解决方案——通用 Serverless 架构
|
消息中间件 Kubernetes Cloud Native
Serverless架构基础详解(10)
除了服务的粒度不一样之外,无状态工作负载和Faas一般都具有以下Serverless的特性。
101 0
|
缓存 运维 前端开发
Serverless架构基础详解(12)
传统的架构模式是使用C/S架构的,在典型的web应用程序中,服务器接收前端的HTTP请求处理,在保存或查询数据库之前,数据可能会经过多个应用层,最终后端会返回一个响应。
157 0
Serverless架构基础详解(12)
|
消息中间件 Cloud Native 安全
Serverless架构基础详解(7)
Serverless 架构作为云原生技术未来的演进方向,无服务器架构技术也从观望逐渐落地,据 Gartner 的过往预测数据显示:到 2020 年全球将有 20% 的企业部署无服务器架构。Serverless 将进一步释放云计算的能力,将安全、可靠、可伸缩等需求交由基础设施实现,使用户仅需关注业务逻辑而无需关注具体部署和运行,极大地提高应用开发效率。同时这个方式促进了社会分工协作,云厂商可以进一步通过规模化、集约化实现计算成本大幅优化。
120 0
Serverless架构基础详解(7)
|
Web App开发 存储 Cloud Native
Serverless架构基础详解(6)
从 2019 年开始,Serverless 进入到了一个真正意义上的生产应用,最佳实践快速发展阶段,这一年对 Serverless 而言是具有里程碑式意义的,被很多人定义为 “Serverless 正式发展的元年”。
153 0
Serverless架构基础详解(6)
|
运维 分布式计算 监控
Serverless架构基础详解(8)
Serverless 架构和云厂商所提供的其他云产品进行结合,开发者能够构建可弹性扩展的移动或 Web 应用程序 – 轻松创建丰富的无服务器后端,而且这些程序可在多个数据中心高可用运行,无须在可扩展性、备份冗余方面执行任何管理工作。
118 0
Serverless架构基础详解(8)
|
缓存 Kubernetes Cloud Native
Serverless架构基础详解(11)
如今Kubernetes一统江湖,大家都默默的建立起了基于Kubernetes的容器云平台,于是围绕着Kubernetes的云原生生态蓬勃发展。由于没有统一的平台,针对Serverless目前还存在的一些局限,大家做的优化和改进也是各自为战,难以落地生根。
158 0
Serverless架构基础详解(11)
|
存储 运维 监控
Serverless架构基础详解(9)
随着node.js的普及、前端工程化以及BFF的兴起,越来越多的前端需要关心服务的构建、部署、运维,服务的日志、监控报警等等,严重拖累了前端的开发效率,让前端花很多时间在服务器上排查问题,无疑是痛苦而低效的。
|
Web App开发 缓存 Cloud Native
Serverless架构基础详解(4)
Serverless架构的发展,离不开云厂商的驱动,离不开开源社区的支持,在过去的几年时间,无论是高校、实验室、云厂商等对Serverless架构的研究,还是CNCF等基金会对Serverless架构的持续关注和赋能,还是其他的Serverless社区、开源项目对Serverless架构的建设,Serverless架构都在逐渐的成为更通用,更好用的技术架构,都在成为更简单、更具价值的技术选型
260 0
Serverless架构基础详解(4)
|
Web App开发 存储 弹性计算
Serverless架构基础详解(2)
云计算飞速发展的十余年,整个互联网也发生了翻天覆地的变化,作为被UC Berkeley认为是云计算下一个十年的Serverless架构,被很多开发者认为是“实现了云计算最初的梦想”,那么Serverless架构到底是什么呢?其实,Serverless架构与云计算、云原生的情况类似:Serverless架构到底是什么,在不同的人心中也是有着不同的答案的。
173 0
Serverless架构基础详解(2)

相关产品

  • 函数计算