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

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

 

阿里云 云原生应用研发平台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万以上的企业与开发者。

在海量的生产实践中,我们也看到了云原生技术在端应用场景下所面临的的关键挑战:
• 研发心智的改变
对于所有开发团队而言,前后端团队的定义根深蒂固,协同界面已成自然。然而随着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 ),变革生产力,改变世界。

 

原文链接
本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于卫星定位,你想知道的一切

简介: 本文将简要介绍卫星定位的原理和应用情况,方便大家对北斗、卫星定位有更多的了解。 5G和北斗,是国之重器。北斗作为卫星定位系统,目前在国际上已处于领先地位,而且已经渗透到我们工作和生活的方方面面。本文将简…

拯救运维工程师,数据链 DNA 来袭!

在《凤凰项目——一个IT运维的传奇故事》一书中讲述运维工程师的常态: A工程师:“是的,我们复制了你给的那个文件……是的,就是1.0.13版……你说那个版本是错的,这话是什么意思……什么?你什么时候把它改了…

jre for mac 删除_在 Mac 的 Docker Desktop 中运行 K8s

Docker Desktop for Mac 从 Docker Community Edition 18.06.0-ce-mac70 2018-07-25 版本起,添加了对 Kubernetes 的支持,可以方便的在 Mac 上运行一个单节点的 K8s 集群。在 Docker Desktop 的 Preferences 中的 Kubernetes 页面里,提供了一…

阳振坤:OceanBase 数据库七亿 tpmC 的关键技术

OB君:2020年9月25日,OceanBase在外滩大会举办的“数据库,新标杆,新征途”分论坛正式落幕,内容涵盖数据库的趋势探讨、分布式数据库的技术创新与行业应用,及国内数据库的发展与生态。欢迎持续关注本系列内容…

数百万台车联网设备同时在线0故障,中瑞集团的云原生探索之路 | 云原生Talk

简介: 在保持对业界趋势调度关注的同时,始终选用最适合自身的技术,这可能是中瑞能在车联网领域引领行业的重要原因之一,正如中瑞CTO所说“阿里云云原生产品体系带给我们的,不是单纯的IT工具,而是整个团队战…

mysql主键重复会覆盖还是_mysql如果主键重复了会发生什么情况

首先创建一个person表:create TABLE person(id int not null auto_increment,name VARCHAR(255) ,age int,PRIMARY key (id))同时打开两个sql窗口set autocommitoff;set id-1;SELECTauto_increment into idFROMinformation_schema.TABLESWHEREtable_name personAND…

终止中台乱象 《2021年中国中台市场研究报告》隆重发布

2015年,阿里提出“大中台,小前台”的战略,帮助一线业务更敏捷地适应市场变化。随后,多家互联网巨头纷纷布局中台战略,中台概念由此全面打响。 通过中台,可以打通数据孤岛,实现快速响应、智能预…

Flink State 误用之痛,你中招了吗?

简介: 本文主要讨论一个问题:ValueState 中存 Map 与 MapState 有什么区别?如果不懂这两者的区别,而且使用 ValueState 中存大对象,生产环境很可能会出现以下问题:CPU 被打满、吞吐上不去。 本文主要讨论一…

Dubbo-go 源码笔记(一)Server 端开启服务过程

简介: 随着微服务架构的流行,许多高性能 rpc 框架应运而生,由阿里开源的 dubbo 框架 go 语言版本的 dubbo-go 也成为了众多开发者不错的选择。本文将介绍 dubbo-go 框架的基本使用方法,以及从 export 调用链的角度进行 server 端源…

mysql怎么多重查询_mysql基于值的多重查询

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户…

华为在中国建立其全球最大的网络安全透明中心

2021年6月9日,华为最大的网络安全透明中心今天在中国东莞正式启用,来自GSMA、阿联酋、印尼的监管机构及英国标准协会、SUSE等机构代表出席并在活动上发言。借此机会,华为发布了《华为产品安全基线》白皮书,首次将产品安全需求基线…

浅析云控平台画面传输的视频流方案

简介: 本文将小结本次云控平台画面传输的视频流方案。 背景 ARC(高德车机云控平台)是一个基于车载设备业务深度定制的云控平台,通过该平台我们能够实现远程使用不同类型的车载设备。为了让远程使用者像在本地一样使用车载设备&am…

解读云原生基础设施

简介: 云原生是云计算领域的热点之一。就像 “一千个人眼里有一千个哈姆雷特”,大家对"云原生"的定义也见仁见智。本文将介绍云原生应用架构和生命周期管理的进化方向。 作者 | 易立 阿里云资深技术专家 导读:云原生是云计算领域的…

mysql al32utf8_Oracle 11g更改字符集AL32UTF8为ZHS16GBK

Oracle 9i更改字符集AL32UTF8为ZHS16GBKSQLgt; conn /as sysdba SQLgt; shutdown immediate; SQLgt; startup mount SQLgt; A首页 → 数据库技术背景:阅读新闻Oracle 11g更改字符集AL32UTF8为ZHS16GBK[日期:2011-04-26]来源:Linux社区作者&am…

共筑全场景智慧生态,华为HMS全球应用创新大赛火热开启

6月10日,2021华为HMS全球应用创新大赛(Apps UP)正式启动。此次大赛以“HMS Innovate For All”为主题,激励全球开发者集成华为HMS Core开放能力开发创新应用,打造全场景数字创新体验,为全球消费者带来全场景…

2020-11-06

一、背景介绍 (一)流平台通用框架 目前流平台通用的架构一般来说包括消息队列、计算引擎和存储三部分,通用架构如下图所示。客户端或者 web 的 log 日志会被采集到消息队列;计算引擎实时计算消息队列的数据;实时计算…

移动端堆栈关键行定位的新思路

简介: 崩溃堆栈是我们日常应用问题排查中的重要辅助手段,在移动开发上也不例外,为了支持用户在堆栈上的快速定位,我们面临一个看似比较简单问题:高亮崩溃中的关键行, 辅助用户快速定位问题。 阿里云 云原生应用研发平台…

mysql exists in join_子查询、left join、 exists 替代 not in

如果要实现一张表有而另外一张表没有的数据时,我们通常会这么写:SELECT id FROM user WHERE id NOT IN (SELECT id FROM student)not in不会走索引, 可以用exists替代SELECT id FROM user WHERE NOT exists (SELECT id FROM student WHERE user.id stud…

华云数据升级发布“信创云基座“ 用“全芯全栈”支持“信创强国”

2021年6月10日,北京——2021年是我国“十四五”规划的开局之年,也是我国“加快数字发展 建设数字中国”的关键之年。值此历史交汇的关键点,云计算、大数据、人工智能、物联网、工业互联网、区块链等重点产业将对国家数字经济发展起到巨大推动…

最IN的云原生架构,阿里云 Serverless 事件总线 EventBridge 重磅发布

简介: Serverless 是云计算下一个10年的主要形态,通过大量端到端的整合和云服务的集成,能极大地提高研发效率。了解阿里云 Serverless 产品家族的最新进展,包括函数计算FC、Serverless应用引擎SAE和 Serverless事件总线EventBridg…