QQ空间业务是腾讯旗下的重要社交平台,自2005年上线以来,凭借其丰富的功能和个性化设置,吸引了数亿用户。用户可以在QQ空间书写日志、发布说说、上传照片、分享音乐和心情,还能通过各种方式展现自我,如设定背景、小挂件等。它致力于建设开放平台,与第三方合作提供个性化社交服务。
一、发展历程
1、初出茅庐:2005年6月6日,Qzone1.0内测版首次发布,获得英雄帖即可参加内测。
2、快速发展与问题积累:上线后迅速风靡全网,但随着时间推移,由于多团队不规范协同开发,代码逐渐劣化,架构复杂,维护成本升高,历史bug难以收敛。
3、重构升级:2023年,借着空间UI升级的契机,空间团队进行了大规模重构,以解决架构问题,提升性能和可扩展性。
二、业务形态
1、结合版:主要入口在手Q里,是用户使用最多的版本。
2、独立版:独立版的空间App仍在维护,有一批忠实观众。
三、架构特点
1、业务层打薄,专注中间层:重新设计架构层级,底层技术组件基于RFW框架,更干净且无业务侵入,可在其他App开箱即用,中间层负责桥接和扩展,实现空间相关功能,其代码迁移性强。
2、RFWComponent组件库:由空间和小世界团队共同维护,组件经过线上业务验证,易用性和扩展性好,开箱即用,核心组件可由上层注入代理实现,不依赖手Q运行环境,避免了业务侧逻辑入侵底层代码。
四、重构过程与策略
1、渐进式重构:采用高速公路换轮胎的方式,小步快跑,将复杂问题拆解为小问题,逐个重构和回滚,保证系统随时可用状态,每解决一个小问题都可针对性测试和上线。
2、先拆解,后治理:基于RFW-Part框架对老代码进行拆解,Part自带生命周期,保证老代码平移前后运行逻辑一致,再根据优先级对单个Part进行重构。
3、提效前置,简化运行环境:在进行业务重构前,先偿还部分技术债,如去插件化、进程统一、工程结构优化和编译优化等,简化代码运行环境,提升开发效率。
五、相关问题与解答
1、问:为什么QQ空间要进行重构?
答:QQ空间自上线以来,历经多年发展,代码变得陈旧、复杂,涉及多个进程和插件,维护成本高,随着业务交接频繁和多团队协同开发,代码逐渐劣化,各项代码质量指标下降,历史bug难以收敛,即使不改代码每个版本也会新增大量历史bug,架构的扩展性低,异化代码无处安放,导致底层技术组件被污染;各团队代码未隔离且缺乏编程范式,使得代码耦合严重、风格迥异,进一步加剧了维护难度,为了提升性能、降低维护成本、提高架构的扩展性与复用性,QQ空间选择进行重构。
2、问:QQ空间重构后的架构如何保证扩展性与复用性?
答:重构后的QQ空间架构通过多种方式保证扩展性与复用性,业务层打薄,专注于中间层,底层技术组件基于RFW框架,更加纯净,无业务侵入,可在其他App中直接使用,中间层则负责桥接底层组件和手Q运行环境,并对底层组件进行扩展,实现空间相关但与具体场景无关的功能,RFWComponent组件库由专业团队维护,所有组件都经过线上业务验证,保证了易用性和扩展性,且组件完整、开箱即用,最重要的是,RFW的核心组件可由上层注入代理实现,不依赖手Q的运行环境,有效避免了业务侧逻辑入侵底层代码,目前整套架构已在空间、小世界、频道、基础等团队深度使用,证明了其在保证扩展性与复用性方面的有效性。