写点什么

小程序·云服务的系统架构和运维实现

  • 2019-02-03
  • 本文字数:4975 字

    阅读完需:约 16 分钟

小程序·云服务的系统架构和运维实现

之前,开发者想要开发一个小程序,常规流程是:要考虑买什么样的服务器,匹配哪些资源(如存储应用、数据库等),此外,还要考虑各种初始化,与服务端口关联等问题。这些工作全部梳理完成可能要花费数天时间。有了“小程序 · 云服务”以后,开发者不用考虑后端复杂的技术操作,并且开发过程非常简单,在几分钟之内就能完成后端环境的搭建,也能在 1、2 天内开发一个小程序。为进一步了解小程序 · 云服务适用的业务场景、系统架构与架构演进等,InfoQ 专访了支付宝小程序·云服务团队,揭秘支付宝小程序·云服务如何帮助开发者快速地开发小程序。

小程序·云服务解决的难点和痛点

蚂蚁金服拥有海量的实名制优质用户,并通过支付宝 App 构建起各种商业和生活服务场景,同时支付宝体系内也积累了数千万 B 端商户,对于商户而言,如何服务好客户是关键。在这样的背景之下,构建一个能帮助商户提升用户体验的平台就至关重要。而支付宝小程序就提供了这样一个平台。对于支付宝小程序,开发者最初采用传统的研发模式。传统的研发模式只解决了小程序前端界面的问题。后端服务还是需要开发者自行购买服务器、证书、数据库、CDN 等基础资源,并且需要进行部署和运维。如果需要使用支付宝的服务(比如获取访问用户的信息),还需要对接支付宝开放平台,进行授权和程序配置。这一系列问题导致了开发者还没接触代码,就已经消耗了大量的时间和资源在服务器和配置环节上。


  • 小程序·云服务保障小程序后端无忧


小程序 · 云服务是针对小程序提供的基于云端的服务,提供云应用和 Serverless 后端云服务两大解决方案,目的是解决小程序后端服务的问题。小程序·云服务让开发者不需要关心证书、运维、扩容,不需要关心被黑客攻击,只需要专注写好自己的代码和业务逻辑即可。


云应用是一个有服务器解决方案,利用蚂蚁金融科技应用 PaaS 平台等基础能力,为开发者提供成熟的技术服务,比如一键构建云端环境(应用、服务器、数据库、域名、HTTPS 证书等),IDE 中一键发布部署,应用资源监控等。云应用保持原有开发者熟悉的模式,使开发者快速开发运维云端应用。


Serverless 后端云服务是一个无服务器解决方案,开发者只要开通服务就能使用函数计算、数据库、文件 CDN 等核心服务。Serverless 后端云服务因其具备 Serverless 优势,可以实现弹性提供服务资源,对商户而言节省了大量的硬件资源。开发过程中也无需关心服务器的运维、部署和配置,并且天然可以调用支付宝的服务接口,是真正的开箱即用服务。

小程序·云服务的架构和技术选型

云应用和 Serverless 后端云服务两种解决方案相对应的开发架构并不相同。

云应用的框架结构和核心能力

云应用依托于蚂蚁金融科技的应用 PaaS 平台、监控分析平台以及分布式中间件平台,针对小程序的场景进行封装优化。应用 PaaS 平台提供完善的环境资源管理、发布部署(灰度发布、蓝绿发布)、弹性伸缩等能力。监控分析平台提供物理资源监控预警,应用日志监控预警等核心能力。分布式中间件提供常用的分布式中间件,比如消息中间件,微服务治理平台等。在 IDE 和 Web 控制台端,云应用对上述能力进行封装,以最简洁的方式提供给用户,并同时针对小程序场景提供自动分配二级域名及证书,云服务器内置 MySQL 数据库、IDE 自动生成调用蚂蚁开放平台开放能力(支付、信用、安全等)的代码等功能。如果用户希望更深度地使用蚂蚁金融科技的能力,也可以直接在蚂蚁金融科技的官网中进行更加复杂的运维操作如分组发布、灰度发布等。



云应用架构图


云应用在 IDE 端提供了丰富的插件能力,让开发者在 IDE 端可以直接和后端云服务进行无缝交互。这些插件能力包括:一站式开通蚂蚁金融科技、一站式构建云端测试和生产环境、一键发布部署应用代码、重启、停止应用、日志查看等能力。


对于 Node.js 应用类型,这些能力直接集成在了蚂蚁小程序开发者工具当中。对于 Java 应用类型,这些能力以插件的形式,集成到开发者熟悉的 IntelliJ IDEA 中。


除了将云端能力集成进 IDE 当中,云应用还提供了 Web 控制台,供开发运维人员在 Web 页面上对应用进行运维操作。在 Web 控制台上,用户可以对测试生产环境、资源、应用进行管理,同时提供可视化的监控页面,对应用资源进行监控预警。对于测试生产环境的管理,云应用提供了构建、删除测试和生产环境。对于服务器,云应用提供了重启、修改密码、Webshell 等功能。对于应用,云应用提供了上传发布包、发布回滚应用、查看发布历史等功能。


云应用为后端开发者提供了足够的灵活性,目前支持三种类型的技术栈:Node.js (Egg)、Java(Spring Boot)、Java (Sofa Boot)。如果选择了 Sofa Boot,就可以使用 SOFAStack 金融级分布式中间件的能力,比如消息中间件等。SOFAStack 在云应用中的定位是解决大型分布式应用对于分布式中间件的需求,这些中间件都经过了“双十一”的检验,具备金融级的高可用性。

Serverless 后端云服务的架构和优化

Serverless 后端云服务依托于蚂蚁金融科技底层的容器、计算、存储、中间件等产品,针对小程序场景进行优化封装,为用户提供完善的小程序 Serverless 开发体验。



Serverless 后端云服务架构

接入能力:

Serverless 后端云服务提供了安全可靠的多渠道接入能力。通过统一多渠道接入方案,Serverless 后端云服务目前实现了高德、支付宝小程序的接入支持,开发者无需关心端上的差异,只需按标准方式开发小程序即可将小程序投递到高德以及支付宝的客户端。同时,Serverless 后端云服务为开发者提供了统一的域名和证书,开发者无需单独购买,开箱即用。


为了给小程序提供安全可靠的运行环境,Serverless 后端云服务在全链路签名的同时,也在接入层做了统一的 DDoS 防御以及蚂蚁金服的流量镜像管控,实时管控请求流量,助力小程序安全稳定运行。

核心能力:

基于 MongoDB 提供的数据存储,基于 CDN 和 OSS 提供的文件储存,基于 SMS 提供的短信等 BaaS 服务,为了给开发者提供更多的能力,Serverless 后端云服务后续还会提供更多的 BaaS 服务,便于开发者实现快速开发。


基于蚂蚁金融科技的 Knative 方案,Serverless 后端云服务提供了函数计算以及应用引擎的能力,在为用户提供服务托管、弹性伸缩等能力的同时,还采用了按量计费的方式为用户节省后端成本。


基于蚂蚁金服多年的风控和安全积累,Serverless 后端云服务为用户提供了 DDoS、防火墙、内容安全、风控识别等安全能力的集成,让开发者在托管服务端的同时还能享受到安全可靠的防护体系,保障业务的安全。


基于蚂蚁金服多年的容灾思想,Serverless 后端云服务对所有的能力都进行了同城双机房的部署,对于所有数据都进行实时备份。同时,基于蚂蚁金融科技强大的中间件体系,实现了应用层的容灾切换能力,全方位保障客户服务的稳定可靠。蚂蚁开放能力是蚂蚁多年的技术、业务积累,能帮助小程序拓宽更多的业务边界。为了简化开发者的授权以及接入开放平台的成本,Serverless 后端云服务和开放平台进行互信打通,让开发者无需再处理繁琐认证流程即可快速使用蚂蚁开放能力。


Serverless 后端云服务需要将用户原有的运维、容灾、安全等业务都进行统一的集成管控,整体的复杂度较高。

小程序·云服务的架构优化

小程序·云服务于 2018 年 7 月初启动,最初的方向是提供一站式的云服务,让小程序开发者可以更加方便地为小程序开发后端代码。小程序·云服务的第一个版本于 2018 年 9 月在云栖大会上亮相,当时已经具备了云应用和 Serverless 后端云服务两种开发模式。但是用户在试用云服务的过程中,需要经常在 IDE 和 Web 控制台之间来回切换,不太方便。经过内部多轮讨论之后,确定了以开发者为中心的模式,用极致简洁的思路,将尽可能多的能力集成到 IDE 中,实现开发者不用脱离 IDE,就可以轻松使用后端云服务。后续开通蚂蚁金融科技、构建应用测试生产环境等功能都会在 IDE 中进行开放。


  • 小程序·云服务的版本选择


为了兼顾不同的后端开发者群体,云服务提供了云应用和 Serverless 后端云服务两个版本,其中云应用是有服务器的后端开发,并提供了 Node.js (Egg)、Java(Spring Boot)、Java(Sofa Boot)三种开发框架,给后端开发者提供尽可能多的灵活性。同时,随着 Serverless 的概念越来越被开发者接受,云服务也提供了 Serverless 后端云服务,这是一个无服务器的版本,目前支持 Node.js 开发语言。相较于云应用,Serverless 后端云服务更加轻量级,无需开发者介入过多即可实现后端运维操作。Serverless 后端云服务提供了 BaaS + FaaS 的能力,目前主要存在两大技术瓶颈:一个是 MongoDB 的调度,一个是容器的冷启动。


针对 MongoDB 的调度问题,为了平衡成本与资源使用率,Serverless 后端云服务把 MongoDB 池设置为不同规格的实例。对业务量较小的用户提供小实例,随着用户业务量的增长,当小实例无法满足业务需求时,为用户提供更大的实例。所以,基于业务情况开发一套 MongoDB 的调度体系,每隔几小时监测一次业务情况,如果业务增长到一定阈值,就将其自动迁移到规格更高的 MongoDB 实例中,保障 DB 服务的使用性能。


容器的冷启动在函数计算和云引擎中是一个不能避免的问题,Serverless 后端云服务基于 Knative 的思想,对容器冷启动进行优化。核心点是提供 Runtime 的预热池,当有请求进来时,从预热池找到对应的 Runtime,然后挂载代码后直接运行。运行后保持 2min,如果 2min 内无请求,则将 Runtime 返回预热池。

小程序·云服务的安全性如何保证?

开放是小程序·云服务的一个重要的业务变革方向,随着用户数和业务数的增加,如何保证小程序的安全性呢?小程序·云服务团队给出的解决方案是:


(1)在控制台上,云服务集成了蚂蚁的风控能力,保障控制台不会被恶意用户入侵。


(2)在访问链路上,对所有的请求都进行了签名,避免被篡改。所有的访问链路都采用 https 方式,避免中间人攻击。同时,所有的请求都需要基于支付宝 OAuth 登录态进行验证,确保匿名身份无法访问服务。


(3)在接入层上,接入了云端的防 DDoS 能力以及蚂蚁的流量镜像能力,对流入流量进行控制,避免请求的恶意攻击。


(4)对于文件上传,会对所有的文件都进行安全扫描,避免上传涉黄、涉政等文件。


小程序·云服务对于开发者的价值


小程序·云服务的目的是为构建小程序的后端提供极致的便利性,将蚂蚁金融科技的能力通过最简洁的方式带给开发者去使用,通过提供云应用(有服务器)和 Serverless 后端云服务(无服务器)两种方式,并将产品能力集成在了 IDE 当中,实现开发者接入成本的最小化。


  • 云应用对于开发者的价值


云应用主要为开发者提供如下能力:


(1) 极简构建云端环境(应用、服务器、域名、HTTPS 证书等);


(2) IDE 一键部署、启停云端应用;


(3) 灵活的语言框架(Java、Node.js);


(4) 应用资源监控预警;


(5) 深度集成蚂蚁金服开放能力(支付、信用、安全等)。


为了让开发者更方便地使用蚂蚁金服的开放能力(支付、信用、安全等),云应用在 IDE 插件中可以根据用户签约的能力包,自动生成调用相应开放能力的代码,显著降低用户在这方面的开发成本。


云应用在提供各种便利性的同时,也给开发运维人员提供了完全自主可控的能力,开发运维人员可以登录到云端服务器上去查看日志、排查问题,有完全的自主权。


  • Serverless 后端云服务对于开发者的价值


Serverless 后端云服务作为原生服务,已经集成在小程序开发者工具中。作为开发者首先要拥有支付宝账号,然后创建或加入小程序应用,下载安装支付宝小程序开发者工具,便可以开始开发。


在小程序开发者工具中,使用 Serverless 后端云服务提供的 API(对开发者而言是一个全局变量),可以直接调用数据库、文件存储和云函数服务,还可以免配置直接调用支付宝开放平台的海量 OpenAPI。支付宝优质的用户群体和蚂蚁金服提供的开放能力对于开发者而言非常重要,尤其是 Serverless 后端云服务无需配置就能连接几亿用户资源和使用这些服务。


Serverless 后端云服务的数据存储沿用了 MongoDB 的语法,云函数基于 Node.js 进行开发,这些都是现在非常流行的编程语言,对开发者来说学习成本低,易于上手。为了帮助开发者完成更加复杂的程序,Serverless 后端云服务陆续会增加更多服务类型,与新技术结合,从而更好服务开发者。


为方便开发者交流小程序开发过程中遇到的问题,添加小助手微信 geekbang111,备注“小程序云”,即可进群与各路小程序开发大神过招,还有最新的活动资讯与技术干货分享。


2019-02-03 07:0013113
用户头像

发布了 124 篇内容, 共 45.2 次阅读, 收获喜欢 176 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试/测试开发丨如何利用ChatGPT完善简历

测试人

人工智能 软件测试 ChatGPT

语音识别技术在智能客服领域的应用与优化

来自四九城儿

2023-11-01:用go语言,沿街有一排连续的房屋。每间房屋内都藏有一定的现金, 现在有一位小偷计划从这些房屋中窃取现金, 由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋, 小

福大大架构师每日一题

福大大架构师每日一题

自动化混沌工程 ChaosMeta V0.6 版本发布

ChaosMeta

云原生 自动化 稳定性 混沌工程 攻防演练

为什么需要对特权账号进行管理

尚思卓越

运维 网络安全 信息安全

高能有料 | 第二届OpenHarmony技术大会议程速递

OpenHarmony开发者

低代码PAAS加速推进企业数字化转型

力软低代码开发平台

低代码 信息化 PaaS平台

语音识别技术在智能家居领域的创新应用与挑战

来自四九城儿

外贸网站建设攻略:如何建设一个高效的外贸网站

九凌网络

语音识别技术在医疗健康领域的应用与挑战

来自四九城儿

软件测试/测试开发丨利用ChatGPT自动生成架构图

测试人

人工智能 软件测试 ChatGPT

特权账号安全管理的难点

尚思卓越

网络安全 数据安全 特权账号管理

Evolving with AR9582: MFC900M - A Legacy of Connectivity and Adaptation

wallyslilly

AR9582

第22期 | GPTSecurity周报

云起无垠

客服发送一条消息背后的技术和思考

得物技术

体验 IM 客服

《完蛋!我被美女包围了》突然火了!世界首个开源贡献榜出炉丨 RTE 开发者日报 Vol.75

声网

SketchUp 2019 for Mac(草图大师) v19.1.173中文激活版

mac

草图大师 苹果mac Windows软件 SketchUp 2019 3D设计软件

云桌面是否可以运行3D软件

青椒云云电脑

桌面云 云桌面

2023年度openEuler领先商业实践遴选征集工作正式启动

彭飞

如何利用 NFTScan NFT API 在 Aptos 网络上进行 Web3 应用程序开发

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

打字练习软件 Type Fu mac v4.8.0中文直装版

mac

苹果mac Windows软件 打字练习软件 Type Fu

IoT与鸿蒙、低代码、生成式AI,引爆技术浪潮——华为云开发者日南京站成功举办

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 华为云开发者日

特权账号管理系统PAM的优势特点

尚思卓越

网络安全 数据安全 PAM

在线涂鸦画板软件哪款好?这7款涂鸦神器值得推荐!

彭宏豪95

效率工具 画图软件 在线白板 涂鸦 绘画软件

HarmonyOS数据管理与应用数据持久化(一)

HarmonyOS开发者

低代码可视化逻辑编排工具

树上有只程序猿

低代码 可视化编排 JNPF

小程序·云服务的系统架构和运维实现_大前端_关贺宇_InfoQ精选文章