小程序 Serverless: 解放生产力,驱动研发效能提高

摘要:以“数字金融新原力(The New Force of Digital Finance)”为主题,蚂蚁金服ATEC城市峰会于2019年1月4日于上海如期举办。ATEC移动开发专场分论坛上,蚂蚁金服前端技术专家袁收纳带来了主题为《小程序 Serverless: 解放生产力,驱动研发效能提高》的精彩分享。前端

演讲中,袁收纳分享了蚂蚁金服Serverless架构的技术特色及设计框架。对比目前小程序的传统开发流程,展现了Serverless架构高效简洁的优点。
在这里插入图片描述
袁收纳 蚂蚁金服前端技术专家java

小程序开发现状

首先来看一下在目前小程序开发的状况下应该如何处理。
在这里插入图片描述
在传统模式中,当咱们须要去开发一个小程序的时候,咱们依旧须要采用像开发传统 app 同样的方式进行业务开发。在总体业务开发中,咱们须要多个角色的协同,大体来讲,咱们须要以下的一些流程:node

  1. 小程序的技术开发人员开发小程序端上业务,实现小程序 UI,体验端的交互逻辑等。
  2. 后台的技术开发人员须要经过相应的后端语言(java/nodejs/c#等)来开发后台业务。这里的后台业务包含登陆、权限、数据操做、业务逻辑控制等。后台的技术开发人员须要经过相应的后端语言(java/nodejs/c#等)来开发后台业务。这里的后台业务包含登陆、权限、数据操做、业务逻辑控制等。
  3. 先后端人员开发好逻辑后进行部署联调
  4. 服务部署后,须要运维的人员来处理环境问题、监控、容灾等问题,以确保服务的持续可用先后端人员开发好逻辑后进行部署联调 服务部署后,须要运维的人员来处理环境问题、监控、容灾等问题,以确保服务的持续可用服务部署后,须要运维的人员来处理环境问题、监控、容灾等问题,以确保服务的持续可用先后端人员开发好逻辑后进行部署联调 服务部署后,须要运维的人员来处理环境问题、监控、容灾等问题,以确保服务的持续可用
  5. 最后,安全的人员须要为应用制定安全规则,搭配相应的安全处理方案,确保服务的安全可靠,不被恶意攻击最后,安全的人员须要为应用制定安全规则,搭配相应的安全处理方案,确保服务的安全可靠,不被恶意攻击

从以上流程咱们能看出,在现有的模式中,咱们开发一个小程序的成本其实蛮高的。从两个地方来看,一个是人力成本,一个是资源成本。git

人力成本数据库

在上述模式中,咱们一个小程序须要 3-4 个角色的参与才能确保咱们的小程序能持续稳定的服务。这对小规模的小程序或者孵化阶段的小程序来讲人员投入是很是大的。小程序

资源成本c#

在传统的模式中,为了能让咱们的小程序稳定运行起来,咱们须要购买大量的资源。最多见的就是 ecs * 2 + rds + slb + 域名 + 证书 等,若是咱们要作安全控制,还需购买云上的安全设施,好比 ddos 防护等。这些资源无论咱们业务量多大,咱们都须要持续付费,对用户来讲,这个成本是很是高的。后端

综上,咱们能看出,在传统的模式中,人力成本和资源成本两大投入会成为制约小程序快速布局落地的拦路虎。若是咱们在小程序业务中仍是使用传统的开发模式,那咱们业务的总体赋能将会来的不够经济、快速。api

因此,咱们须要使用一种更加简单、高效的开发方式安全

更简单的Serverless开发方式

经过上述的分析,咱们能看到传统模式不利于咱们小程序的快速布局,咱们须要采用一种更高效的研发方式来实现快速布局,这种方式就是 Serverless 模式。采用蚂蚁的 Serverless 产品 后端云服务,咱们能够用更高效、简单的方式快速实现稳定、可靠的小程序后台服务。
在这里插入图片描述
BaaS

模块后端级服务。通常状况下,在开发小程序的后台数据服务时,开发团队须要在云上购买相关的短信服务来供前端使用。在有了BaaS以后,开发团队能够经过小程序自己直接操做,例如发送短信的功能,如今能够直接经过小程序完成,而不须要后端参与,所以大大节省了开发成本。

服务托管

目前的状况下,不管是前端应用仍是后端应用,都须要后台来处理不少东西,开发者还会去购买云ECS、购买域名并进行域名备案等工做,以上这些步骤都是不可避免的。在服务托管模式中,数据库、域名、证书以及整套安全防控均为服务性体系。在这种模式下,开发者只须要把本身业务逻辑实现好提交给平台,平台会完成系统部署并挂到网关上。简而言之,开发者无需再关心底层环境、数据以及服务器的各类配置等,取而代之的是把代码提供给小程序平台,由平台完成这一系统操做。

函数计算

函数计算是比较简单的计算单元,咱们能够采用函数计算来处理一些简单的异步、批处理操做,例如批量化操做、批量化处理图象以及处理一些比较耗资源的数据。基于异步事件以及按量付费的函数计算,咱们无需再搭建大规模的计算集群,只需经过函数计算便可快速、低成本地实现计算能力,串接业务。

蚂蚁小程序 Serverless服务结构

Serverless的服务大结构分为以下图所示四层:
在这里插入图片描述
第一层,阿里生态支持层。

Serverless支持全部阿里的生态,为开发者提供十分灵活的接入方案无缝接入支付宝高德等服务,并容许开发者直接使用这些服务。

第二层,统一接入层。

小程序的一个核心特色就是能经过一个小程序快速布局到多个端上,以便快速吸取各个端上的流量,为业务带来红利。

在传统的模式中,若是咱们须要将小程序部署到多个端上,那咱们须要基于每一个端的登陆体系实现认证,这个对开发者来讲成本仍是蛮高的。

在蚂蚁 Serverless 服务中,咱们提供了统一接入能力,客户再也不须要去处理各个端上的认证差别,经过 Serverless 服务提供的统一 api 便可快速实现认证,大大缩减开发时间。

第三层是Serverless架构的核心层,其具备文件储存,数据储存,服务托管,函数计算等诸多能力。接下来就为你们详细介绍这以上几种能力。

文件储存;

在如今的移动互联网中,咱们有大量的资源须要使用上传、下载。在传统的模式中,咱们须要购买存储、cdn、域名、证书等,而后再使用后端服务进行文件的存取操做,总体仍是比较复杂的。同时,当用户在移动端状况下作营销或红包投放时,用户资源的访问量是很大的,会出现后台承载量有限、开发成本昂贵等问题。

基于这个场景,小程序 Serverless 平台为开发者提供了基于 CDN 的文件 BaaS 服务,经过咱们封装良好的 SDK,开发者只需将文件经过接口上传,便可直接享受到 CDN 的能力,为文件带来最佳的访问性能以及海量的访问量。

数据储存;

在数据储存方面,小程序 Serverless 服务针对不一样的小程序场景提供了不一样的解决方案。

对中小型小程序来讲,小程序能够经过客户端的SDK操做数据库里的数据,无需服务端参与,便可完成数据的存取操做。在此过程当中,平台为用户的数据提供了严格的管控以及灵活的 DSL 配置,开发者能够根据本身的业务需求定义数据的访问策略,让客户端能够安全、灵活地访问数据

DSL 样例以下:

{
 // 规则的范围是 comment 这个集合
 "comments": {
  // 全部人可读".read": true,
  // 只有当操做者(请求来源)和资源全部者是同一我的时可写
  ".write": "request.auth.userId == resource.auth.userId",
  // 全部人能够进行其余操做
  "*": true
 },
 // 规则的范围是全部集合
 "*": {
   // 全部人能够进行任何操做
   "*": true
  }
}

对于复杂后端逻辑的小程序来讲,小程序 Serverless 提供了基于服务托管的后端解决方案,经过服务托管,开发者能够得到和开发后端应用同样的体验,开发者能够对数据持有最大的自由操做权,能够彻底按照本身的业务体系定义。

服务托管;

在传统模式中,开发者须要花费大量的精力去作环境的搭建、系统部署、运维等事项,同时,还需花费很高的成本去实现高可用等可用性方案,成本高,性价比低。

基于这个场景,小程序 Serverless 服务提供了服务托管的解决方案。经过服务托管,开发者无需再关系底层环境、后端运维的各类细节。开发者只需将业务代码提交到云端便可,云端会自动完成代码的构建、部署等各类事项。让开发者真正的无需关心底层运维便可快速实现后端业务。

使用服务托管模式,开发者能够得到以下优点:

开发者无需单独购买域名证书,无需再进行域名备案,大大缩短新项目上线周期
开发者无需关心云上复杂后端环境的搭建,只需将精力集中在业务逻辑的开发上便可,大大缩短研发时间
服务托管方案为后台服务提供了弹性伸缩的能力,以及跨机房容灾的能力,开发者再也不须要花费大量精力大量资源去搭建复杂的容灾伸缩机制,只需接入服务托管便可一键具有可靠的容灾能力。
服务托管采用按量付费机制,只在有真实业务产生时才会产生费用,和 ecs 相比,成本能大大缩减。
函数计算;

函数计算是一种更轻量的服务托管,是一个个单一的后端计算单元。经过函数计算,开发者能够将原有的复杂计算逻辑拆分为多个计算函数,而后经过事件或者http 方式串接起计算业务,在实现对业务解耦的同时也能缩短对后端资源成本的依赖。

咱们平台官方即将提供丰富的业务云函数,用户开箱即用,无需再去处理底层复杂的逻辑。好比咱们有一个图片水印的函数,专门负责处理图片的水印,咱们在上传文件后,只需触发一下水印函数便可对文件实现水印处理,无需咱们在应用里进行复杂的处理逻辑,和业务真正解耦。

数据分析能力;

基于蚂蚁金融科技的数据能力,咱们为用户提供多样化的数据分析能力。基于咱们提供的数据能力,用户能够更好地对业务进行决策,对系统进行优化,实现更高的业务价值。

安全管控能力:

基于蚂蚁多年的安全积累,小程序 Serverless 服务为运行其上的应用提供了专业的安全管控。从接入层的防 ddos, 到链路层的证书验证,再到数据层的内容安全控制。咱们为客户提供了全方位的安全控制,保障用户的业务能持续安全运行,免受恶意攻击。同时,蚂蚁专业的安全团队也在不断监控管理,为用户服务的安全作更进一步的防控

第四层,蚂蚁的生态能力层:

经过开放平台,小程序能够直接分享到蚂蚁生态带来的红利,开发者能够基于信用来作租借,基于会员来作红包等。在传统的方案中,咱们在接入蚂蚁生态时成本较高,须要进行不少的安全处理。在小程序 Serverless 服务中,平台和蚂蚁开放平台进行了打通,用户无需再关心原有复杂的接入方式,无需再关心签名等安全措施,只需经过咱们的sdk,便可直接调用蚂蚁开放接口,大大缩短研发时间。一笔支付的时间,能够从四五个小时,缩短到十分钟,甚至对比较熟练的用户,五分钟就能够搞定。

Serverless后端解决方案

在这里插入图片描述
基于函数计算与服务托管,小程序 Serverless 服务提供了一整套的后端解决方案,旨在为开发者提供最简洁高效的后端研发模型。

对小程序开发者来讲,经过小程序 Serverless 服务的后端解决方案开发将会变得很是简单,只需执行以下的操做便可:

在 ide 中编写后台服务代码以及 function 代码后将代码经过 ide 提交到云端
根据业务需求配置 function 触发器
在小程序端经过 sdk 直接请求后台的服务接口
整个过程开发者无需关心云上基础设施的搭建以及相关的运维管控,只需实现实现业务逻辑便可,简单高效

Serverless客户端解决方案

对于一些轻量化的场景,咱们只需执行简单的一些数据操做便可。基于这种场景,小程序 Serverless 服务提供了客户端解决方案。
在这里插入图片描述
区别于后端解决方案,客户端解决方案的核心是平台把后面的服务经过服务化能力直接输送给小程序,小程序可经过客户端的方案直接操做相应的服务而无需后端的参与。

假如一个商家给顾客发促销短信,经过平台的SDK不须要通过任何服务器,发短信发推送等功能小程序均可以直接实现。实现过程当中,通讯链路接入安全防控体系,经过这条链路的数据将都有安全保障。

Serverless与蚂蚁开放能力

在原有模式下,创建一个芝麻信用或者创建一个支付可能须要半天或者一天的时间, 其中涉及到认证、授信、鉴权等多种复杂操做。 为了给开发者提供便利,小程序 Serverless 平台和蚂蚁开放平台进行了互信打通,开发者经过平台开发时无需再关心原有的复杂认证流程,只需采用咱们的 sdk 调用相应接口便可,简洁高效。
在这里插入图片描述

Serverless带来的优点

Serverless方式会为开发者带来多方面的优点:

研发率的提高

在传统模式中,咱们须要大量的资源、人力投入。协同成本高,时间周期长。好比在传统的方案中,咱们须要备案域名,购买证书,这部分至少须要 40 天的时间,这部分时间没法节省,成本很是高。在具有域名的状况下,因为用户还需处理庞大的后端底层业务,按目前的统计状况来看,实现一个中小规模的小程序还需 21 天左右,总体基本须要2 个月时间。

在 Serverless模式中,因为复杂的底层逻辑都已托管,域名等也已由平台提供,用户只需完成本身业务逻辑的开发便可,总体的开发时间能从以往的 21 天缩短到 5 天,大大提高了研发效率。
在这里插入图片描述
安全性的保证。

对于通常规模的团队来讲,安全是一个比较容易忽略的话题。可是如今互联网时代攻击无处不在,咱们的业务可能随时会受到别人的恶意攻击,提供一套安全可靠的防控保障业务的健康尤其重要。

在传统模式中,实现系统的安全可靠咱们须要有专业的安全人员介入,而且须要在云端购买大量的安全资源。和实现高可用同样,咱们须要投入不少的资源和成本,性价比很低。

得益于蚂蚁多年来的安全积累,小程序 Serverless 服务为用户的服务提供了全方位的安全管控,全方面保障用户业务的安全。举例来讲,咱们为用户提供了以下安全控制:

  • 接入层控制: 在接入层控制上,平台为全部应用提供了 ddos 的流量防御以及防火墙的防御,保障业务流量的安全性。 内容安全控制:
  • 针对全部上传到平台的资源,咱们都会自动作风险识别,对于涉黄、涉政、暴力等有法律风险、舆论等风险的资源进行实时管理,确保不会给用户业务带来风险。
  • 访问控制: 针对客户端的 BaaS 服务,咱们为开发者提供了基于 DSL的安全控制策略,开发者能够根据业务需求对数据进行强管控,保障数据不发生非法访问以及泄漏。好比数据存储服务的规则以下 控制台控制:
  • 对于用户的控制台操做,咱们接入了蚂蚁专业的风控体系,对登陆用户进行精确的风控校验,即便用户非法获取到帐号密码也没法直接操做控制台,确保用户后台不会被恶意操做。

对于安全方案,basement 正在不断补充优化,经过 basement,用户无需单独支付费用,便可享有专业的安全控制,性价比极高
在这里插入图片描述
产品的可靠性。

在传统的模式中,因为受限于成本、技术等限制,大多数的应用都是单节点、单机房运行。这种状况的容灾能力是很弱的,若是宕机或者机房网络异常都会形成服务的中断,势必会影响到业务。

若是要实现高可用,在传统模式中,咱们须要投入大量的底层资源、开发、运维资源,实现复杂度高,成本高,对于通常规模的应用来讲性价比很低

在使用小程序 Serverless的模式中,平台原生支持了同城多机房的容灾能力。全部服务的数据都会进行多机房的互备,同时在应用层,咱们也提供了动态的切换能力,能够保障用户的服务在单机房故障时能持续可靠继续服务,保障业务的稳定性。

同时,平台为上面运行的全部服务提供高可用能力的同时不针对高可用收费,用户无需付费便可享受到专业的高可用服务,性价比极高
在这里插入图片描述
更低的成本

在传统模式中,咱们须要大量的人力投入,资源投入,这对公司来讲是一笔不小的成本,咱们从两个方面来看:

  1. 人力成本

在传统模式中,咱们须要前端 + 后端 + 运维 + 安全等多个角色的协同,人力投入大,成本高

在 Serverless 模式中,只需一个全栈的前端工程师便可完成小程序的开发,人力投入小,成本低,收益高

  1. 资源成本

在传统模式中,无论业务是否在运行,都须要为底层的众多资源付费。这些资源包含服务器、数据库、负载均衡、监控、安全等产品,对于 dau 不高或者访问集中化的应用来讲,这种付费方式成本很高。

在 Serverless 模式中,全部的资源都是按量付费,只有真正发生了使用才会收费。同时,对于安全、高可用等能力,用户无需付费。因此,在使用小程序 Serverless 服务的状况下,用户只需花费原有模式 50% 如下的资金投入便可快速实现一个可靠、稳定、安全的小程序服务。
在这里插入图片描述

混合部署模式

对于已有服务的开发者来讲,能够采用两种方式接入到蚂蚁小程序 Serverless 服务中,咱们称之为混合部署模式:

  1. 对于现有自购 ecs 的开发者,能够经过服务托管的形式直接将应用部署到平台中便可直接使用。
  2. 对于稍大规模的商家或者SV,在后台已经搭建了整个集群,这样的业务是没有办法直接迁移的。对于这种状况平台提供了经过后端服务或者函数直接调用现有服务的方案。经过这些方式,把用户现有的后端的代码直接部署到平台中,并经过平台投放到多个渠道上面,让业务能快速落地。

在这里插入图片描述

总结

整体来讲Serverless方案能给开发者带来如下优点:首先可以带来人力上、时间成本上、资金成本上的节省。更重要的是方案可让用户能以最简单最高效的方式上线业务,在目前电子商业瞬息万变的节奏中,先发制人,达到最快占领市场份额并攻城略地的效果。
点击阅读更多,查看更多详情

相关文章
相关标签/搜索