闲鱼技术2022年度白皮书-KUN主题-这一年,我对终端组织与技术架构的思考【专家讲技术】(下)

简介: 闲鱼技术2022年度白皮书-KUN主题-这一年,我对终端组织与技术架构的思考【专家讲技术】

接上篇:https://developer.aliyun.com/article/1225907?spm=a2c6h.13148508.setting.31.595d4f0eudDbz0



四、 终端容器KUN,助力闲鱼再出发

 

image.png


以上的未来研发模式的构想部分的内容在闲鱼已经有了较好的基础,一方面我们的Flutter技术在业务落地侧的占比远高于目前市面上同等体量的App,这样的业务规模和技术落地规模让我们有机会验证在较为复杂的C端场景下基于Flutter技术的容器化解决方案是否有机会走通,随着团队对Flutter技术的理解和沉淀不断提升,在大量体验场景下的富交互细节以及操作系统升级带来的兼容性挑战正在持续被解决和优化,另一方面闲鱼在推进落地一周一版的研发模式的过程中目前通过新的客户端研发平台完成了发版流程的全面数字化和部分场景的技术自动化落地。以研发流程为例,我们力求将核心的90%的协作通过线上审批流、钉钉机器人通知,自动化的版本邮件来完成,让整个过程可观测和回溯,同时在构建集成、回归验证和版本放量等能力上通过跟自动化能力结合加速交付效能的提升。

 

然而在目前的布局下,闲鱼客户端基于Flutter容器化的基础架构以及一周一版的发布模型,在未来依然有较大的困难需要突破:一方面客户端的人员规模增长速度和生态演进速度在应用层这一侧都显然不如前端,在未来的快速迭代能力侧难以进一步突破以应对不确定的未来,另一方面作为C端产品又要求体验必须对齐原生,基础链路侧的富交互体验会持续存在,这在前端角度又是极大的成本。从这两个角度来思考,我们的终端容器需要进一步升级迭代。它应该海纳百川容纳更大的研发生态,让前端&客户端的生态为我所用,在需要体验的时候进行更轻量级的能力扩展,如直接引入通过Flutter研发的客户端组件,在需要迭代时发挥前端的作用,如研发期的迭代速度,发布期在合规的要求下具备业务线上的快速迭代的能力。

 

因此从2021年下半年开始,我们的KUN项目应运而生,简单描述KUN的定义,KUN是基于W3C标准子集&Flutter打造的高扩展性、高性能跨端渲染引擎。KUN的目标是通过提供一套统一的容器覆盖端内全部的业务场景来解决端内多套容器带来研发效能低下、业务代码复用难、不同场景叠加带来的性能水位差的问题。为帮助大家理解我这里增加一张KUN与其他类似框架的架构对比图。

 

image.png


 

KUN具备以下关键特点

 

高扩展性

 

针对富交互场景以及高性能场景,Kun提供低成本的扩展机制,将FlutterWidget映射为上层可使用的自定义组件,过程中提供较为方便的文档生成工具给上层开发使用。同样,在W3C标准中,KUN也通过微内核的设计方案将W3C的核心Tag注册入KUN的内核当中。

 

高扩展性的核心目标是通过复用闲鱼4年来在Flutter侧大量的上层交互控件解决线上产品的交互体验和性能问题。高扩展性也是KUN的最核心特点,后续围绕Flutter生态,后续闲鱼有机会孵化出类似FishDesign的组件库生态。

 

面向W3C标准

 

上层应用开发通过JS/TS开发,并提供面向W3C子集的标准,这也意味着您可以通过React/Rax等框架进行上层开发。这部分目前跟常见的跨端框架的原理基本一致,在整体设计上也参考了业内主流的跨端框架,在标准的支持上,我们目前更多关注闲鱼侧业务较长使用的能力,由于扩展能力是我们的第一选择,因此在未来更多KUN使用的场景,我们会倾向于使用闲鱼内部的高性能自定义组件,这也意味着我们的这部分能力较薄。

 

高性能&多端一致性

 

通过Flutter引擎以及Flutter相关组件生态为整个渲染引擎提供高性能交付产物。底层的整体渲染基于FlutterWidget,保证了多端的一致性和容器复用。这部分的特性完全来源于Flutter的基础能力,这里不再赘述。唯一需要关注的是,当整个应用复用Flutter容器时,在内存水位和加载性能侧以及组件开发成本上来看,显著好于混合了多个容器如Flutter+Weex+WebView的性能。这部分的优势完全来自于整个App架构的简洁。

 

image.png


为方便大家理解,这里也补充一张扩展组件的核心描述,可以看到更多时候我们会在产品链路上使用混合模式进行开发,保证关键细节的体验与原生一致,而在基础组件的描述上我们更倾向于直接使用W3C的标准。

 

KUN项目较好的打通了现有的前端生态和Flutter生态,并通过配套工具进一步减少开发的门槛,使得具备JS/TS/Dart开发能力的终端工程师有机会在闲鱼诞生,这类工程师可以在性能敏感型和动态性敏感型的不同场景下选择不同的技术实施方案做业务落地,使得终端岗位独立完成端侧需求这件事情得以成立。目前我们已在导购场景和我发布的等场景下完成了前期的技术落地。后续会针对复杂场景如闲鱼号等业务进行改造和落地,通过技术的革新为业务带来效能的变化,为用户带来更好的产品体验。未来的几个月,我们会针对目前产出的一些关键能力和部分技术细节做系列性的总结和分享,在完成大规模的业务验证和技术优化后,我们将面向社区进行开源。

 

五、 后记

 

写这篇文章的最后,写一点自己的碎碎念。

 

首先要表达一些对行业内同事和朋友的感谢,比如文中提到的MXFlutter,是较早进行Flutter侧动态化方案落地的开源项目,早在我自己做GMTC出品人时跟该项目负责人有所交流,在KUN的设计的前期调研中也有了解过MXFlutter的一些使用方式和落地情况。这里另外要感谢的是Kraken团队,KUN的整个项目落地过程中得到了Kraken团队较多的支持,在技术交流和讨论中也让KUN的定位和路径更明确,两个团队也做了大量的代码实现的讨论和交流,得益于Kraken的开放性,KUN在这个过程中站在巨人的肩膀上继续演进。

 

这里插播一个彩蛋,KUN的名字本身就是对Kraken项目的一个致敬,大家可以猜一猜原因。未来KUN也希望最终能青出于蓝而胜于蓝,并把代码回馈给社区,在前期的建设中我们会先以集团内部开源作为目标,并在未来面向社会开源,为行业技术生态建设提供一些力所能及的帮助。

 

另外想讲下我看到的行业差距和不足。在了解整个国外行业对我所定义的终端岗位的情况来看,硅谷的头部公司工程侧的人才结构已经发生了一些变化,工程侧的人才更多面向全栈和终端全栈的方向去走,原因是海外的工程基建能力更发达和完备,这也意味着海外的技术组织通过技术能力和组织岗位的重新整合,达到了更好的生产效率。

 

近几年国内也开始更加强调组织的持续演进和工程师素养的提升,比如提出了DevOps的概念,减少运维参与,在云原生的大环境下降低开发和运维门槛。提出了测试开发的概念,推进研发的自测和持续集成自动化能力的建设。提出卓越工程的概念,更加强调软件架构和研发基础设施的重要性。但这些变化始终是跟随硅谷的步伐。作为国内的头部的互联网企业的一员,我也希望国内的技术人能在不确定的大环境下练好内功,通过持续的自我革新来形成企业的技术壁垒,正视我们与国际互联网公司之间的技术和基建上的差异,先追平能力,再找到机会持续超越,真正能为技术创造新商业提供一些微小的帮助。

 

日拱一卒无有尽,功不唐捐终入海。未来星辰大海的道路上,闲鱼技术与你一起乘风破浪。

 

参考资料

【1】2021年互联网行业挑战与机遇白皮书

【2】北海,高性能Web渲染引擎,基于Flutter构建

【3】MXFlutter是一套使用TypeScript/JavaScript来开发Flutter应用的框架。

相关文章
|
4天前
|
Cloud Native 持续交付 云计算
云原生技术在现代IT架构中的革新角色
随着数字化转型的浪潮席卷全球,企业对信息技术的需求日益增长。本文将探讨云原生技术如何推动现代IT架构的创新和优化,包括容器化、微服务架构、持续集成与持续部署(CI/CD)等核心概念。通过实际案例分析,我们将了解这些技术是如何帮助企业提升灵活性、加速产品上市时间并降低运营成本的。文章旨在为读者提供云原生技术的全面视角,揭示其在现代IT战略中不可或缺的地位。
|
7天前
|
存储 Java Maven
从零到微服务专家:用Micronaut框架轻松构建未来架构
【9月更文挑战第5天】在现代软件开发中,微服务架构因提升应用的可伸缩性和灵活性而广受欢迎。Micronaut 是一个轻量级的 Java 框架,适合构建微服务。本文介绍如何从零开始使用 Micronaut 搭建微服务架构,包括设置开发环境、创建 Maven 项目并添加 Micronaut 依赖,编写主类启动应用,以及添加控制器处理 HTTP 请求。通过示例代码展示如何实现简单的 “Hello, World!” 功能,并介绍如何通过添加更多依赖来扩展应用功能,如数据访问、验证和安全性等。Micronaut 的强大和灵活性使你能够快速构建复杂的微服务系统。
26 5
|
7天前
|
Kubernetes Cloud Native Docker
云原生技术:容器化与微服务架构的融合之道
【9月更文挑战第4天】在数字化时代的浪潮下,企业追求敏捷、高效、可扩展的IT架构成为共识。云原生技术作为现代软件部署的黄金标准,其核心理念在于推动应用的快速迭代与无缝迁移。本文将深入探讨云原生技术的精髓——容器化与微服务架构如何相互促进,共同构建起适应云计算环境的应用生态系统。我们将通过实际案例,揭示如何在云平台上利用这些技术实现服务的解耦、弹性伸缩及自动化管理,进而提升企业的竞争力。
|
15天前
|
Kubernetes Cloud Native 开发者
云原生技术在现代IT架构中的应用与挑战
【8月更文挑战第27天】 随着云计算的飞速发展,云原生技术已经成为推动企业数字化转型的重要力量。本文将深入探讨云原生技术的核心概念、优势以及在实际应用中遇到的挑战,并通过具体代码示例展示如何利用云原生技术优化IT架构。
|
15天前
|
安全 网络安全 数据安全/隐私保护
云原生技术探索:容器化与微服务架构的实践之路网络安全与信息安全:保护数据的关键策略
【8月更文挑战第28天】本文将深入探讨云原生技术的核心概念,包括容器化和微服务架构。我们将通过实际案例和代码示例,展示如何在云平台上实现高效的应用部署和管理。文章不仅提供理论知识,还包含实操指南,帮助开发者理解并应用这些前沿技术。 【8月更文挑战第28天】在数字化时代,网络安全和信息安全是保护个人和企业数据的前线防御。本文将探讨网络安全漏洞的成因、加密技术的应用以及提升安全意识的重要性。文章旨在通过分析网络安全的薄弱环节,介绍如何利用加密技术和提高用户警觉性来构建更为坚固的数据保护屏障。
|
11天前
|
Kubernetes Cloud Native 调度
云原生技术实践:构建高效、可扩展的微服务架构
本文深入探讨了云原生技术在现代软件架构中的应用,特别是如何利用这些技术构建高效、可扩展的微服务架构。文章首先介绍了云原生的基本概念和优势,然后通过一个实际案例,展示了如何使用Kubernetes和Docker等工具来部署和管理微服务。最后,文章还讨论了云原生技术面临的挑战和未来的发展趋势。 【8月更文挑战第31天】
|
11天前
|
Kubernetes Cloud Native Docker
探索云原生技术:从容器化到微服务架构
【8月更文挑战第31天】云原生技术正改变着软件开发和运维的方式,它让应用更加灵活、可扩展且易于管理。本文将深入探讨容器化如何助力应用快速部署,以及微服务架构在提升系统弹性和可维护性方面的作用。我们将一起学习Docker和Kubernetes的基础使用,并通过实际代码演示如何构建一个简单的微服务应用。无论你是云原生新手还是希望深化理解,这篇文章都将为你提供宝贵的知识和技能。
|
17天前
|
存储 缓存 数据管理
Django后端架构开发:后台管理与会话技术详解
Django后端架构开发:后台管理与会话技术详解
21 0
|
14天前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
3天前
|
监控 负载均衡 应用服务中间件
探索微服务架构下的API网关设计与实践
在数字化浪潮中,微服务架构以其灵活性和可扩展性成为企业IT架构的宠儿。本文将深入浅出地介绍微服务架构下API网关的关键作用,探讨其设计原则与实践要点,旨在帮助读者更好地理解和应用API网关,优化微服务间的通信效率和安全性,实现服务的高可用性和伸缩性。
14 3

热门文章

最新文章