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

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

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

若对文章感兴趣想联系作者,请加入钉钉交流群,群号35248489,微信公众号:EMAS

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

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

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

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

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

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

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

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

很多人有疑惑,云原生与端测的研发有什么关系,云原生不是一个后端技术域的概念么?其实不然。云原生代表了一种应用构建的方法论:如何最大程度地利用云计算服务模型的优势低成本、敏捷地构建和管理一款弹性的应用。它的关键理念包括:
• 所有的运行环境透明化,弹性伸缩;
• 所有的研发流程流水化,高效交付;
• 所有的基础设施服务化,按量付费;

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

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

从MXDP的关键元素构成我们可以看到,除了传统的研发工具类组件外,云原生技术成为了MXDP最核心的技术元素,其中的典型技术包括:

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

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

研发域:面向端应用的DevOps平台需要解决应用持续集成过程的组织协同和自动化。针对端应用的研发期,成熟的DevOps平台需具备:
• 面向多端的编译构建环境并实现自动化的软件更新;
• 可靠,弹性伸缩的构建服务集群;
• 代码与证书托管;
• 静态代码扫描;
• 软件定义的工作流;

测试域:端应用的测试较传统后端应用复杂度大幅提升,除了基础的功能、性能测试外,还需要有面向异构机型、终端、操作系统的兼容性测试,成熟的端应用测试平台应具备:
• 兼容性测试服务,覆盖主流的机型、设备、操作系统;
• 性能测试服务,支持各类应用崩溃、ANR、卡顿、IO、CPU、内存等关键性能指标监测和评估;
• 自动化测试引擎,支持测试用例编写、回放和管理;
• 远程真机能力,支持设备的云端访问;
• 智能Monkey与AITest等智能化技术驱动的测试能力;

发布域:端应用的目标发布对象是海量的终端设备,生产发布受应用市场审核限制,因此,可靠、精准、定向的应用分发能力是应用生产分发的关键技术要求,包括:
• 企业内分发能力;
• 支持软件定义的灰度能力,支持面向不同的地域、网络、机型、渠道及其他自定义标签进行灰度分发;
• 面向不同渠道的生产发布能力;
• 版本管理与归档;

运维域:面向端应用的运维体系应始终围绕问题的感知,问题的定位,问题的修复展开,在传统的Metrics,Tracing,Logging基础之上,我们特别强调面向端的Hotfix的能力,这是区别于后端应用形态的特殊之处。成熟的端运维体系应包含:
• 面向端应用的APM能力,支持包括启动速度、页面加载、崩溃、网络性能、API性能等在内的监控报警体系,并能与后端APM联动进行基于事务的访问追踪;
• 面向端应用的远程日志能力,支持实时的终端日志记录和管理,加速问题的远程诊断;
• 面向端应用的热修复能力,支持针对不同设备平台的代码、资源热更新;

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

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

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

DevOps为Multiexperience的生产实践带来的关键价值包括:
更短的业务迭代周期
覆盖端应用全生命周期的工作流与自动化能力将带来应用持续交付能力以及跨团队协同效率地大幅提升,进而缩短业务的交付周期。作为企业面向终端用户的入口,更短的业务迭代周期意味着面向市场更快速的反应,这是数字时代商业成功的基石。
更合理的人力资源分配
云原生的工具链与自动化流水线将帮助企业避免耗费大量工程技术人员来维护本地化的工具和系统,同时大幅削减应用持续交付过程的人工环节。企业能够将宝贵的人力资源专注在自己核心业务的生产和研发上。
更稳固的应用交付质量
自动化的终端测试体系以及全方位的监控诊断体系将为端应用提供完整而充分的质量保障,这些云原生服务将为企业节省大量细分领域的专业人员投入,并通过专业且持续的工程技术演进以及智能技术的引进不断优化应用质量保障体系。
更优异的即时用户体验
围绕端应用全方位的行为数据埋点和分析将帮助企业更好地把握产品功能与市场的匹配度,而即时的舆情反馈能力则帮助企业更好地进行用户管理和关系维护。所有这些直接和间接来自客户的声音将直接驱动业务的快速迭代,通过云原生DevOps实现敏捷开发的生产实践。

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

Serverless是当下开发者社区最火爆的话题之一,其核心理念即去服务器化:把底层云计算的基础能力进行高维抽象,以API/SDK的方式开放后端能力的访问和获取,无需开发人员配置和部署服务器资源即可获得弹性伸缩、按量付费的后端服务支持。Serverless的技术理念其实在数年前就已出现:后端即服务(Backend as a Service,BaaS)[4]是典型的遵循Serverless设计理念的服务形态,早在2012年BaaS便在开发者社区中传播并因其便捷的使用模型而深受开发者喜爱。比较典型的BaaS服务包括消息推送、用户认证、云存储、云数据库等。
image.png

由于BaaS服务大幅削减了企业在后端研发力量上的开销,其在端应用场景得到了大范围地应用。但BaaS核心解决的主要是垂直场景化的后端能力抽象,并没法支撑业务本身的后端逻辑部分。Function as a Service(Faas)[5]的出现弥补了这一空缺,并使得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引擎提供了面向端应用的绝大部分场景能力的支撑,使得应用的研发非常便捷并易于维护。而在传统的研发模型下,代码开发、环境搭建、容量压测、集群扩容、应用部署等环节都会带来巨大的时间成本。

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

云原生技术的出现使得传统业务架构大规模地向云架构转型,软件开发效率在这个阶段也得到了明显地提升。然而数字化时代,各种应用场景地涌现,业务对IT面向市场的响应即时性也提出了更高的要求。在跨时代的技术演进浪潮中,Low-code Development Platform(低代码平台)[6]快速浮出水面,并伴随多样化的端应用场景开始加速普及。低代码技术为软件研发效率带来的不仅仅是提升,更是变革。
image.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( https://cn.aliyun.com/product/emas ),如今,EMAS已经逐渐成长为横跨多端(移动App、H5应用、小程序、Web应用等)场景的云原生应用研发平台,基于广泛的云原生技术(Backend as a Service、Serverless、DevOps、低代码等),为企业、开发者提供一站式的应用研发管理服务,涵盖开发、测试、运维、运营等应用全生命周期。
image.png

截止到今天,伴随云计算的迅速普及和发展,我们已服务了15万以上的企业与开发者。(EMAS开发者版套餐免费订阅)

在海量的生产实践中,我们也看到了云原生技术在端应用场景下所面临的的关键挑战:
研发心智的改变
对于所有开发团队而言,前后端团队的定义根深蒂固,协同界面已成自然。然而随着Serverless等云原生技术地广泛应用,在越来越多的端应用场景中,开发团队仅需前端开发人员即可以闭环完成应用的研发和上线工作;在应用架构维度,Serverless FaaS带来的是基于事件驱动,无状态,函数式逻辑片段的全新范式,与传统的应用模型有着较大的区别。改变即成本,更关键的是改变背后不是纯粹的技术,还有组织的变革,生产关系的变革。
技术成熟度
无论是Serverless FaaS还是低代码开发,都属于商业导入期的技术,产品化完善度还有欠缺,所能覆盖的场景也有一定的局限性,对于主流的复杂应用场景,Serverless FaaS还需结合传统微服务等架构形成混合式的Serverless应用。在系统可观测性,研发调试便捷性,函数启动性能,函数执行时长等技术关键控制点上依然有较长的路要走。
架构灵活度
云原生能力代表了对云基础设施的高维封装和抽象,抽象即意味着管控粒度变粗,系统的灵活性与定制扩展能力会天然地受到一定的削弱;

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

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

欢迎加入EMAS开发者钉钉交流群
群号:35248489


钉群二维码.png

REFERENCES

[1] Use MASA to Deliver an Agile Multiexperience Enterprise Application Architecture, Gartner, 2019
[2] Top 10 Strategic Technology Trends for 2020: Multiexperience, Gartner, 2020
[3] Technology Insight for Multiexperience Development Platforms, Gartner, 2020
[4] https://en.wikipedia.org/wiki/Mobile_backend_as_a_service, WIKIPEDIA
[5] https://en.wikipedia.org/wiki/Function_as_a_service, WIKIPEDIA
[6] https://en.wikipedia.org/wiki/Low-code_development_platform, WIKIPEDIA
[7] https://en.wikipedia.org/wiki/Hype_cycle,WIKIPEDIA

相关文章
|
1月前
|
Cloud Native 安全 物联网
云原生技术在现代软件开发中的应用与挑战####
云原生,这一词汇如同一股强劲的科技风暴,席卷了整个信息技术领域,它不仅重塑了软件的开发模式,还引领了一场关于效率、可扩展性和弹性的深刻变革。本文旨在深入探讨云原生技术的核心概念,分析其在现代软件开发中的广泛应用,并直面伴随其发展而来的挑战,为读者勾勒出一幅既充满机遇又不乏考验的云原生技术图景。 ####
|
7天前
|
监控 Cloud Native 持续交付
云原生技术在现代企业中的应用与实践
本文将深入探讨云原生技术如何改变现代企业的运作模式,提升业务灵活性和创新能力。通过实际案例分析,我们将揭示云原生架构的关键要素、实施步骤以及面临的挑战,为读者提供一套清晰的云原生转型指南。
|
13天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代软件开发中的应用与挑战
【10月更文挑战第37天】随着云计算技术的不断演进,云原生技术已经成为推动软件开发现代化的重要力量。本文将深入探讨云原生技术的核心概念、优势以及面临的挑战,并通过一个实际的代码示例,展示如何在云原生环境中部署一个简单的应用。我们将从云原生的基础架构出发,逐步引导读者理解其在现代软件开发中的关键作用。
26 1
|
27天前
|
敏捷开发 Cloud Native 持续交付
云原生技术在现代企业中的应用与实践
【10月更文挑战第23天】本文将深入探讨云原生技术在现代企业中的广泛应用,并结合具体案例分析其对企业数字化转型的推动作用。我们将从云原生技术的基本原理出发,逐步揭示其在提高业务敏捷性、降低成本和增强系统可靠性方面的优势。同时,文章还将分享一系列成功实施云原生技术的企业案例,为读者提供实践中的参考和启示。最后,我们将讨论云原生技术面临的挑战及未来的发展趋势,为企业在这一领域的进一步探索提供指导。
|
28天前
|
Cloud Native 持续交付 云计算
云原生技术深度探索:构建现代化应用的基石####
【10月更文挑战第21天】 本文将深入探讨云原生技术的核心概念、关键技术及其在现代软件开发中的应用。我们将从容器化、微服务架构、持续集成/持续部署(CI/CD)、无服务器架构等关键方面展开,揭示这些技术如何共同作用,帮助企业实现高效、弹性且易于维护的应用部署与管理。通过实例分析,展现云原生技术在实际项目中的显著优势,为读者提供一套全面理解并应用云原生技术的指南。 ####
34 2
|
1月前
|
运维 Cloud Native 持续交付
云原生技术在现代IT架构中的深度应用与挑战####
【10月更文挑战第17天】 本文深入剖析了云原生技术的精髓,探讨其在现代IT架构转型中的核心作用与面临的挑战。云原生不仅是一种技术实现,更是企业数字化转型的重要推手,通过容器化、微服务、持续集成/持续部署(CI/CD)等关键要素,重塑软件开发、部署与运维模式。文章首先概述了云原生的基本原则与核心组件,随后分析了其如何促进企业敏捷性、可扩展性和资源利用率的提升,同时也指出了在安全性、复杂性管理及人才技能匹配等方面存在的挑战,并提出了相应的对策建议。 ####
68 6
|
22天前
|
Cloud Native 安全 持续交付
云原生技术在现代软件开发中的应用与挑战####
本文深入探讨了云原生技术在现代软件开发中的广泛应用及其面临的主要挑战,旨在为开发者和企业提供实用的指导和策略。云原生技术通过其独特的架构和方法论,极大地提升了软件的可扩展性、弹性和敏捷性。然而,随着技术的不断演进,如何有效应对其在安全性、复杂性和成本控制等方面的挑战,成为了业界关注的焦点。本文将详细阐述云原生技术的核心概念、实际应用案例,并针对当前面临的主要挑战提出相应的解决策略。 ####
|
11天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
13天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
14天前
|
消息中间件 存储 Cloud Native
云原生架构下的数据一致性挑战与应对策略####
本文探讨了在云原生环境中,面对微服务架构的广泛应用,数据一致性问题成为系统设计的核心挑战之一。通过分析云原生环境的特点,阐述了数据不一致性的常见场景及其对业务的影响,并深入讨论了解决这些问题的策略,包括采用分布式事务、事件驱动架构、补偿机制以及利用云平台提供的托管服务等。文章旨在为开发者提供一套系统性的解决方案框架,以应对在动态、分布式的云原生应用中保持数据一致性的复杂性。 ####
下一篇
无影云桌面