架构重构实践

局部架构重构

1. 架构重构的驱动力

  • 坏味道驱动
  • 规划驱动
  • 架构组织与架构过程中的重构

2. 坏味道如何判断

以下情况,可能是架构的问题引起的

  • 增加人员但开发效率没有提升

随着项目的扩展需要增加人员,但整体的开发效率反而降低了

  • 系统可用性

不稳定,可靠性降低

  • 系统扩展性

不易于扩展支持新业务接入

3. 坏味道有哪些

  • 组件臃肿

一个组件里包含太多功能:拆分

  • 组建贫血

一个组建的功能太单一,比如只是简单转发器:砍掉

  • 组建缺失

找出公共的功能点,抽象为组建

  • 组建冗余

相同功能的组建应该抽象、整合为一个组建

  • 组建抽象不足

一直随着业务新增或变化频繁变更

  • 组建反向依赖

底层组建依赖高层组建

  • 循环依赖
  • 网状依赖
    -长链依赖
  • 强依赖

要完成一个事情一连串的组建都需要随之修改

  • 资源瓶颈

一个组建成功全部依赖业务的瓶颈,如DB、cache、身份校验组建

  • 单一故障点

一个组建失效后,全部依赖的业务都出现故障

4. 客观评价架构重构方案

架构评价标准

以10分制来划分,制定可量化的评判标准
根据业务的重要性要求,选出主要目标,确定权重
制定方案,依据选择的标准去评分,分值不能低于下限

  • 一个组建需要提供很多业务依赖,有两种方案

工程依赖,逻辑抽象并实现打包为jar,其他业务引入依赖:可伸缩性不足
搭建公共服务,给全部业务调用及访问和处理资源的逻辑:原业务的迁移成本高(需要大全部依赖的业务都改造)、增加故障点

5. 控制架构重构风险

重构就是做高速公路上换轮胎

重构前

原则:消除风险、获得支持

  • 关键技术准备

做好技术预研
做好物理资源和运维能力的支持度

  • 架构概念验证原型POP

用于验证架构设计是否满足业务需求

  • 确定重构项目的目标与范围

一定要做好预判,根据待重构业务紧迫性、时间要求、关键技术、人力、新业务支持等现状,设定可行的目标与范围

  • 明确业务影响

重构过程中,因为投入人力和兼容性原因,新业务研发肯定需要停下来一段时间,不停下来怎么换轮胎,需要预判停下来多长时间,接下来这段时间有哪些紧急的业务要去做,有哪些关键商务合作在进行中,都要去关心和提前沟通好

  • 晒项目

把业务损失风险向上汇报,要有人承担,需要团队内、外都知晓,必须有领导知道并支持

  • 组建项目团队

需要各种角色搭配,这样有利于培养新人

  • 创造业务需求真空期

详细制定重构计划,需要人力和时间,告知业务方,这段时间不接收新的业务,并承诺什么时间点会重构好

重构中

原则:短、平、快

  • 前置重构

把一些小的重构项目先做掉,竟可能的消除项目重构的风险

  • 严格控制项目的扩展

如果有非常必须支持的需求,必须在老系统上改造,而不是重构过程不成熟的系统上实现,重构后把新业务再合入新系统

  • 项目切割

项目尽可能的切分,组成一些列迭代,迭代的上线

重构发布

原则:稳、平滑

  • 非停机发布
  • 可快速回滚
  • 新旧系统并行运行

平滑切换,流量逐步放开,并做好监控和验证,有技术、性能、用户体验的风险

  • 监控方案
  • 所有方案必须经过测试
  • 检查项目目标是否达到
  • 复盘

是否达到目标,有哪些不足,有哪些值得我们吸取

二、 全局架构重构

如何让架构重构交付最大价值

1. 理解全局架构

  • 经典架构模式、视图

架构= 组建 + 关系 + 原则/约束
RUP的4+1视图:逻辑、进程、物理、开发、用例

  • 更宏观的架构视图

多视角:业务、数据、应用、技术
描述多个视角之间的关系,数据如何支持技术,技术如何支持应用,应用如何支持业务
自顶向下,分而治之:用一张大图全局描述,必须分层,比如:

全局架构模型

2. 建立全局架构基线

  • 从业务入手:建立L0层基线全局架构,必须包含完整的业务、应用、技术、数据、各种协议
  • 选择最关键的1级架构域,简历完整的L0-L3业务、应用、数据、技术架构视图
  • 建立L0-->L2完整业务、应用、数据、技术架构视图,构建完整产品、应用、数据集清单
  • 以产品为单元完成L3全面建设

3. 案例

  • 建立样板文档,挪列关键元素,统一用wiki管理
  • 把应用等各种依赖关系可视化
  • 团队紧密交流,每天分享梳理出来的业务和技术,相互了解及借鉴
识别全局架构关键问题
  • 容量
  • 稳定
  • 新业务支持
  • 相应速度
确定目标架构
设计架构演进路线的经验
  • 顺势而为

与业务发展路线合拍

  • 分而治之

边界优先

-专注主线

按住关键业务、技术
辐射周边业务

  • 步步为营

逐步交付价值
不要停留在危险的中间状态

  • 安全试错

创造生产环境的架构实验室

三、更深层次的架构重构

架构组织:专职架构 + 业务架构融合


架构组织

资料

链接: https://pan.baidu.com/s/1nbVX1jzLvBa4iDwzlw4mmQ 提取码: 2egc

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,064评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,711评论 2 59
  • 忙了一个多月,一直没时间写文章。终于把项目重构完了,借此机会浅谈一下对Android架构的见解。笔者将会把重构分为...
    Robin_Lrange阅读 3,693评论 0 1
  • 前两天听了罗辑思维的《如何成为高手》,罗胖说学习的过程是把外界的知识缝接在自己的知识结构之上,深有同感的同时自己的...
    零珑心阅读 759评论 0 1
  • 经典美文 The evening of the concert Mom wore glittery earring...
    我的小窩阅读 442评论 0 0