⼩程序·云服务的系统架构和运维实现
之前,开发者想要开发⼀个⼩程序,常规流程是:要考虑买什么样的服务器,匹配哪些资源(如存储应⽤、数据库等),此外,还要考虑各种初始化,与服务端⼝关联等问题。这些⼯作全部梳理完成可能要花费数天时间。有了“⼩程序 · 云服务”以后,开发者不⽤考虑后端复杂的技术操作,并且开发过程⾮常简单,在⼏分钟之内就能完成后端环境的搭建,也能在 1、2 天内开发⼀个⼩程序。为进⼀步了解⼩程序· 云服务适⽤的业务场景、系统架构与架构演进等,⼩编专访了⽀付宝⼩程序·云服务团队,揭秘⽀付宝⼩程序·云服务如何帮助开发者快速地开发⼩程序。
⼩程序·云服务解决的难点和痛点
蚂蚁⾦服拥有海量的实名制优质⽤户,并通过⽀付宝 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 后端云服务陆续会增加更多服务类型,与新技术结合,从⽽更好服务开发者。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。