企业使用应用开发平台,主要诉求是提升移动研发效能,提高协作效率。但在具体实践中,不同的企业、业务线和产品之间的需求都存在着巨大差异,很多开发者称,“很难有一个平台或工具能适配所有场景、解决所有问题。”
该如何解决打破这一僵局,真正打造一站式的企业应用开发平台?
针对这一主题,近日举办的 2022 OGeek 技术峰会设置了“重新定义'一站式应用开发'”专场。本专场邀请到了 OPPO 移动研发平台负责人麦峰强、蚂蚁集团无线开发工程师王磊、OPPO 云测设备开放服务平台负责人杨建波三位技术专家,他们与各位开发者们共同探讨了“一站式”应用开发平台的定义、现状、价值和未来技术演进。
值得一提的是,“OGeek Day”是由 OPPO 数智工程系统主办的行业技术沙龙品牌,旨在为技术爱好者搭建一个技术交流和分享的开放平台。沙龙主要围绕“科技为人、以善天下”的品牌使命,聚焦于为智能终端提供安全高效的数据、算力、算法、云服务方面的前沿技术,打造技术互动的行业生态,探索技术在行业应用的实践、突破及未来发展方向。2022 年 10 月 29 日、30 日,2022 OGeek 技术峰会在 InfoQ 视频号进行了直播,本届峰会以“云无界、端无边”为主题,与各位开发者一起探讨音视频、云渲染、AIoT、一站式应用开发等热门技术的演进方向,共建端云协同生态。
以下为“重新定义'一站式应用开发'”专场精彩内容回顾:
一、OPPO 移动研发平台实践
一站式移动应用研发平台能够显著提升开发效率、降低开发成本和运维难度。OPPO 在建设移动研发平台的过程中积累了丰富经验,OPPO 移动开发平台负责人麦峰强在本专场中带来了相关内容的分享。
典型的移动应用开发平台分为研发基础设施和 DevOps 两大部分。研发基础设施一般是指开发中间件,亦即 SDK,可以为研发工作提供技术能力;基础设施分为开发框架、技术组件和工具链三部分;移动 DevOps,包含流程、监测等配套设施。移动 DevOps 与基础设施共同组成了移动应用研发平台。
在一站式应用开发平台诞生之前,企业内部各团队的开发工作往往是各自为战的,这种局面也存在诸多弊端。OPPO 在开发移动应用的过程中就主要遇到了四大痛点:
资源复用率低下。主要指公共、通用的技术能力复用率低下,人力重复投入。
项目管理困难。项目间依赖关系很难查找,人工维护成本较高。
移动开发低效。团队技术选型缺乏参考,重复投入的技术难以沉淀。
产品运营分散。开发团队需对接多个平台,不同平台数据口径不一致。
为解决上述问题,OPPO 开始建设自己的一站式应用开发平台。但全新的平台体系建设并非一日之功,麦峰强将 OPPO 的实践划分经历分成了四个阶段:
青铜阶段:建设丰富 SDK 并保障安全性;
白银阶段:建设 SDK 市场并建立规范;
黄金阶段:开发 SDK 套件和流水线,提供一站式集成方案;
铂金阶段:将移动研发平台扩展到更多领域。
在青铜阶段,OPPO 面临的主要问题是各开发团队都有自己独立维护的框架和公共组件,组件安全问题也多种多样。为此平台建设团队对所有中间件做了统一梳理和规范。建设整体平台的同时,团队也对 SDK 的安全性做了相应改进和模块化、规范化建设。其中,SDK 安全性改进主要分为服务端和云服务两大维度,分别从身份鉴别、访问控制与存储安全、网络传输安全等层面进行优化和改进。
在此基础上,团队以 BaaS 服务的形式形成了整体的平台架构:
青铜阶段的工作完成后,OPPO 在实践中又发现了一些问题。一方面,虽然 SDK 很多,但开发团队经常不知道如何查找或怎样选型;另一方面,很多 SDK 版本混乱,开发团队不知道如何分辨新版本、有问题版本等。最后,大部分 SDK 缺乏文档,使用门槛很高。针对这些问题,平台建设团队开始了白银阶段的改进。
白银阶段的建设思路是形成一个 SDK 市场,其作用首先是对 SDK 和 APP 建立统一的管理关系,方便搜索了解 SDK;其次是对所有 SDK 进行安全和各方面能力的排名监控。在这样的市场中进一步建立了 SDK 的整体规范,从而保证 SDK 的开发质量。此外,因为 SDK 数量增多,所以平台加入了鉴权系统来避免非法接入后端云服务,同时加入配额计费能力来完善基础设施。这一阶段的工作大大方便了开发团队的日常使用,获得了很好的反馈。
但白银阶段结束后,平台建设团队又遇到了一些新问题。首先是缺框架,由于大型 APP 往往集成多个 SDK,没有统一框架意味着整体管控很困难;其次是缺触点,开发工具(如 Android Studio)与平台能力存在割裂,并非一站式架构;第三个问题是缺少 DevOps 流程,很多 SDK 之间的依赖冲突难以解决;最后,移动开发人员在工作中仍需在多个平台间切换,缺少统一的集成系统。由此进入了黄金阶段的改进工作。
针对框架需求,一个很好的思路是对 SDK 做插件化处理。建设团队参考了很多业界产品进行对比分析,最终选定了谷歌提供的 AAB 方案作为底层框架,基于爱奇艺开源的 Qigsaw 进行二次开发,形成了整体方案。其中,SDK 开发框架的进程架构以 SDK core 为核心,采用了进程隔离设计。SDK 插件通过 SDK core 这一进程进入 App,SDK 插件分为动态和静态两类,其中动态加载的插件又分为四个层面:
其中 provider 情况特殊,需要单独处理。结合上述设计,团队最终形成了 SDK 的整体开发框架。
针对缺少触点的问题,团队建设了一个 SDK 开发工具链,实现了云调试、云测试和一键上架,可以为开发者提供很多技术服务支持。此外,OPPO 还制定了一套包含 14 步骤的移动 DevOps 建研发流程,覆盖了从代码编写到 SDK、APP 部署和升级的完整过程。
综合上述所有能力,OPPO 最终建成了一个统一的一站式开发套件:
一站式应用开发平台上线后在 OPPO 内部取得了令人满意的成效。但麦峰强表示,平台团队并不想就此止步,而是将眼光放到了未来的更广阔天地。目前,开发平台只服务到了安卓、iOS 及部分 IoT 平台。但随着 XR 探索在行业内的快速发展,麦峰强提到团队希望能将开发平台进一步扩展到 XR 领域,建设 XR 开发的完整能力,满足 AR/VR 领域中虚拟实景游戏、VR 健身、VR 会议、数字虚拟人等诸多场景的应用开发需求。为此,团队会针对 XR 领域的各类需求建设更多对应的 SDK,为公司的开发团队提供丰富的技术选项。
二、支付宝:基于场景沉淀的移动端技术架构演进
本专场中,蚂蚁集团 mPaaS 无线开发工程师刺胃(花名)为开发者们介绍了支付宝近年来基于线上线下场景沉淀的技术架构演进历程。
2021 年之前,支付宝经历了十多年的高速发展,从余额宝开始,到主打线下,再然后入了小程序开放平台。这一阶段中,支付宝的用户规模、代码规模等指标都经历了爆发式增长。2021 年至今,支付宝主要的业务包括个性化、智能化首页场景,内容 Feed 流和互动渲染场景。每一个应用场景都有相应的技术组合及业务类型,所有场景背后的技术架构共同构成了支付宝今天的技术体系。
过去几年来,支付宝移动端基础架构层面的主要挑战是从单体架构转向模块化架构,为上层场景化应用打造牢固基础。为此引入了支付宝独有的插件化架构,实现了完全插件化设计,性能和构建速度位于优秀水平。这一架构与蚂蚁的一站式研发平台结合,可以大幅提升场景模块的研发速度,为支付宝的场景化策略提供了技术保障。
解决了基础架构问题,线下体验就成为了下一个攻关要点。为了提升下沉市场的用户线下体验支付宝做了很多工作,包括启动优化、稳定性提升、功能开启优化等。用户体验得到提升后,支付宝就可以进一步引入大规模的改进和升级了。
2018 年支付宝引入小程序,核心目标就是要做开放场景,引入各领域的开发者丰富支付宝的场景生态。小程序引入后大大减缓了 App 安装包的体积增速,而支付宝针对小程序的隔离设计保障了安全隐私水平。小程序基于开放场景的架构中,底层是蚂蚁集团的小程序统一标准,小程序容器层则分为三大核心组件。对于开发者来说,开发小程序时需要考虑的主要内容只有容器层、适配层和控制层等,开发门槛相对较低。
基于小程序的能力,开发者创造了很多开放场景,例如小程序+直播做成小程序直播、小程序+音视频做成短视频小程序、小程序+地图做成哈罗单车、小程序+ IM 做成智能客服等等。
在内容场景中,支付宝的内容 Feed 流(Tab3 生活页面)用到了一系列底层能力,如直播能力、多媒体能力。支付宝将长期沉淀的技术能力组成了内容中台,Tab3 页面中的视频、图文和直播都是基于内容中台来推送给内容场景。
每个 APP 都有自己的核心主阵地,主要通过首页来展示。如何最大化地提升首页运营价值,实现首页智能化,是智能营销场景面对的主要挑战。支付宝近年来引入的智能营销技术可以将用户页面打散成许多动态区块,每一个区块都可以对接到后台系统。基于每个页面所处的不同时空、用户个人喜好,结合一些服务端和端侧的计算结果,共同组成了用户看到的页面版面。
智能营销场景使用的核心技术是蚂蚁自研的动态跨端高性能 cube 引擎。该引擎采用流式加载、并行布局、异步绘制等设计大幅提升性能,同时深度优化了包体积,并采用 Native 绘制减少 UI 的初始化损耗。
智能页面在支付宝中有着广泛应用。支付宝可以根据用户喜好和习惯推送相应的内容,每个页面都可以无限下拉,做到一人千面、千人千面的效果。
随着技术发展和用户需求变化,今天的移动用户更注重 App 的体验交互水平,由此产生了互动渲染这一场景需求。在互动渲染场景中,支付宝研发了互动渲染引擎,提供了更强的表现力、更好的适配性、更好的体验与更高效的链路。互动渲染引擎可以为支付宝腰封提供动画效果,或者增强 Banner 的表现力,为弹窗增加互动内容等,像支付宝一些运营活动都是基于互动引擎来展示。互动渲染引擎还包括了 AR 增强现实引擎,如支付宝可以利用该引擎实现 AR 导航。
上述应用场景的建设离不开一站式研发平台的支持。在支付宝的移动研发平台中,终端基础部分的基础安全、基础多媒体、底层运行时、传输网络等共同构建出坚实的地基。在这个地基基础上支付宝研发了很多终端引擎,进而丰富一系列业务场景。平台中的工程体系则用来提升开发效率,实现一键发布。未来,随着元宇宙从概念走向现实,支付宝也将通过一站式研发平台与创新引擎技术,为用户提供全新的体验,开拓更大发展空间。
三、OPPO:云测设备开放服务平台的建设实践
随着云计算产业的发展,越来越多的移动应用开发者开始使用虚拟云端手机来进行应用的测试工作,从而节约购买大量真机设备的成本,提升开发效率并节省时间。OPPO 也建设了自己的云端移动应用测试平台,主要为内外部开发团队提供支持。OPPO 设备开放服务平台负责人杨建波就为我们介绍了这一平台的建设实践,让更多开发者可以了解云测设备开放服务平台背后的原理与架构。
云测平台主要指 APP 测试平台,提供远程真机、云手机的测试能力。各个厂商建设的云测平台往往会有一些区别,而 OPPO 的云测平台主要有以下特点:
OPPO 自建真机机房、云手机依托于自建云平台提供手机远程调试能力;
基于 OPPO 开放平台提供对外的移动服务,在开发测试阶段提供云测试服务;
云测试包括:自动化兼容测试、功能测试、性能测试、稳定性测试;
设备开放服务:提供真机、模拟机远程开放能力。
在 OPPO 云测平台的建设初期,由于项目不够完善等原因,平台存在很多问题。首先,早期的 OPPO 云测平台对设备和版本的覆盖率不够,测试项目较少,其主要原因是现有机房真机设备不够完善,设备数量扩展存在瓶颈。平台技术架构也亟待优化,稳定性和设备并发等指标都存在瓶颈。另外,平台给外部开发者(头部开发者或者云测服务商)主要采用线下邮寄的方式提供真机设备,效率低、成本高,安全性低。 平台能力尚有欠缺,自动化测试报告内容较少,且缺乏性能测试项。最后,开发者对平台的兼容/适配工作量也很大,拖累了开发测试效率。
基于上述痛点,OPPO 开发了新一代的云测设备开放服务平台:
云测开放平台的产品架构中,自上而下分别是开放平台、平台服务和设备层。技术架构中,上层是 OneOPPO,其中包含了接入层;由接入层接入下方的核心部分。在核心层中,云服务器的公共机通过安卓控制器的 USB 端口与真机连接,并负责管理真机设备信息。公共机的协议转换程序将自身的 IP+ 端口映射到各台手机上。客户通过 ADB Connect 的 IP+ 端口就可以连上真机。云手机则是模拟机方案,采用业界主流的 ARM 服务器虚拟化设计。用户可以远程控制手机操作,安装编译 APK,进行简单测试等。
云测平台对内外部用户都提供开放服务。以外部用户的接入为例,首先手机的连接信息通过 IaaS 层同步到 PaaS 层,后者包含了用户管理、设备管理和监控统计服务。外部客户通过类 API 方式获取手机信息,包括 IP+ 端口、型号等。用户通过标准 ADB 协议连入控制层,控制层通过管理服务和鉴权服务转发 ADB 协议,从而保证安全性。
云端真机利用 SSH 隧道能力,在公网上通过路由层为用户分配私钥,接入控制层。控制层验证私钥,并提供对应手机的权限。为了保证安全性,这里做了很多隔离设计,例如用户不能使用 ADBshare 登录,只能进行 ADB 远程转发到对应手机,用户还需要一个远程 Web 操作页面来操控手机,为此 OPPO 提供了 ORTC 服务,这样用户可以在 Web 页面上直接操控手机。
图:云侧设备开放服务平台-基础设施
如上图中的云真机的基础设施架构所示,每个机柜的每个抽屉都有多台手机。这里的无线路由器需要做无线信号隔离,因此置于屏蔽柜中。公网与机房网络互相隔离以提升安全性。真机通过 USB Hub 连接到公共机,可以使用云端的各类资源。
除了真机外,OPPO 还提供了云手机方案供用户选择。云手机采用业界主流的 ARM 服务器虚拟化方案,主要使用 ARM 服务器来虚拟化手机的 ColorOS 系统,使用软件来模拟出一部部安卓手机。
虚拟系统的存储部分则采用 OPPO 云平台的云存储能力实现。当用户销毁或重新初始化的手机想保留一部分数据时,云存储服务就可以实现这一需求。虚拟化涉及的容器编排采用 K8s 方案。操作系统采用 Ubuntu,GPU 模拟使用了数据中心级的 GPU 硬件。为了提升安全性,这里也做了很多网络隔离设计。云手机相对于云真机的一大优势是手机销毁、重建较容易,真机系统遭遇崩溃后的升级和重装效率较低。
云监控是云测平台较重要的功能,主要监控物理机、Arm 服务器和容器,以及手机系统的 CPU、内存、存储。IaaS 系统对外呈现手机的资源管理和运维管理。通过完善的云监控体系,云测平台可以为用户提供稳定、安全的服务保障。
云测开放平台建成后,用户可以在 Web 页面中直接操作云手机,并使用 ADB 远程调试功能。平台还提供自动化测试能力,包含功能测试、兼容测试等脚本。测试可以一键执行,结束后向用户提供报告。此外,平台的流水线能力能够在 OPPO 内部应用开发的编译阶段对其进行兼容性测试,极大降低了开发者的工作量。
四、写在最后
从三位技术大牛在本专场的分享中可以看出,企业建设一站式应用开发平台的收益往往是非常显著的,但平台建设必须充分考虑当下存在的痛点和需求,并进行针对性的架构设计。建设过程也不能一蹴而就,往往需要分阶段推进,迭代优化,才能取得最令人满意的成绩。
本场直播评论区互动精华
Q:搞不明白为什么现在很多的协同平台,比如 OA,CRM 等,要设计的那么复杂?这不反而降低了效率?
OPPO 移动研发平台负责人麦峰强:一个平台的最后呈现是多方面因素综合后的结果,有商业因素,也有使用场景情况,具体要根据产品交付的用户场景来看。我们根据自己需要的场景选择符合自己的即可。
蚂蚁集团无线开发工程师王磊:业务方的需求多,要抽象的能力点就需要更多。因此其实不是平台复杂,而是要根据实际业务的需求,去选择效率高的产品和技术。
Q:一站式应用开发平台越来越多,是不是可以说明之后低级别的程序员逐渐就要失业了?
OPPO 移动研发平台负责人麦峰强:一站式平台是越来越多了,但是仍然无法替代程序员,只是帮程序员减少反复造轮子而已,提高效率。程序员这个职业本身就是一个需要不断学习不断突破的行业,一站式只是解决不必要的重复劳动,程序员该做的事情包括业务、高效代码,原来需要的后面仍然需要,低级别程序员不是被一站式淘汰了而是被时间淘汰了。
蚂蚁集团无线开发工程师王磊:开发平台的变多,说明现在全社会正在进行数字化转型。随着数字化转型的需求增多,各层次的研发人员的需求也会增多的。
Q:小企业如果想做自己的一站式应用开发平台,需要具备哪些能力、硬件配置或者其他资源?
OPPO 移动研发平台负责人麦峰强:一站式开发平台规模可大可小,就看你们目前公司所处的阶段和碰到的痛点,比如我解决青铜时代就比较简单,封装公共 sdk 即可,服务器采用公有云即可搭建。自己自建够用即可,如果你要封装成给外部开发人员使用,那配置也要另外考虑了。
评论