QQ空间(Qzone)是腾讯公司于2005年开发的一个具有个性空间,具有博客(blog)功能的附属产品。它允许用户书写日志、写说说、上传图片、听音乐、写心情等,通过多种方式展现自己。QQ空间自问世以来受到众多人的喜爱,是许多用户记录生活点滴、分享情感的重要平台。
QQ空间业务(Qzone)
一、概述
QQ空间,作为腾讯公司于2005年推出的一款具有个性空间的产品,自问世以来便受到了广大用户的喜爱,它不仅是一个集博客功能于一体的社交平台,还允许用户书写日志、发布说说、上传图片、听音乐、写心情等多种方式来展现自己。
二、架构升级背景
随着时间的推移,QQ空间的代码逐渐变得陈旧,运行环境复杂,维护成本高,整体架构亟需升级,由于不规范的多团队协同开发,导致代码逐渐劣化,存在巨大的风险,QQ空间团队选择在18岁生日前夕进行了一次大规模的架构升级,以解决这些问题。
三、重构过程与挑战
1、重构项目的背景:QQ空间作为一个平台型的入口,承担了为很多兄弟业务引流的责任,由于多年累积的功能迭代和频繁的交接,空间的业务变得非常复杂,业务的复杂带来了架构的复杂,架构的复杂意味着维护成本的升高,多年来空间的业务交接频繁,多个团队接手,交到我们团队手上时,空间的代码已经一言难尽。
2、为什么要重构:QQ空间是一个祖上很阔的业务,代码量非常庞大,单统计结合版的代码就超过了150万行,同时代码的运行环境也极为复杂,涉及5个进程和2个插件,随着频繁的交接和多团队的协同开发,空间的代码逐渐劣化,各项代码质量的指标几乎都在手Q里垫底,空间的代码成了著名的原始森林——进得去出不来,代码的劣化导致历史bug难以收敛,即使一行代码不改,每个版本也会新增历史bug30+,面对如此庞大的历史债务,空间已经到了寸步难行,不破不立的地步,重构势在必行。
3、架构的劣化:跳出棋局,站在今天的角度回头看,可以发现空间的代码是个典型案例,很好地展示了一个干净的架构是如何逐步劣化的,扩展性低,异化代码无处安放;代码未隔离且缺乏编程范式;维护成本暴增,恶性循环;Feeds流的崩坏。
4、渐进式重构:高速公路换轮胎,小步快跑是最合适的方式,平稳落地的关键是渐进式重构,避免步子迈得太大导致工作量扩散,要做到渐进式重构,核心是保证两点:一个复杂的大问题能被分解为许多个小问题,可针对小问题重构和回滚;系统随时都是可用状态。
5、架构的生命力:痛定思痛,在进行空间重构前的首件事情就是总结经验,避免重蹈覆辙,如何保证这次重构平稳落地并且避免后续每三年一重构?总结了四点:渐进式重构;提高扩展性和复用性;复杂度长期可控;做好防劣化。
6、实现重构:基于以下几点来进行改造:先拆解,后治理;架构融合;提效前置,简化运行环境。
7、保证架构的扩展性与复用性:重新设计了空间的架构层级,业务层打薄,专注中间层。
8、降低复杂度并长期可控:通过更细的分层和严格的隔离来减少代码污染,确保新组件的易用性和扩展性。
9、相关问题与解答:两个与本问题相关的问题可能是:“QQ空间为什么选择在18岁生日前夕进行重构?”和“QQ空间重构过程中遇到了哪些主要挑战?”,对于第一个问题,答案是为了解决多年累积的历史债务和技术债务,提升系统的可维护性和可扩展性,对于第二个问题,答案包括了代码量的庞大、运行环境的复杂性、代码劣化导致的bug难以收敛以及需要保持系统的高可用性等挑战。
QQ空间业务(Qzone)作为腾讯公司的一款重要产品,其重构升级工作不仅解决了现有的问题,还为未来的发展奠定了坚实的基础。