黄俊彬 CAC敏捷教练 3月26日

前言

2008年9月22日,谷歌正式对外发布第一款Android手机。苹果公司最早于2007年1月9日的MacWorld大会上公布IOS系统。移动应用领域的发展已经超过10年。在App Annie 最新的移动市场报告中分享2020应用下载量已经达到2180亿次,同比增加7%。根据Statista的统计,2020年度Google Play的应用数量为3148932个。

在移动互联网的高速发展及竞争中,更快及更高质量的交付用户,显然尤为重要。但很多产品随着移动互联网的发展,已经迭代超过10年。在这个过程中人员流动、技术债务累计、技术生态更新,使得产生了大量的遗留系统。就像一辆低排量的破旧汽车,再大的马路,技术再好的驾驶员,达到车辆本身的系统瓶颈,速度就很难再提升起来。

遗留系统

在以往的项目中,遇到了大量的这种遗留系统。这些系统具有以下一些特点:

  • 大泥球架构,代码量上百万行,开发人员超过100+

  • 内部耦合高,代码修改维护牵一发动全身,质量低

  • 编译集成调试慢,没有任何自动化测试,开发效率低

  • 技术栈陈旧,祖传代码,无人敢动

在这样的背景下,个别少的团队选择重写,当然没有良好的过程管理及方法,好多重写完又成了新的遗留系统。也有的团队选择重构,但目前相关的方法及教程比较少。这里推荐一下《重构(第2版)》,书中有基本的重构手法。另外一本《修改代码的艺术》,书中有很多基于遗留代码开发的示例。但对于开发人员来说,缺少比较贴近移动应用项目实战的重构指导及系统方法。很多团队依旧没有解决遗留系统根本的原因,仅靠不断的堆人,恶性循环。

CloudDisk 演示示例

CloudDisk是一个类似于Google Drive的云存储应用。该应用主要拥有3大核心业务模块,文件、动态及个人中心。

该项目已经维护超过10年以上,有用开发人员100+。目前代码在一个大模块中,约30w行左右,编译时间10分钟以上。团队目前主要还面临几个问题。

  1. 开发效率低

编译时间长,经常出现代码合并冲突。遗留大量技术债务,团队疲于交付需求。

  1. 代码质量差

经常修改出新问题,版本提测问题多,没有任何自动化测试。

  1. 版本发布周期长

往往需要1个月以上,市场反馈响应慢。

我们希望通过一个更贴近实际工程项目的浓缩版遗留系统示例,持续解决团队在产品不断迭代中遇到的问题。从架构设计与分析、安全重构、基础生态设施、流水线、编译构建等方面,一步一步介绍如何进行持续演化。我们将通过文章及视频演示的方式进行分享,希望通过这个系列文章,大家可以更系统的掌握移动应用项目中实战的重构技巧及落地方法。

大纲

( 未完待续 )


参考文献:

1. App Annie 最新的移动市场报告 :https://www.appannie.com/cn/insights/market-data/mobile-2021-new-records-beckon/

2. Statista : https://www.statista.com/statistics/289418/number-of-available-apps-in-the-google-play-store-quarter/#:~:text=Google%20Play%3A%20number%20of%20available%20apps%20as%20of%20Q4%202020&text=This%20statistic%20gives%20information%20on,compared%20to%20the%20previous%20quarter.

3. 《重构(第2版)》: https://book.douban.com/subject/33400354/

4. 《修改代码的艺术》:https://book.douban.com/subject/2248759/

移动应用遗留系统重构(1)- 开篇相关推荐

  1. 银行祖传系统重构实例:创立12年,只支持Python 2,跑着500多个应用程序

    作者 | THEHFTGUY.万佳 提到遗留系统,你会想到什么? 还在使用 Java 5 的路过 JDK 1.6 的我不说啥了 很多坑 难维护 从零开始(重写) 盼着 IE 什么时候不再能使用 ... ...

  2. 系统重构的未来:重构工具 Coca 一周年

    一年前,在公司大佬的指点之下,我开始写系统级重构工具 Coca (https://github.com/phodal/coca) .哦,不,不对,是刚开始学习 Golang,因为我的第一次提交是从一个 ...

  3. 遗留系统的往日与今生——为何遗留系统如此麻烦 | 云上观

    编者按:遗留系统改造是程序员的宿命,据 IEEE 报道,自 2010 年以来,全世界的公司和政府在 IT 产品和服务上的支出估计为 35 万亿美元.其中,约四分之三用于运营和维护现有的 IT 系统.至 ...

  4. 刚写的代码,就变成了遗留系统?

    今天想跟大家聊聊遗留系统,首先,看一下这张图 这是一家银行的核心应用系统模块之间的交互图,我想没有一个人愿意工作在这样的系统上吧? 架构混乱,模块之间职责不明,一个需求就要需要修改四五个服务,这就是遗 ...

  5. 系统重构的原则代码重构的原则

    作者:[美]马丁•福勒(Martin Fowler) 译者:熊节, 林从羽 前一章所举的例子应该已经让你对重构有了一个良好的感觉.现在,我们应该回头看看重构的一些大原则. ##2.1 何谓重构 一线的 ...

  6. 遗留系统:IT攻城狮永远的痛

    我常常觉得我们非常幸运,我们现在所处的时代是一个令人振奋的时代,我们进入了软件工业时代.在这个时代里,我们进行软件开发已经不再是一个一个的小作坊,我们在进行着集团化的大规模开发.我们开发的软件不再是为 ...

  7. 遗留系统的技术栈迁移

    什么是遗留系统(Legacy System)?根据维基百科的定义,遗留系统是一种旧的方法.旧的技术.旧的计算机系统或应用程序[1].这一定义事实上并没有很好地揭露遗留系统的本质.我认为,遗留系统首先是 ...

  8. 如何接手别人的系统-遗留系统重建的道法术器势志(万字长文)

    by zhimaxingzhe from 如何接手别人的系统-遗留系统重建之道法术器势志 欢迎分享链接,尊重版权,未经作者授权,禁止转载,授权后转载请注明出处,若急用请联系. https://zhim ...

  9. 系统重构是个什么玩意儿

    如题,系统重构是一个什么玩意儿呢?大家可能有很多的不同看法: 1. 系统重构是那些系统架构师.技术大牛玩的高端玩意儿,跟咱普通屌丝不懂,跟咱没啥关系. 2. 系统重构就是改代码,大改特改那种,整个重来 ...

最新文章

  1. 基于深度学习的位姿估计方法
  2. Python 中的 if __name__ == __main__ 该如何理解
  3. linux sed命令替换目标字符串所在行整行为给定值
  4. 关于ensp配置出现 Error: Please renew the default configurations.
  5. java页面可配置化_web.xml页面配置
  6. 【iOS - 周总结】开发中遇到的小知识点(2018.12.10-2018.12.15)
  7. Win11系统无法安装GPT分区的解决方法
  8. 欧拉回路(HDU-1878)
  9. 蓝桥杯 ALGO-91 算法训练 Anagrams问题
  10. Django 分页器 缓存 信号 序列化
  11. 智慧水务项目建设方案
  12. Pycharm安装python包的四种常用方式
  13. 计算机论文 a会 c会,ccf b类论文 sci几区_焦文静_电影学者王田
  14. WhatsApp API介绍
  15. 微信小程序 微信授权登录 微信登录
  16. 联想服务器SR650升级网卡固件微码
  17. python实现离散型变量分组统计
  18. 现在学Python怎么样?还有发展前景吗?
  19. vacuum 的描述(vacuum age )
  20. 计算机论文摘要要介绍技术吗,★计算机前沿技术论文摘要范文计算机前沿技术论文摘要写(7页)-原创力文档...

热门文章

  1. java中package(包)的使用理解
  2. 国际数学日 | 有π的日子,来一场数学派对
  3. 关闭不需要服务 为Windows系统提速(转)
  4. TBR:AWS不是云计算领导者,Microsoft才是
  5. 敏捷思维:要么双赢,要么别干
  6. vue echarts绘制省份地图并添加自定义标注
  7. u盘显示请插磁盘f_教你自己解决U盘故障(磁盘不能打开并提示请插入磁盘)
  8. 阴霾“强势霸屏”长三角 天际上演“失踪的太阳”
  9. 钕铁硼NdFeB材料各类牌号磁特性大全
  10. WebServer应用示例:不到100行代码玩转Siri语音控制 | ESP32轻松学(Arduino版)