火山引擎应用开发套件MARS的多端开发实践

2021-12-07 16:38:13爱云资讯阅读量:597

2021年12月2日,「新云·共未来」云产品发布会上,火山引擎正式发布了应用开发套件MARS。同时,火山引擎大前端产品负责人董必胜带来了题为《应用开发套件MARS的多端开发实践》的分享。

以下为演讲正文:

大家好,我是火山引擎大前端产品负责人董必胜。MARS(Multi-experience App Realization Stack)是经过抖音、今日头条等多款APP实践验证的,面向多端开发场景的应用研发工具,致力于通过先进的研发技术,帮助企业和用户降低研发成本、提升研发效率。

接下来我将从字节跳动的多端应用研发实践、火山引擎MARS的功能及优势、面向多场景的研发解决方案等方面进行我的分享。

火山引擎MARS的功能及优势

近年来,随着移动互联网和物联网技术的不断发展,手机、平板、智能手表、大屏等各种终端设备爆发式涌现,给研发端带来了研发工作量和复杂性的大幅度提升,字节跳动亦然。

一方面,字节跳动成立的9年时间里,诞生了多款受人喜爱的APP,用户量级爆发式增长;另一方面,字节跳动今天的业务范畴非常广泛,覆盖短视频、直播、电商、资讯、小说、游戏等多种业务形态,APP数量达到100+。

用户量级的高速增长及业务广度的不断拓展,给我们的应用研发体系带来了巨大的挑战。首先,业务复杂度越来越高,且业务场景差异大,造成了我们研发人力不足、应用上线周期长、APP缺陷多、性能差、研发效能低等问题。其次,庞大的用户基数对产品质量、交付敏捷性、交付品质、交付时间等都提出了更高要求。

如何在确保应用质量和性能的前提下,快速降低研发成本,解决质量、时间、成本的不可能三角?为了探索这个问题的答案,火山引擎将9年来APP研发的经验和能力分享出来,打造了面向多端开发场景的应用开发套件MARS

研发流程上,MARS能够覆盖项目管理、设计、需求开发、测试、运维监控等研发全链路。

最上游通过项目需求管理串联所有开发活动,让业务/产品同学对研发活动有更好的把控;

接到需求后,设计师可以用MARS进行设计资源管理、设计还原度智能验收,同时还能在设计师产出设计稿的同时生成UI层面的代码,让研发同学避免因设计稿调整而不断重写代码;

在研发过程中,我们提供了开发框架、研发流水线、和Baas云服务提升开发效率;

开发框架:MARS面向不同场景提供了不同的解决方案,面向现代Web应用开发的Modern.js、面向多端多屏场景的flutter/H5等

流水线:MARS提供灵活、便捷的流水线编排能力及场景化的模版,支持不同开发模式下的交付活动

云服务:提供了高性能、高可用的基础Baas工具,帮助开发者更好地实现业务目标

为了更好地保障用户体验,面向多端场景提供自动化测试工具和监控能力,支持线上、线下产品质量和体验提升。

今年低代码的概念比较火,在此之前MARS已经有很多低代码搭建的经验积累。MARS支持活动页面搭建、中后台系统搭建、数据看板等,面向生态场景也提供了比较好的扩展。

简单总结下MARS的优势:

更便捷的开发框架——在任何业务场景下,研发同学都能够便捷开发;

更快速的交付效率——灵活的流水线及覆盖开发过程中各种场景的服务能力,实现自动化的代码集成和交付,让研发同学专注coding;

更好的产品体验——线下通过自动化的测试工具拦截缺陷,线上实时监控应用状态,帮助开发者快速发现和定位异常;

更低的开发成本——丰富的业务组件及可视化的搭建能力,实现少写代码甚至不写代码即可实现业务搭建。

基于字节跳动9年研发经验积累的应用开发套件MARS,我们的工程师实现了质量、成本、时间三者兼得,在不可能三角的突破上,给出了火山引擎方案。

6大解决方案,覆盖研发的多场景、全流程

除了努力突破不可能三角,针对研发中的不同流程、不同场景、不同人群,MARS打磨出6大解决方案:

面向客户端研发的「移动研发解决方案」

面向QA、研发的「质量解决方案」

面向研发、运维的「APM性能监控解决方案」

面向产品、运营、设计师的「低代码解决方案」

面向前端、后端、全栈开发的「Web研发解决方案」

面向产品经理、PMO的「项目管理解决方案」

移动研发解决方案

移动研发解决方案中,MARS有3大产品亮点:

研发体系上,作为字节敏捷迭代APP背后的秘密,MARS移动研发平台能对研发流程进行小时粒度的计划和精细化管理,精确管理着字节每一个APP每一个版本的时间节点。版本的需求规划、设计、开发、测试、回归、launchreview、灰度、全量、提审等,都能按预定时间和目标进行交付,在节奏和效率上能够与制造业精细化管理的工厂车间相媲美。以抖音为例,版本经理已经把2022年12月份的版本计划都制定好了。

相较于业界通常一到两个月一个正式版本的发布节奏,字节已经将周粒度的正式版本发布常态化。抖音、头条每周正式上架一个新版本,从不间断。

热更新框架。相比于服务器端想发就发的场景,如何让客户端APP也能更快速地上线,让业务第一时间触达用户,一直是客户端研发同学想解决的问题。插件化就是解决这一问题的利器,我们将业务功能独立成一个个插件进行动态下发,比如头条里的小说、汽车等板块。

2016年谷歌曾做过一个统计调查,一个APP的安装包大小每增加6MB,新增用户的转化率就会下降1%。当一个应用安装包达到100MB量级的时候,新增用户转化率呈断崖式下降。我们通过插件化的方式把今日头条的包体积由120M+压缩到了极速版的15M,有效提升了用户的转化效率,现在这套能力被集成到了MARS,开放给所有开发者。

Flutter框架。多端开发是一个绕不开的话题,如何快速实现一次开发多端运行?作为首款全面支持flutter的开发平台,我们在flutter框架、组件、开发者工具、开发流程、测试、监控等场景上提供全面的支持。以flutter框架为例,我们做过一个测试,字节版本比开源社区版本的首帧耗时降低了35%。跨多端场景下,flutter极大地降低了开发的人力成本。

质量解决方案

质量解决方案中,MARS有2大产品亮点:

智能探索:常见的monkey工具需要跑很长时间才能做到页面场景的覆盖,但单次需求改动又比较小,导致了大量的时间浪费和机器占用,MARS自研的fastbot能基于历史访问UI链路,自动寻路到对应的页面,基于代码分析圈定影响域进而发起关联功能的测试,有效提升测试效率。在字节双月任务执行数超10,000次,发现异常超过50,000个。

UI自动化:UI自动化在字节被大量应用在有埋点场景的自动化测试中。比如在今日头条的feed流基础业务中,埋点测试已经100%覆盖,完全替代了人工测试;抖音商业化的埋点自动化校验,一个双月发现问题38个,召回率100%,0漏测,有效降低了QA的人力成本。

应用性能监控解决方案

在APP监控、Web、服务端监控、Flutter、Hybrid、小程序、手游、OS、PC等场景中,MARS沉淀了一套完整的应用监控解决方案。这套解决方案有三大亮点:

低成本接入:一方面我们提供了无侵入式的SDK,另一方面可以根据接入和使用的功能按模块接入,不同的功能还提供了开关配置。

安全可靠:我们提供了安全气垫和防卡死保护机制,确保业务能够在极端异常情况下即使发生了crash、卡死还能正常运行。

技术领先:在字节,即使采用抽样采集的方式,每天上报的数据仍然有千亿条。在处理海量数据的时候,我们碰到过各种复杂性能的分析场景。在这些场景下我们磨炼出了领先的技术能力,比如ANR时序图、异常现场还原技术,自回溯算法等,还有行业首创的基于memory graph的OOM分析能力。基于此技术,抖音和今日头条的OOM率降低了50%以上。

低代码解决方案

低代码的应用场景非常广泛。官网页面搭建、H5搭建、中后台搭建、后端建模等,都可以使用低代码的方式进行搭建。MARS低代码还提供模板市场,非技术背景的同学可以完全不需要搭建,将平台已有的模版初始化后开箱即用。

市面上的低代码工具一般都有一套自己特有的代码生成和执行逻辑,生成的代码和原生标准前端方案有较大差异,不能进行后续的人工开发和维护,也就意味着如果想人工介入,就需要抛弃现有的方案重新开发,同时标准开发的组件无法接入到低代码平台里。

低代码解决方案中,MARS提供3大能力:

与标准前端方案紧密结合,能进行已有组件的快速导入、快速二次开发部署等,性能体验和原生无异。

灵活开放的接入能力,可以基于SDK+OpenAPI对编辑器进行扩展,能较好地和已有系统平台对接。

一站式的完整建站能力,能够一站式实现后端搭建、前端编排等。

Web研发解决方案

Web研发解决方案为开发者提供三大产品能力:

工程方案一体化:前端开发者会有不同的工程结构、框架、开发语言、开发范式。MARS Web研发解决方案可以支持各种工程方案的导入,并实现工程、构建、测试环境、发布环境等初始化的全自动。

研发链路闭环:相比传统意义的流水线,MARS更进一步,能够实现需求任务的创建、工程搭建、coding、编译、测试环境部署、沙箱预览、代码codereview、集成、小流量灰度、正式发布的全过程闭环,实现真正意义上的浸入式开发。

Serverless部署:我们能支持Web、Node、Electron、离线包等各种业务场景,同时有比较好的性能实践。以头条M站业务为例,峰值13000 qps,冷启动时间15ms,成功率100%。

项目管理解决方案

正如开头所讲的项目管理不可能三角,如何实现成本低、质量好、时间快的三者兼得?研发会碰到很多问题,项目执行难,制定计划难,沟通成本高、任务跟进难等。在大规模团队协同时这些问题尤为凸显,MARS的解决思路是“管理+协作+效能”。

管理:管理好产品、需求、任务、缺陷、迭代、物料。

协作:项目进度协作、团队任务协作、研发流程协作。

效能:燃尽图、人力甘特图、交付效率度量提升人效。

以上就是火山引擎应用开发套件MARS面向不同研发流程、不同研发场景、不同研发人群的全部产品能力介绍,希望能为企业和开发者提供良好的研发体验。

完善的用户成长体系,与开发者共同成长

除了提供功能强大的产品,我们还希望我们的开发者用户能够依托平台获得技术提升和持续成长。为此火山引擎推出开发者成长体系,包含MARS训练营、MARS TALK、MARS小报、客户成功计划等,希望能够通过这些方式帮助开发者学习技能、用好工具。

MARS训练营:输出围绕Android、iOS、Web、小程序、flutter、H5等场景的开发课程,帮助开发者提升开发能力;

MARS TALK:提供字节在业务过程中碰到的典型case剖析、实战经验分享;

MARS小报:提供相关领域的前沿进展,以及未来发展趋势的资讯;

客户成功:一方面在接入时提供首个项目的伴飞计划,帮助业务快速接入集成,另一方面提供7*24 工单、电话oncall等日常服务,保障业务稳定运行。

目前,已有诸多客户、开发者成为我们的合作伙伴,使用火山引擎应用开发套件MARS提供的研发能力。后续MARS会持续聚焦于产品能力的打磨和功能的迭代,给客户和开发者提供更好的产品体验、更专业的产品服务。

相关文章
热门文章
头条文章
重点文章
推荐文章
热点文章
关于我们|联系我们|免责声明|会展频道
冀ICP备2022007386号-1 冀公网安备 13108202000871号 爱云资讯 Copyright©2018-2023