端应用研发进入云原生时代

1.png

作者 | 阿里云云原生应用研发平台 EMAS  杨镔(泠茗)

导读:随着技术的发展和各种用户端场景的涌现,业务前台形式变得更加多样,“面向多样化的端场景提供无缝的、一致的数字用户旅程”已经成为了新时代企业应用架构的关键目标,同时它也是当下大前端技术发展背后的核心业务牵引。基于阿里云在过去几年服务海量用户的经验沉淀,本文总结了新的基于云原生技术的端应用研发范式,期望为广大开发者、企业提供云计算时代面向企业业务前台的应用研发方法论。

多样化用户体验(Multiexprience)与大前端

随着云计算、移动化、IoT、AI 等技术概念地落地和持续发展,社会的数字化进程在不断加速。Gartner 近期发布了新的企业应用架构方法论 MASA(Mesh Application and Service Architechture,网格应用和服务架构)[1],融合近 5 年流行的技术趋势,为广大企业信息化的供应商、开发者和企业用户定义了更广泛的企业数字化应用架构模型。

[1] Use MASA to Deliver an Agile Multiexperience Enterprise Application Architecture, Gartner, 2019

2.png

与阿里所定义的中台不同,MASA 将企业应用拆解为上中下三层,在传统的后端业务能力基础之上,将企业前台,以及用于前后台链接的 API 网关层也涵盖了进来,通过网格化的架构实现企业的业务流程、员工、服务、内容、设备间的动态连接,以构建匹配现有技术形态和未来技术趋势的更敏捷、灵活、可扩展的应用架构。

伴随 MASA,面向企业前台的 Multiexperience( 多样化用户体验 )被 Gartner 明确提出并定义为 2020 年的十大技术趋势[2]。Multiexperience 期望利用多元化的前台技术(移动应用、Web、小程序、可穿戴设备等)全面升级企业面向终端客户的数字化触点,以终端客户为中心构建多元(体验多元化)而一体(架构一体化)的用户界面。Multiexperience 与国内所流行的大前端概念不同,但他们背后恰恰有着相通的故事主线。

[2] Top 10 Strategic Technology Trends for 2020: Multiexperience, Gartner, 2020

大前端在国内还没有一个统一的定义,它更偏向一个相对纯粹的技术概念,意指面向客户侧的端技术集合,它的出现始于客户端 Native 与 Web 两大技术栈的不断融合,背后核心是跨平台技术在移动、PC、小程序、Web 等场景下地不断发展和成熟。

大前端技术栈在 Multiexperience 这样的业务需求背景下不断磨砺,同时又反向支撑业务不断扩展其面向终端客户的数字化触点的场景和范围。技术拓展商业边界,商业驱动技术变革。面向全端场景,提供无缝的、一致的数字用户旅程是 Multiexperience 和大前端一脉相通的用户理念。

如今,面向全新的业务架构范式,如何加速新时代下多元化的端应用研发,为业务提供更敏捷而高效地交付呢?云原生技术是最佳选项。

一云多端,云原生技术如何驱动端应用研发

很多人有疑惑,云原生与端测的研发有什么关系,云原生不是一个后端技术域的概念么?其实不然。云原生代表了一种应用构建的方法论:如何最大程度地利用云计算服务模型的优势低成本、敏捷地构建和管理一款弹性的应用。它的关键理念包括:

  • 所有的运行环境透明化,弹性伸缩
  • 所有的研发流程流水化,高效交付
  • 所有的基础设施服务化,按量付费

云原生的研发模型旨在降低业务的技术风险,让开发者可以更单纯地专注于自己的业务。面向端应用场景,云原生技术理念同样适用。

Gartner 在 2019 年定义了一条全新的技术赛道:Multiexperience Development Platform(MXDP)[3],用以描述那些通过敏捷、现代化的技术能力帮助企业高效地实现 Multiexperience 的研发平台,其能力矩阵示意如下图:

[3] Technology Insight for Multiexperience Development Platforms, Gartner, 2020

3.png

从 MXDP 的关键元素构成我们可以看到,除了传统的研发工具类组件外,云原生技术成为了 MXDP 最核心的技术元素,其中的典型技术包括以下几个方面,我们将一一介绍。

1. DevOps,驱动端应用的高速迭代

端应用对比传统后端有着典型的差异,以移动 App 为例,应用本身构建在异构的机型、OS 平台之上,运行环境约束较多,依赖大量的后端服务支撑,应用本身的持续集成和交付过程也包含了许多移动场景特有的元素,比如编译环境、兼容测试、内测分发、渠道打包、灰度发布等,这些关键差异决定了端应用必须构建自己特有的 DevOps 体系。

4.png

1)研发域

面向端应用的 DevOps 平台需要解决应用持续集成过程的组织协同和自动化。针对端应用的研发期,成熟的 DevOps 平台需具备:

  • 面向多端的编译构建环境并实现自动化的软件更新;
  • 可靠,弹性伸缩的构建服务集群;
  • 代码与证书托管;
  • 静态代码扫描;
  • 软件定义的工作流。

2)测试域

端应用的测试较传统后端应用复杂度大幅提升,除了基础的功能、性能测试外,还需要有面向异构机型、终端、操作系统的兼容性测试,成熟的端应用测试平台应具备:

  • 兼容性测试服务,覆盖主流的机型、设备、操作系统;
  • 性能测试服务,支持各类应用崩溃、ANR、卡顿、IO、CPU、内存等关键性能指标监测和评估;
  • 自动化测试引擎,支持测试用例编写、回放和管理;
  • 远程真机能力,支持设备的云端访问;
  • 智能 Monkey 与 AITest 等智能化技术驱动的测试能力。

3)发布域

端应用的目标发布对象是海量的终端设备,生产发布受应用市场审核限制,因此,可靠、精准、定向的应用分发能力是应用生产分发的关键技术要求,包括:

  • 企业内分发能力;
  • 支持软件定义的灰度能力,支持面向不同的地域、网络、机型、渠道及其他自定义标签进行灰度分发;
  • 面向不同渠道的生产发布能力;
  • 版本管理与归档。

4)运维域

面向端应用的运维体系应始终围绕问题的感知,问题的定位,问题的修复展开,在传统的 Metrics,Tracing,Logging 基础之上,我们特别强调面向端的 Hotfix 的能力,这是区别于后端应用形态的特殊之处。成熟的端运维体系应包含:

  • 面向端应用的 APM 能力,支持包括启动速度、页面加载、崩溃、网络性能、API 性能等在内的监控报警体系,并能与后端 APM 联动进行基于事务的访问追踪;
  • 面向端应用的远程日志能力,支持实时的终端日志记录和管理,加速问题的远程诊断;
  • 面向端应用的热修复能力,支持针对不同设备平台的代码、资源热更新。

5)运营域

端应用作为企业业务入口,是企业面向终端用户的关键界面,必须时刻洞察用户的行为、倾听用户的声音,驱动业务的敏捷迭代。面向 App 的数据分析以及舆情反馈能力是 DevOps 的关键闭环之一。

数据分析应具备:

  • 面向全端的用户行为数据采集能力,包括小程序,APP,H5,PC,WEB,IoT 等;
  • 易用的终端埋点工具:支持代码埋点,自动埋点,可视化埋点等;
  • 开放的数据能力:支持以 API 方式同步数据,支持与云厂商的计算平台无缝对接。

舆情反馈应具备:

  • 面向全端的用户反馈通道能力;
  • 智能化的应答机器人;
  • 舆情数据搜集和分析。

DevOps 为 Multiexperience 的生产实践带来的关键价值包括:

  • 更短的业务迭代周期

覆盖端应用全生命周期的工作流与自动化能力将带来应用持续交付能力以及跨团队协同效率地大幅提升,进而缩短业务的交付周期。作为企业面向终端用户的入口,更短的业务迭代周期意味着面向市场更快速的反应,这是数字时代商业成功的基石。

  • 更合理的人力资源分配

云原生的工具链与自动化流水线将帮助企业避免耗费大量工程技术人员来维护本地化的工具和系统,同时大幅削减应用持续交付过程的人工环节。企业能够将宝贵的人力资源专注在自己核心业务的生产和研发上。

  • 更稳固的应用交付质量

自动化的终端测试体系以及全方位的监控诊断体系将为端应用提供完整而充分的质量保障,这些云原生服务将为企业节省大量细分领域的专业人员投入,并通过专业且持续的工程技术演进以及智能技术的引进不断优化应用质量保障体系。

  • 更优异的即时用户体验

围绕端应用全方位的行为数据埋点和分析将帮助企业更好地把握产品功能与市场的匹配度,而即时的舆情反馈能力则帮助企业更好地进行用户管理和关系维护。所有这些直接和间接来自客户的声音将直接驱动业务的快速迭代,通过云原生 DevOps 实现敏捷开发的生产实践。

2. Serverless & Backend as a Service(BaaS),端应用的运行引擎

Serverless 是当下开发者社区最火爆的话题之一,其核心理念即去服务器化:把底层云计算的基础能力进行高维抽象,以 API/SDK 的方式开放后端能力的访问和获取,无需开发人员配置和部署服务器资源即可获得弹性伸缩、按量付费的后端服务支持。

Serverless 的技术理念其实在数年前就已出现:后端即服务(Backend as a Service,BaaS)是典型的遵循 Serverless 设计理念的服务形态,早在 2012 年 BaaS 便在开发者社区中传播并因其便捷的使用模型而深受开发者喜爱。比较典型的 BaaS 服务包括消息推送、用户认证、云存储、云数据库等。

5.png

由于 BaaS 服务大幅削减了企业在后端研发力量上的开销,其在端应用场景得到了大范围地应用。但 BaaS 核心解决的主要是垂直场景化的后端能力抽象,并没法支撑业务本身的后端逻辑部分。Function as a Service(Faas)的出现弥补了这一空缺,并使得 Serverless 的架构范式能够面向端应用场景提供更加完整的闭环。

FaaS 是一种软件构建和部署的新方式,基于事件驱动模型,以函数粒度为开发者提供业务代码的托管环境。这种架构模型在数据处理、Backend for Frontend、移动应用、IoT 应用和 Web 应用等场景有较常见的应用空间。

综上我们可以看到,面向应用的 Serverless 架构包含了 BaaS 和 FaaS 两种服务形态,为了完整地支撑端应用的场景需求,成熟的 Serverless 引擎应包括:

  • 消息推送

支持在服务器与客户端间建立可靠、省电的长连接,面向 Android、iOS、Web、IoT 等端应用提供下行消息推送能力。

  • 登录认证

为开发者提供多维度的安全可靠的端到端身份验证能力,从而降低开发者在登录和账号体系上的开发成本和业务风险。身份验证模式包括邮箱认证、短信认证、号码认证以及主流互联网平台(淘宝、支付宝、QQ、微信、Google 等)提供的登录认证能力。

  • 数据同步

提供一个稳定可靠、加密安全的数据同步系统,支持数据在客户端的离线使用以及在线同步更新,以提供业务在移动应用、Web 应用以及 PC 应用间的一致化用户体验。

  • 远程配置

远程配置是面向端应用的持久配置管理服务,通过云端管理配置内容,并实时推送更新到客户端,灵活控制应用的功能、配置及 UI 实现。

  • 云存储

提供基于 API/SDK 的便捷的云端存储能力,支持包括文本、图片、视频以及其他由用户生成的内容。

  • 云数据库

基于云端的 NoSQL 数据库,提供面向各种前端的便捷访问接口,支持实时的数据操作、跨端数据同步和弹性伸缩。

  • 云函数

允许开发者直接将程序托管到云函数平台上,以函数作为最小单元完成事件驱动的业务逻辑开发,通过 API 方式进行远程访问和调用。

  • AI 能力

应用智能化是端应用的关键技术趋势,基础AI能力将成为端应用 Serverless 架构的基础组成,包括但不限于 OCR、人脸识别、语音识别等。

Serverless 架构及服务带来的核心价值体现在三个方面:

  • 资源成本

传统的应用架构模型需要预先购置一批服务器设备,并按照使用周期内的预估业务峰值来进行财务预算,不确定性因素较多,服务器资源的空置也会带来非常巨大的成本浪费。而 Serverless 的架构模型则实现了按需扩展、按量付费的弹性模型,让企业成本更可控。

  • 运维成本

开发者不必再关心底层计算资源的容量与日常运维问题,所有基础设施维护将会由 Serverless 服务商负责解决并对开发者透明。削减的运维成本,弹性的资源使用和可扩展·能力都将帮助开发者更好地专注于业务本身的增长。

  • 研发效率

完整的 Serverless 引擎提供了面向端应用的绝大部分场景能力的支撑,使得应用的研发非常便捷并易于维护。而在传统的研发模型下,代码开发、环境搭建、容量压测、集群扩容、应用部署等环节都会带来巨大的时间成本。

3. 低代码,应用研发形态的新变革

云原生技术的出现使得传统业务架构大规模地向云架构转型,软件开发效率在这个阶段也得到了明显地提升。然而数字化时代,各种应用场景地涌现,业务对 IT 面向市场的响应即时性也提出了更高的要求。在跨时代的技术演进浪潮中,Low-code Development Platform(低代码平台)快速浮出水面,并伴随多样化的端应用场景开始加速普及。低代码技术为软件研发效率带来的不仅仅是提升,更是变革。

6.png

对比传统的基于手工编码方式构建应用的模型,低代码平台提供给开发者基于 GUI 的软件编辑环境,并结合云原生基础设施帮助开发者快速完成应用的搭建。同时,这样的研发模型使得软件研发对软件开发者的技能要求门槛大幅降低,更多的具备一定 IT 基础概念的人群可以参与到软件开发中,而云原生架构则天然地帮助开发者解决了软件本身的部署、运维等工作。

成熟的低代码平台将广泛应用于企业的生产、营销、BPM、工具应用等场景,其核心能力主要由两部分组成:

  • 可视化应用编排引擎
    • 支持包括 Web、移动 App、小程序在内的多端应用场景
    • 支持包括 UI 可视化编排、业务流编排、逻辑编排、数据编排等能力
    • 支持组件、模块、模板等模型,有开放化的物料系统和组件市场
    • 模型驱动,搭配元数据解析引擎(包括多端转译引擎/渲染引擎等)
  • 云原生应用平台
    • 行业化领域模型与元数据管理
    • 代码生成引擎
    • 云原生应用托管
    • CI/CD
    • 丰富的集成与扩展能力

我们可以从施耐德电气与顶级低代码平台公司 Outsystems 的合作中看到低代码带来的价值:施耐德电气在应用低代码平台后,在短短 20 个月的时间内快速上线了 60 款 App,其中绝大多数 App 在 10 周内完成开发和上线,第一年节省的人工成本达到 650 人天。低代码技术大幅缩短了传统企业数字化转型的路径。

至 2024 年,Gartner 预计所有应用程序开发活动当中的 65% 将通过低代码的方式完成,似乎比想象的更快一些,但它确实在持续地发生。在全球市场,我们能够看到 OutSystems、Mendix、PowerApps、App Maker 快速的成长脚步,未来结合 AI 与机器学习,我们可以预见真正的“App 工厂”的诞生。

求变应变,永不止步成就技术革新

作为国内移动互联网、云计算领域的行业巨擘,阿里巴巴在大前端、云原生领域有着丰富的实战经验。我们从 2016 年开始逐步将集团内部成熟的应用中间件云化输出,并在 2018 年推出了移动研发平台 EMAS,如今,EMAS 已经逐渐成长为横跨多端(移动 App、H5 应用、小程序、Web 应用等)场景的云原生应用研发平台,基于广泛的云原生技术(Backend as a Service、Serverless、DevOps、低代码等),为企业、开发者提供一站式的应用研发管理服务,涵盖开发、测试、运维、运营等应用全生命周期。

7.png

截止到今天,伴随云计算的迅速普及和发展,我们已服务了 15 万以上的企业与开发者。

在海量的生产实践中,我们也看到了云原生技术在端应用场景下所面临的的关键挑战:

  • 研发心智的改变

对于所有开发团队而言,前后端团队的定义根深蒂固,协同界面已成自然。然而随着 Serverless 等云原生技术地广泛应用,在越来越多的端应用场景中,开发团队仅需前端开发人员即可以闭环完成应用的研发和上线工作;在应用架构维度,Serverless FaaS 带来的是基于事件驱动,无状态,函数式逻辑片段的全新范式,与传统的应用模型有着较大的区别。改变即成本,更关键的是改变背后不是纯粹的技术,还有组织的变革,生产关系的变革。

  • 技术成熟度

无论是 Serverless FaaS 还是低代码开发,都属于商业导入期的技术,产品化完善度还有欠缺,所能覆盖的场景也有一定的局限性,对于主流的复杂应用场景,Serverless FaaS 还需结合传统微服务等架构形成混合式的 Serverless 应用。在系统可观测性,研发调试便捷性,函数启动性能,函数执行时长等技术关键控制点上依然有较长的路要走。

  • 架构灵活度

云原生能力代表了对云基础设施的高维封装和抽象,抽象即意味着管控粒度变粗,系统的灵活性与定制扩展能力会天然地受到一定的削弱。

虽然挑战巨大,但趋势已现。EMAS BaaS 已经成为国内大量移动 App 的必备基础设施,全球范围内覆盖超过 20 亿的活跃设备终端,每天的 API 调用量超过百亿规模;基于 EMAS Serverless,疫情期间我们看到大量开发者快速地实现了防疫抗疫工具应用的开发,从诞生想法到产品上线历时仅需一周;在企业内部,越来越多的办公应用和表单应用基于低代码平台快速构建,企业生产力得到了大幅提升。参照 Hype Cycle 的模型,云原生的多项新兴技术已经涌现大量生产实践项目,技术成熟度已然进入了稳步爬坡期。

毫无疑问我们站在了又一个技术纪元的前夜,云端一体,一云多端正在成为前台应用研发的事实标准,拥抱云原生将成为开发者享受云计算红利的最短路径。我们欢迎更多的有识之士加入我们(联系邮箱:lingming.yb@alibaba-inc.com),变革生产力,改变世界。

阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”

K8S中文社区微信公众号

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址