Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于老旧过时架构,边开飞机边换引擎,需要注意哪些?

对于老旧过时架构,边开飞机边换引擎,需要注意哪些?

提问于 2024-12-23 06:20:51
回答 13关注 0查看 364

在对一个老旧架构升级的过程中,同时要保证服务的连续性,有时还不得不应对产研同学的新需求上线,相当于边开飞机边换引擎中还新增负载;

在这个复杂的过程中,有哪些最佳实践和注意事项?

已邀请
等1人回答

回答 13

杜云杰

发布于 2024-12-24 12:58:48

确实是个比较困难的问题。个人建议是串行进行,一次只干一件事,这就要看重构升级的选择时机。找一个合适的时机进行重构升级,先暂停新需求,可监控、可灰度、可回滚,等完成升级后再接新需求。

不然在升级过程中接新需求,新旧两边都要兼容,而且也容易出错。

个人观点,欢迎讨论。

李智慧

发布于 2024-12-25 03:24:39

一边系统架构升级,一边系统需求迭代,在实践中,见过两种处理方式。

一种是:当前系统开发团队针对架构升级目标,将架构升级方案拆解成若干个子任务,架构师根据需求迭代计划,将子任务和需求计划结合起来跟随需求实现一起开发上线,随着每次需求开发上线,架构升级子任务逐渐完成,最后完成整体架构升级。具体可以参考我写的这篇文章《网约车系统重构:如何用 DDD 重构网约车系统设计?》。但是这种方案对架构设计要求比较高:架构师必须要对老系统非常熟悉,同时新架构升级目标也要非常明确,架构升级过程可以拆分,团队成员对架构升级重构方法掌握比较好,架构师的技术掌控能力和团队协作能力也比较强。同时,新老系统架构需要具有一定兼容性,不能变化太大,比如把一个Java开发的系统重构成Go开发的系统,这种升级方法就不是很适合。

另一种是:直接拉一个新团队,按照新的架构设计方案重新开发设计一个新的系统,这个新的系统实现了旧系统的功能,同时也参与迭代实现了新功能,这个时候,可以在新旧两个系统之前,加一个流量分单系统,将请求逐渐从老系统分到新系统。如下图

分单网关根据规则将外部请求按比例分配给新老系统
分单网关根据规则将外部请求按比例分配给新老系统

这个过程,新老系统同时运行,新系统出现任何问题,都可以将流量切回老系统。直到新系统完全稳定运行,将流量全部切到新系统,老系统关闭下线。这种方案具有较大的灵活性,新系统可以完全抛弃老系统的束缚,彻底为了新的组织目标进行设计。但是,这样的升级重构,不但是对系统的重构,也是对组织和人的重构。因为当老系统下线的时候,开发维护老系统的技术团队也将失去工作目标,团队需要拆解或者分配新的工作任务。

程序员法医

发布于 2025-01-01 12:31:05

这个问题,我刚刚看到另一个小伙伴也问了,已经回答过了,所以复制过来了,我觉得这个问题我们用一辆新旧车打比方最合适了,假如你有一辆旧车(老旧架构)。 如果边造轮子边优化呢,就像是你这辆车有些零件坏了或者不太好使,你就一个一个地去换更好的零件来让车能接着好好开。这样做的好处是车子(系统)一直能跑,不会一下子就瘫在那儿,业务不会受到太大的影响。而且你在换零件(优化)的过程中,还能慢慢了解这辆车(架构)到底是咋回事,不至于手忙脚乱。不过呢,这也有个麻烦的地方,就是你换来换去,可能最后发现这些新零件和旧零件拼在一起,还是有点小毛病,而且可能因为一直修修补补,有些地方还是挺乱的。 要是直接重构,就像是你不要这辆旧车了,重新造一辆新车。这样做如果成功了,那车(系统)就会非常棒,很符合现在的需求,而且也很整齐干净。但是风险也大啊,你在造车(重构)的时候,车肯定是开不了的(系统可能得停摆一段时间),这对业务影响就很大。而且造车的时候你要是有个小失误,说不定整辆车都报废了(重构失败)。 所以到底是边造轮子边优化还是直接重构,得看这辆车(老旧架构)现在有多破。要是还能开,业务也还能勉强维持,那可以先边造轮子边优化;要是这辆车已经破得不行,老是出大问题,业务都快进行不下去了,那可能就得咬咬牙直接重构了。

和开发者交流更多问题细节吧,去 写回答
相关文章
ArrayList边遍历边删除?
一个for循环遍历,如果item > 2就执行remove,看上去似乎没有问题的样子,也不会出现报错,但是不符合题目的要求
DH镔
2019/12/19
1.8K0
Phoenix边讲架构边调优
一 基础架构详解 1 概念 讲调优之前,需要大家深入了解phoenix的架构,这样才能更好的调优。 Apache Phoenix在Hadoop中实现OLTP和运营分析,实现低延迟应用是通过结合下面两个优势: 具有完整ACID事务功能的标准SQL和JDBC API的强大功能 通过利用HBase作为后台存储,为NoSQL世界提供了late-bound, schema-on-read灵活的功能。 Apache Phoenix与其他Hadoop产品完全集成,如Spark,Hive,Pig,Flume和Map
Spark学习技巧
2018/01/31
4.1K0
Phoenix边讲架构边调优
开着飞机换引擎,中国联通云原生架构全面升级
中国联通聚焦“大联接、大计算、大数据、大应用、大安全”五大主责主业,全面升级了新一代的云计算平台“联通云”,形成了“安全可靠、云网一体、专属定制、经济实用、多云协同”的特色优势。为进一步提升联通云原生平台上所承载业务系统的高效性、连续性,联通数科云计算团队,历时5个月,圆满完成4大数据中心、9大可用区云原生网络架构演进工作,实现联通云原生平台技术架构的全面升级!
灵雀云
2022/11/29
1.8K0
开着飞机换引擎,中国联通云原生架构全面升级
边学边用Gradle:依赖管理
粗略的讲, 依赖管理由两部分组成:项目的 dependencies(依赖项) 和 publications(发布项)。
WindCoder
2018/09/19
2.1K0
工艺边
还记得那年毕业,拜师与名师(硬件总监),也是本人熬了一年半载,最后得以有机会做项目。还记得有一次师傅有事去了工厂,恰好碰到我的项目准备试产,然后师傅打电话问我,说你那板子没有留板边吗?
徐师兄
2022/08/29
3440
聊聊六边形架构
指导我们写出漂亮代码有一种方式是学习设计模式,自从 Gof 四人组的《设计模式》出版后,各类设计模式的书层出不穷。熟读这类书籍,对面试肯定是有帮助的,但代码能力是否有大的长进就不一定了,如果没能理解背后的思想,去生搬硬套,只会起反作用。
oec2003
2023/10/25
1.7K0
聊聊六边形架构
解读六边形架构
追溯微服务架构的渊源,一般会涉及到六边形架构。追溯六边形架构的起源,要看始作俑者Alistair Cockburn的这篇文章 http://alistair.cockburn.us/Hexagonal+architecture, 读原文,译重点,记感受, 如下:
半吊子全栈工匠
2018/08/22
2.2K0
解读六边形架构
UML2.51边译边学-组件
本文是UML规范2.5.1中组件相关部分中文翻译。原文可从https://www.omg.org/spec/UML/2.5.1下载。
面向对象思考
2021/10/14
5920
UML2.51边译边学-组件
边双联通分量与割边
前言 在图论中,除了在有向图中的强连通分量,在无向图中还有一类双联通分量 双联通分量一般是指点双连通分量 当然,还有一种叫做边双连通分量 边双联通分量 对于一个连通图,如果任意两点至少存在两条“边不重复”的路径,则说图是点双连通的,边双连通的极大子图称为边双连通分量。 边双联通分量的计算方法比较简单 类比tarjan求强联通分量的算法,唯一的区别在于不能沿着dfs过来的那条边走回去。 也就是说在tarjan的时候我们需要记录一下父亲节点 其余的就和普通的tarjan一样啦 例题 割边(桥) 割边:对于无向图
attack
2018/04/10
1.1K0
兴趣类-python边学边练(1)
最近在学习的过程中出现了懒惰情况,仔细总结发现看教程视频太枯燥,在没有其他编程语言基础的情况下很难懂,虽然python简单,但是那也是对那些c java php熟悉的人来讲,所以不要再说python简单了,就像我说设计简单一样,因为我做这个工作的。
adventureisoutthere
2020/03/05
4580
兴趣类-python边学边练(1)
边开发边测试--故事从闹钟讲起
你开发过alarm相关的应用吗? 你测试过alarm相关的应用吗? 如果答案是肯定的,建议看官停下来拍拍砖。 手机管家新年运营功能有一个招牌:红包闹钟。 功能发布后,最常见的质疑当属:闹钟准吗? 为了回答这个问题,才有了这篇文章,也希望此文对那些闹钟的开发和测试者,有点用。 一. Android Alarm的技术背景 (一)基础API 1.关于闹钟的4个最常用api以及精准性: (1)set(int type,long startTime,PendingIntent pi); Beginning in A
腾讯移动品质中心TMQ
2018/02/02
1.8K0
边开发边测试--故事从闹钟讲起
UML2.51边译边学-接口
本文是UML规范2.5.1中接口相关部分中文翻译。原文可从https://www.omg.org/spec/UML/2.5.1下载。
面向对象思考
2021/10/14
5300
UML2.51边译边学-接口
Android FFmpeg 流媒体边播放边录制功能
前面 FFmpeg 系列的文章中,已经实现了音视频的播放、录制已经添加滤镜等功能,本文将用 FFmpeg 实现流媒体的边播放边录制功能。
字节流动
2021/05/08
1.9K0
Android FFmpeg 流媒体边播放边录制功能
C++核心准则边译边学-摘要
IMG_20180807_113155.jpg Abstract(摘要) This document is a set of guidelines for using C++ well. The aim of this document is to help people to use modern C++ effectively. By "modern C++" we mean effective use of the ISO C++ standard (currently C++17, but alm
面向对象思考
2020/03/24
5240
C++核心准则边译边学-摘要
C++核心准则边译边学-序言
C++核心准则(C++ Core Guidelines)是由C++语言两位大神级的人物发表的有关C++语言编程的指导性文件,目前还处于不断修改和完善的过程中。从今天开始作者尝试翻译和学习该文档。
面向对象思考
2020/03/24
1.6K0
C++核心准则边译边学-序言
前端react面试题(边面边更)
(1)无状态函数式组件 它是为了创建纯展示组件,这种组件只负责根据传入的props来展示,不涉及到state状态的操作
beifeng1996
2022/10/26
1.4K0
边学边用Gradle:Gradle的脚本结构
配置此项目的构建脚本类路径。可声明用于编译和执行构建脚本的类路径。该类路径也用于加载构建脚本使用的插件。
WindCoder
2018/09/19
1.8K0
SuperEdge 高可用云边隧道有哪些特点?
作者李腾飞,腾讯容器技术研发工程师,腾讯云TKE后台研发,SuperEdge核心开发成员。
CNCF
2021/08/26
1K0
SuperEdge 高可用云边隧道有哪些特点?
SuperEdge 高可用云边隧道有哪些特点?
作者李腾飞,腾讯容器技术研发工程师,腾讯云TKE后台研发,SuperEdge核心开发成员。 背景 在边缘集群中,边缘端和云端为单向网络,云端无法主动连接边缘端,常见的解决方案是边缘端主动和云端(tunnel server)建立长连接,云端通过长连接将请求转发到边缘端。在云端隧道 server 实例扩容后需要考虑新增的实例对已有的边缘端长连接转发的影响。出于系统稳定性的考虑,能通过云边隧道采集到边缘端的监控信息。 社区方案ANP[1] 隧道云端 Server 自动扩缩容 ANP 主要用于代理转发 apise
腾讯云原生
2021/08/05
9960
UML2.51边译边学-部署图
本文是UML规范2.5.1中部署图相关部分中文翻译。原文可从https://www.omg.org/spec/UML/2.5.1下载。
面向对象思考
2021/10/14
5790
UML2.51边译边学-部署图

相似问题

老旧架构是边造轮子边优化,还是直接重构?

3158

架构师需要具备哪些技能?

123

产品架构师转型到企业架构师需要哪些技能?

126

腾讯云点播怎么实现边加载边播放视频呢?

0449

架构师需要具备哪些方面的知识?

018
相关问答用户
某公司 | 程序员擅长1个领域
腾讯云TDP | 先锋会员擅长2个领域
新浪微博 | 高级总监擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档