[心得] 线上系统再更新

楼主: TonyQ (自立而后立人。)   2020-09-25 22:23:39
刚好今天朋友聊到老系统怎么翻新,
大家手上的系统有一天都会变老系统,
如果维护的不够,可能就会变成被讨厌的系统。
做人可以有被讨厌的勇气,系统被讨厌就会被换新。
很多人说老系统换新很难,但我觉得还是有一些方法论的。
几个我自己会处理的做法:
1. 找出最小故障单位
被称之为系统的东西通常是多元件的,每个元件有各自的职责,
所以通常不可能是一次全部都有问题。
一般来说,一个老系统首先需要的是体检,把常失火的地方找出来。
可能是一或多个。
2. 开始切出问题的边界,凡是系统一定是有 input 跟 output 。
再来,仔细读懂这一段的程式码或行为,如果没有程式码,
那就记录这一段足够的input 跟 output 确认逻辑。
3. 建立测试环境
4. 拉出隔离层(中间叠 proxy 或改成透过网络存取等)
5. 局部替换逻辑(由 proxy 导部分流量检查有无异常)。
6. 上线
7. 如果出问题,必须可还原回修改前的模式
=======
其实会难,通常是没有切对结构,
或是没找到 core issue 。
另外多数情况下未必是整个重写,通常是局部的调整可以解决问题。
有一种情况是需要向旧相容,
这种时候接口会同时支援旧的,直到确定不再呼叫。
很多人会认为写新的就不用管旧的接口,
结果上线一测东漏西漏死的乱七八糟。
总之,改老系统时,
保守的多做事多买多层保险才是先进。
改老系统的心法叫做移花接木,
强调的是模仿,与原本的功能行为越像越容易嫁接。
很多人总觉得重做功能就要东加西加,
功能连对照组都没有,当然就会越做越难。
如果是为了加新功能,所以要重写,
这其实不叫重写,这叫杠上开花。
重写是跟系统杠上,加新功能是让脑袋开花。
一般调整系统都会需要明确目的,也能结构化确认问题,
往往是非常多细碎单元的组合,而不是一次万里长征。
拍片也讲求分段拍摄再后制剪接到位,
但重写系统想要长镜头一镜到底,这是高难度技巧。
总之系统重整,单纯就是技能问题跟心态问题。
撇开耍屌、自以为是,认真的面对既有的程式跟需求。
尊重团队已经做到的事情,
想着怎么用新的方法完成,这些才是真正的目标。
多数的失败,肇因于不尊重既有的逻辑,
贸然躁进调整,自然出事。
最可怕的是单行道的改版,
无法还原,一旦出事就大地震。
爬山要确保,写程式也得有备案。
总之,尊敬既有的程式码,与之共存,
并比既有的程式码更理解既有的程式码的目的。
这样要重写程式,很难失败。
而且减少失败次数,就是加速成功。
作者: superpandal   2020-09-25 23:09:00
我不看做法 我看的是要我做到底合不合理基本上找人进去不给高薪 不熟业务又要叫人短时间做出来本身就不合理合理的化技术层面好解决合理的话
作者: x246libra (楓)   2020-09-26 02:51:00
给高薪,短时间,不熟业务,可以做出来吗?不确定楼上是薪水还是时间来判定是否合理
作者: ldkrsi (衰神)   2020-09-26 05:29:00
老系统更新最难的不是上面觉得还能用就不要改吗还有就是改到一半人手被源源不绝的急件借走然后就变成一个更难维护的样子放在那边
作者: shooter555 (shooter)   2020-09-26 08:59:00
最可怕的是各元件之间互相依赖太深 牵一发动全身 改一个全部死然后就要排定一堆时间 来先把依赖的问题解决 再来改进其中一个元件 然后上层老板就会失去耐心
作者: WaterLengend (Leeeeeeeeooooooo)   2020-09-26 10:00:00
可以请问对于这种结构性的问题,平常除了专案实战或开源专案能够接触之外,有其他的练习方法吗?
作者: nini200 (200妮妮)   2020-09-26 11:10:00
谢谢分享
作者: WaterLengend (Leeeeeeeeooooooo)   2020-09-26 12:54:00
了解,感谢大大。不过根据您的经验分享跟之前的经验比较后,感觉起来都是将问题切分明确、最小化问题、以及挑选风险最低的方法实行将问题解决,而不是动不动就要炸掉重来,把时间跟资源花在刀口上
作者: superpandal   2020-09-26 13:30:00
不给高薪只是其中一个原因重申一次 在台湾好工作真的不多年薪百万 没过到一年自然没百万 多方考量意义在这
作者: benqm300 (人生苦短)   2020-09-26 18:34:00
对阿要你翻新,但是原本的工作还是一样要照进度完成,然后薪水不变,欢迎来到宝岛台湾。
作者: neo5277 (I am an agent of chaos)   2020-09-26 18:35:00
通常是没有边界,因为以前没有切得很干净要换一个小东西就要整个全部拆了
作者: michael0728n (蒜˙远古)   2020-09-26 23:42:00
可以很快rollback就没啥大问题,最惨就浪费时间而已
作者: viper9709 (阿达)   2020-09-27 00:47:00
推分享~以为这是基本+1

Links booklink

Contact Us: admin [ a t ] ucptt.com