HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

  • 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:0013147
用户头像

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

关注

评论

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

Dash for Mac v7.1.6激活版 提升API文档编写效率

Rose

API文档 Mac破解软件 Dash Mac破解版 Dash下载

苹果最新系统:macOS 14 Sonoma 14.1.1正式版

加油,小妞!

macOS 14 Sonoma Macos最新系统

Archicad 26中文for Mac(BIM建模软件) Archicad26破解详细安装教程

Rose

mac软件下载 建模软件 Archicad 26破解版 Archicad 26 Mac中文版 BIM软件

基于Java开发的供应商询价招标采购系统(SRM系统源码)

代码人,代码魂

Java springboot 采购 srm

Stable Diffusion:最先进的文本生成图像模型

3D建模设计

人工智能 Stable Diffusion 稳定扩散 自动纹理

OpenHarmony社区运营报告(2023年10月)

OpenHarmony开发者

OpenHarmony

mac原型设计:Axure RP 10 for Mac中文汉化版包下载

Rose

Axure RP 10 汉化版 Mac原型设计 Axure RP 10 下载

HarmonyOS NEXT调优工具Smart Perf Host高效使用指南

HarmonyOS开发者

HarmonyOS

站群服务器优势

Geek_f19a80

智慧燃气:用友BIP资产云如何实现管道资产数智化管理?

用友BIP

资产管理 智慧燃气

大模型产业生态有“成功密码”?百度高管2023进博会最新发声

飞桨PaddlePaddle

深度学习 产业生态 大模型

依赖关系指的在Linux操作系统中,如何解决软件依赖关系?

小齐写代码

亚马逊云科技加速大语言模型的创新应用

三掌柜

亚马逊云科技

提示找不到某些库文件?

矩视智能

深度学习 机器视觉

软件测试/测试开发丨探索Python魔力:第一个程序到快捷键大揭秘

测试人

Python 软件测试

为什么说数据安全运维难?有好用的数据安全运维平台吗?

行云管家

数字化 数据安全 数据运维 数据运维安全

graphpad prism 10 for mac永久注册码 prism10下载

Rose

mac软件下载 GraphPad Prism 10 数据分析绘图软件 Prism 10 Mac破解

macos智能图片编辑工具:DxO PhotoLab 6 中文版

加油,小妞!

Raw图像处理软件 DxO PhotoLab 6

中国电信国际数智化人力领先实践

用友BIP

人力资源 数智化领先实践 中国电信

向成本要效益!用友BIP助力车企突破内卷、打赢“降本战”

用友BIP

降本增效

快速教程|如何在 AWS EC2上使用 Walrus 部署 GitLab

SEAL安全

#GitLab Walrus 企业号11月PK榜

大模型集体失控!南洋理工新型攻击,主流AI无一幸免

Openlab_cosmoplat

人工智能 大模型

文生图大型实践:揭秘百度搜索AIGC绘画工具的背后故事!

百度Geek说

AIGC 文生图 Ai绘图 企业号11月PK榜 百度搜索场景应用

Java 多线程开发系列 2:创建一个线程

BigBang!

Java多线程

当生成式AI从梦想走近现实,大语言模型未来会取代人类吗?

格致君的planB

人工智能 AI 大语言模型

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

尚思卓越

网络安全 特权账号管理

HTML文本编辑器BBEdit for Mac破解版(附注册码)支持M1/M2

Rose

html 代码编辑器 Mac破解软件 BBEdit注册版 BBEdit for Mac破解版

简单专业的照片修复工具 DxO ViewPoint 4免激活中文版

mac大玩家j

Mac软件推荐 图像修复工具 图像校正软件

Android下Linux创建进程的姿势(上)

江湖修行

android Linux 进程

YonGPT构筑酒旅企业AI大脑 轻松拿捏“松弛感”

用友BIP

AI YonGPT

云服务器数据安全保障措施看这里!

行云管家

云计算 云安全 云服务器 云数据

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