前不久有一个朋友问我,到底是做什么端的小程序比较好?
我只问了一句,你的产品里是否涉及钱和服务,如果涉及这两者,建议你选择支付宝小程序。你可以通过其他小程序玩裂变,但如果你想做服务和商业,一定要考虑支付宝小程序。
小程序To B的战争早已打响。从前台看,是小程序、IoT的解决方案之争;从中台看,体现在数据服务的争夺;而在后台,则取决于云服务的基础设施谁更得用户青睐。
针对后台云服务,支付宝小程序是如何构建自己的商业底层实力?
传统小程序开发
VS
小程序云服务
传统的小程序后端开发常见的痛点是:后端环境搭建复杂,比如要考虑服务器、数据库、域名、证书等;搭建后端完成,应用发布到云端的过程冗长,这里涉及CI/CD、编译打包、多环境等;同时小程序的开放能力集成复杂,要考虑签名验签、异步回调。所有这些流程梳理完要花费几天时间。
为了让开发者不必在后端开发上耗费太多精力,支付宝小程序云服务提供了两种解决方案,一种是经典的有服务器自主运维的云应用,另一种是无服务器托管模式的Serverless,通过小程序云服务搭建后台,省去了开发者自己搭建后台耗费的人力物力成本,让开发者可以把精力放在支付宝小程序的业务实现。
1
支付宝小程序云应用
有服务器自主运维
小程序云应用是一个以开发者为中心,以简单方便+自主可控为目标,针对小程序进行场景优化的应用PaaS平台。小程序云应用的定位是:专注于为小程序提供快速构建、稳定运行小程序后端的服务。
小程序云应用提供了哪些能力?
(1)便利性:比如IDE端提供了插件之后,可以让后端的开发者和云端进行无缝打通,后端代码可以在IDE里面直接发布到云端,这里小程序云应用提供了一键构建云端环境、一键发布的能力。针对支付宝小程序的场景,小程序云应用设置了自动分配测试运营和一些相关的证书,让开发者可以直接使用MySQL数据库。
(2)灵活性:开发者可以一键构建后端环境,但这并不意味着缺少灵活性。小程序云应用允许开发者自由组合蚂蚁金服金融科技的产品,在满足便利性的同时也能实现灵活性。另外小程序云应用有一套高可用架构,提供监控预警能力。
(3)自主可控:小程序云应用提供服务器,开发者可以拥有、登录或重启,也可以修改密码。也就是说,服务器是由小程序云应用提供,但使用权归开发者。
(4)提高代码的研发效率:除了方便开发者使用和构建后端环境之外,小程序云应用更关注在开发过程中如何提高代码效率,这里小程序云应用提供了自动生成代码模板的能力,方便开发者使用。
对于一个有服务器的后端研发流程,可以分为4步:构建云端的环境和服务器——>代码开发——>应用发布——>应用运维。小程序云应用是如何在每个阶段简化开发过程呢?
首先,作为一个小程序开发者,你需要了解IDE、蚂蚁开放平台和小程序云应用的关系:
在蚂蚁开放平台通过登录打通的方式,可以直接进入小程序云应用的页面,通过蚂蚁开发者工具Node.js或者基于Java的IntelliJ IDEA插件,也可以进入到小程序云应用中,这样开发者不必在三者间切换,从而实现一站式开发小程序。
在了解一站式开发小程序之后,小程序云应用是如何帮助开发者构建云端环境?这里底层编排引擎非常重要,它通过应用创建、资源创建、数据库配置、网络配置、自动配置二级域名和证书,一次性帮助用户完成云端环境的构建,从用户的体验来看,就是完成5步的点击操作即可。
IDE提供一键发布的能力,帮助开发者直接将应用发布到云端。在一键应用发布的背后,小程序云应用其实是集成了CI/CD和发布部署能力,从而给用户提供良好的一键发布的体验。
如何实现代码研发效率的提升?
代码研发效率的提升有两点:一是代码托管云端构建,二是代码模板自动生成。
从代码模板自动生成的角度,比如技术类代码模板,通过支付宝认证获取用户信息,完成文件上传、认证授权、数据库访问等操作,从而提供给用户生成代码的能力;
对于业务类代码模板,需要根据不同的业务类型,比如支付、营销、信用等,深度集成蚂蚁金服的自有能力。例如,支付不是一个接口就可以简单搞定,而是需要多个接口串联,因此小程序云应用提供的代码并不是针对一个接口,而是将整个支付链路串联起来,用户只要通过修改一些参数(如公钥、私钥等)就可以运行代码。
对于场景类业务,不同行业的支付宝小程序,除了通用的能力之外,还应该具备行业特色。小程序云应用结合蚂蚁金服积累多年的行业经验,针对不同行业打造不同的小程序代码模板,从而提升代码研发效率。
小程序云应用的语言框架是什么?
小程序云应用的语言框架有两种选择,对于熟悉前端开发的开发者,小程序云应用提供Node.js;对于习惯Java的开发者,小程序云应用提供SOFABoot和Spring Boot两种框架,Spring Boot是目前最流行的开源框架,而SOFABoot 是蚂蚁金服基于 Spring Boot 构建的一个研发框架,扩展了很多企业级特性,以解决大规模团队开发云原生微服务系统中会遇到的问题,如类隔离、ReadinessCheck,日志隔离等等能力,后续会开放更多内部实践过的特性,如 Spring 上下文隔离,合并部署,动态模块,Tracing、Metrics、Streaming、测试框架等。
对于高可用,小程序云应用提供以下方案的支撑:
多可用区,可以简单理解为多机房;通过SLB+ECS实现负载均衡;弹性伸缩和监控预警能力,保障对高可用的支撑。
小程序云应用的后期运维,通过一个Web控制台,提供多种运维能力帮助用户做应用管理、发布、回滚、启停等。
小程序云应用的技术架构:
如上图所示,小程序云应用的底层是阿里云计算、存储、网络的基础能力,以及蚂蚁开放平台支付、安全、信用等能力;在底层能力之上,通过蚂蚁金服的应用PaaS平台提供一些基础能力,包括环境资源管理、发布部署、弹性伸缩、监控分析、分布式中间件;在基础能力之上构建小程序云应用的场景化能力,包括IDE插件的无缝集成、环境构建、应用运维和高可用支撑。最上面小程序云应用支撑的是整个阿里系小程序,包括支付宝、钉钉、淘宝、高德等。
前段时间阿里巴巴发布了“一云多端”计划,“多端”就是用户一次开发小程序的前端就可以在钉钉、支付宝、淘宝、高德里面通用。“一云”就是支付宝小程序云,通过一个服务器的后端支撑多个前端。
总而言之,小程序云应用是一种经典的有服务器自主运维模式的后端搭建,如果开发者不想关心后端如何搭建,只想考虑前端业务逻辑,不妨考虑小程序Serverless。
2
小程序Serverless
无服务器托管模式
当开发者想要开发一款小程序的时候,需要考虑的东西有很多:
这个是一个典型的场景,也是开发商的一个标准模式。而对于创业者,或者想快速开发一款小程序的人来说,有没有一种方式将复杂的后端简化?
设想一下,能否将右面所有的东西都简化成一个API,这样用户在开发小程序的时候,只需要考虑业务逻辑,后端直接调用相应的API即可?
如何实现?——>Serverless提供思路:
Serverless是目前最受开发者关注的技术之一。Serverless不代表再也不需要服务器了,而是说:开发者再也不用过多考虑服务器的问题,计算资源作为服务而不是服务器的概念出现。Serverless是一种构建和管理基于微服务架构的完整流程,允许用户在服务部署级别而不是服务器部署级别来管理你的应用部署,用户甚至可以管理某个具体功能或端口的部署,这就能让开发者快速迭代,更快速地开发应用。
Serverless对于小程序后端简化的启示:
传统开发模式可以抽象成三大类内容:
计算资源,就是常说的服务器,包括常见的物理机、虚拟机、容器等;
中间是存储和基础能力,存储包括文件存储、数据库、离线存储等,基础能力是用户在开发过程常用的辅助能力,比如视频压缩、图片水印、消息、定时任务等;
网络和安全,这往往是云端最复杂的部分,这里需要考虑安全、稳定、容灾、风控等问题,也是开发者最容易忽视的问题。
基于这三部分体系,Serverless如何简化?
网络和安全的简化方式:将域名、证书、流量控制、容灾等通过平台内置,由云端接管,形成底层基础设施,对用户直接透明。
计算资源这部分的简化方式:将其所有内容简化为Compute,所有的计算资源在云里对于用户的直观感受就是运行池,运行池如何布置、弹性如何实现等,无需开发者关心。
存储和基础能力的简化方式:BaaS(Backend as a Service)是Serverless的核心。后端除了计算以外的所有能力都可以封装为API,实现开箱即用。简单来说,用户根据需要可以随时调用相应的API,而不需要关心底层的执行和运维。
以上就是Serverless最直观的抽象。基于Serverless的原理,如何构建支付宝小程序Serverless呢?
支付宝小程序Serverless架构如下:
首先来看Compute 部分,从用户的角度,他不需要考虑服务器、Linux、文件存储等,而只需要关心代码,这里涉及App Service的概念,App Service意味着当用户提交一个应用到云上,云端会自动识别应用的构件、部署、弹性,中间的过程用户不需要关心,直接通过API调用即可。
BaaS这部分,就是将所有的能力封装成API,上图中列举了三种解决方案:存储方案、多媒体方案、安全方案。以存储方案为例,存储方案就是将文件、数据库的存储进行API化。举例来说,如果用户有一份数据需要保存,通过调用存储方案API接口就可以实现直接保存。
在Compute和BaaS之上,整套小程序Serverless体系中,用户是不需要关心域名和证书的,因为域名、证书、DDoS防御、流量镜像等已经内置在平台里。需要说明的是,流量镜像是蚂蚁金服特有的能力,可以帮助用户分析流量,寻找流量的风险点,从而对流量进行处理和清洗。
小程序Serverless最上层要解决认证问题。小程序Serverless中已经内置支付宝、高德的体系,默认在使用时已经包含OAuth方案。随着阿里系小程序的全面打通,云端的认证差异问题将通过体系内置方案解决,对用户而言只需要使用统一的API就可以完成认证。
小程序Serverless重点的技术方案如下:
(1)共享资源管理
当用户访问网关时,网关会产生一份摘要数据,数据信息很简单,比如“A小程序访问a数据库1次”;数据产生后会进入调度核心,调度核心会根据用户的摘要数据判断用户要访问哪里,并将信息传递给决策,决策再把信息录入到相应数据库中。
由于用户的规模是处在动态变化中,随着用户规模的递增,系统感知到数据的增加,会新初始化一个独立的实例,保证更高的性能和可用性;如果用户数增长特别迅猛,系统感知到后也会将数据进行一定的迁移。这样就实现了根据用户的增长情况,底层资源进行动态调配。
(2)Compute调度
Compute调度依赖于App Service的弹性支撑,是如何实现呢?
App Service有两个概念很重要,一是弹性免运维;二是按量。所谓按量,就是App Service是按照正在执行的业务量来计算。当用户的访问信息进入调度核心,如果机器没开始运行,则将访问信息放到预热池。预热池里会提前初始化Node.js或者Java的执行环境,这样当用户访问信息进入时,可以从预热池中快速调度资源进入Runtime中执行。随着用户访问信息的减少,Runtime会释放一定的资源。这样Compute调度就可以实现根据业务量的情况,在底层资源配置上实现动态化。
(3)数据安全
数据安全问题是Serverless的核心问题。当小程序Serverless把后端服务开放到云端时,后端服务的安全性如何保证?
当用户访问信息通过语义控制后,会进入安全规则进行校验,安全规则的样例如上图。安全规则可以简化为两条:一是用户的数据写入后,所有人都可以读;二是用户写入的数据,只有用户自己可以修改。
不仅如此,小程序Serverless还提供了角色的定义,这就意味着开发者可以指定管理员有哪些权限,游客可以访问哪些内容等。
小程序Serverless的优势:
(1)研发效率大幅提升:在小程序Serverless解决方案下,不需要考虑服务器、资源配置、关联端口等问题,整个开发效率会大幅提升。此外,由于在我国域名申请是需要备案的,备案时间需要30~45天,这就意味着新业务的上线至少要等到45天以后。这对于希望小程序快速上线的开发者而言绝对是一个漫长的时间。但是小程序Serverless方案里是不需要用户考虑域名、证书等问题,用户开发完即可上线,这极大地提升了研发效率。
(2)安全可靠的后端服务:网络和安全这部分在小程序Serverless里处于基础设施层,相当于一个平台层,由平台管控,帮助用户实现后端安全服务。整套方案是双机房,数据备份已经帮用户做好,只要用户使用这套方案,就享受安全可靠的后端服务。
(3)更低的成本:以前小程序的后端开发主要考虑两部分成本:一是人力成本,二是资金成本。使用小程序Serverless方案后,整个研发团队不再需要配置运维工程师,后端工程师,安全工程师等,只需要一个会Node.js的前端开发者就可以完成小程序前后端开发。
使用小程序Serverless方案,节省了购买服务器、数据库等的花费,Compute调度是按量付费,也就是只为运行的业务付费,进一步节省了资金成本。
小程序Serverless的未来?
(1)更丰富的BaaS:小程序Serverless会提供更多的基础能力,完善开箱即用的API化。
(2)完善的数据分析:对于商家而言,技术远没有数据更具有价值。数据对小程序的业务发展具有指导意义,小程序想在业务层面取得重大突破,离不开完善的数据分析,为用户提供更多指引。小程序Serverless会不断完善数据分析,帮助商家更好地服务消费者。
(3)前后端一体化:对于商家而言,搭建管理后台非常关键。商家需要录入商品、查看账单等操作,在Serverless方案里提供可视化搭建的集成解决方案,通过拖动相应组件实现管理后台的需求。小程序Serverless后面会不断强化前后台一体化,帮助商家更好地管理后台。
(4)场景化解决方案:在实现通用的能力之外,小程序Serverless会针对一些特殊的业务场景,提供前后端一体化整套方案,满足商家的个性化需求。
支付宝小程序云服务会越来越成为主流的开发模式,“只要有创意、有想法,未来哪怕不具备丰富开发能力的人,也一样可以通过云服务,高效开发出一款不错的小程序”。
未来,阿里系的几大超级App,包括淘宝、钉钉、高德、饿了么等,底层能力都将打通,形成无缝对接。这意味着,阿里系的多元化能力,可以随意组合了。
比如,支付宝小程序不仅可以拥有支付宝的芝麻信用能力,还可以拥有菜鸟的物流能力、饿了么的配送能力、高德的LBS能力等。这些能力都以API接口的形式汇聚到一个API市场里,开发者在开发应用的时候,可以方便地获取,进行按需组装。
想象这样一个场景:你想吃火锅,在高德搜索附近的海底捞,通过高德地图导航过去,同时高德会自动弹出海底捞支付宝小程序,你可以先点餐、领优惠券;吃完饭想去商场逛逛,进入商场的支付宝小程序,小程序里面有停车服务、商家的优惠券等。
阿里真的很懂B端。
虽然阿里系小程序还处于萌芽早期,落地案例并不多,不过随着各大超级App底层能力的互通,势必会实现更多场景的打通和串联。
商家更关注的流量问题,目前,支付宝、手淘、高德、钉钉、饿了么和微博,这5个App的月活总数已经超过20亿。各大超级App间的互相导流,将原本各自为战的流量汇聚在一起,形成超级流量红利。这就意味着,通过入驻支付宝小程序,电商、金融、生活服务等各行业开发者和商家将无需反复“造轮子”,即可快速对接整个阿里数字经济体生态,直接复用阿里巴巴二十年积累的运营能力。
换句话说,支付宝小程序云服务已经帮你到这了,剩下的就看谁有本事了。
1、头条易读遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2、本文内容来自“InfoQ”微信公众号,文章版权归InfoQ公众号所有。