Soft_Job 板


LINE

剛好今天朋友聊到老系統怎麼翻新, 大家手上的系統有一天都會變老系統, 如果維護的不夠,可能就會變成被討厭的系統。 做人可以有被討厭的勇氣,系統被討厭就會被換新。 很多人說老系統換新很難,但我覺得還是有一些方法論的。 幾個我自己會處理的做法: 1. 找出最小故障單位 被稱之為系統的東西通常是多元件的,每個元件有各自的職責, 所以通常不可能是一次全部都有問題。 一般來說,一個老系統首先需要的是體檢,把常失火的地方找出來。 可能是一或多個。 2. 開始切出問題的邊界,凡是系統一定是有 input 跟 output 。 再來,仔細讀懂這一段的程式碼或行為,如果沒有程式碼, 那就記錄這一段足夠的input 跟 output 確認邏輯。 3. 建立測試環境 4. 拉出隔離層(中間疊 proxy 或改成透過網路存取等) 5. 局部替換邏輯(由 proxy 導部分流量檢查有無異常)。 6. 上線 7. 如果出問題,必須可還原回修改前的模式 ======= 其實會難,通常是沒有切對結構, 或是沒找到 core issue 。 另外多數情況下未必是整個重寫,通常是局部的調整可以解決問題。 有一種情況是需要向舊相容, 這種時候介面會同時支援舊的,直到確定不再呼叫。 很多人會認為寫新的就不用管舊的介面, 結果上線一測東漏西漏死的亂七八糟。 總之,改老系統時, 保守的多做事多買多層保險才是先進。 改老系統的心法叫做移花接木, 強調的是模仿,與原本的功能行為越像越容易嫁接。 很多人總覺得重做功能就要東加西加, 功能連對照組都沒有,當然就會越做越難。 如果是為了加新功能,所以要重寫, 這其實不叫重寫,這叫槓上開花。 重寫是跟系統槓上,加新功能是讓腦袋開花。 一般調整系統都會需要明確目的,也能結構化確認問題, 往往是非常多細碎單元的組合,而不是一次萬里長征。 拍片也講求分段拍攝再後製剪接到位, 但重寫系統想要長鏡頭一鏡到底,這是高難度技巧。 總之系統重整,單純就是技能問題跟心態問題。 撇開耍屌、自以為是,認真的面對既有的程式跟需求。 尊重團隊已經做到的事情, 想著怎麼用新的方法完成,這些才是真正的目標。 多數的失敗,肇因於不尊重既有的邏輯, 貿然躁進調整,自然出事。 最可怕的是單行道的改版, 無法還原,一旦出事就大地震。 爬山要確保,寫程式也得有備案。 總之,尊敬既有的程式碼,與之共存, 並比既有的程式碼更理解既有的程式碼的目的。 這樣要重寫程式,很難失敗。 而且減少失敗次數,就是加速成功。 ----- Sent from JPTT on my Google Pixel 3 XL. -- 網頁上拉近距離的幫手 實現 GMail豐富應用的功臣 數也數不清的友善使用者體驗 這就是javascript 歡迎同好到 AJAX 板一同討論。 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.46.76 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1601043823.A.4E9.html
1F:→ superpandal: 我不看做法 我看的是要我做到底合不合理 09/25 23:09
2F:→ superpandal: 基本上找人進去不給高薪 不熟業務又要叫人短時間做出 09/25 23:10
3F:→ superpandal: 來本身就不合理 09/25 23:10
4F:→ superpandal: 合理的化技術層面好解決 09/25 23:11
5F:→ superpandal: 合理的話 09/25 23:11
6F:推 x246libra: 給高薪,短時間,不熟業務,可以做出來嗎?不確定樓上 09/26 02:51
7F:→ x246libra: 是薪水還是時間來判定是否合理 09/26 02:51
8F:推 ldkrsi: 老系統更新最難的不是上面覺得還能用就不要改嗎 09/26 05:29
9F:→ ldkrsi: 還有就是改到一半人手被源源不絕的急件借走 09/26 05:30
10F:→ ldkrsi: 然後就變成一個更難維護的樣子放在那邊 09/26 05:31
你這三點講的基本上跟是不是老系統翻修無關,而是通用的開發負面因素。 ※ 編輯: TonyQ (61.231.75.160 臺灣), 09/26/2020 08:45:19
11F:→ shooter555: 最可怕的是各元件之間互相依賴太深 牽一髮動全身 改一 09/26 08:59
12F:→ shooter555: 個全部死 09/26 09:00
13F:→ shooter555: 然後就要排定一堆時間 來先把依賴的問題解決 再來改進 09/26 09:08
14F:→ shooter555: 其中一個元件 然後上層老闆就會失去耐心 09/26 09:09
這種情況應該避免動後面的資料結構,要試著在這前提底下進行。 只要新舊結構跟行為一致,就不用擔心需要大規模全換。 通常是有同時修改行為的野心才會出事。 ※ 編輯: TonyQ (61.231.75.160 臺灣), 09/26/2020 09:48:47
15F:推 WaterLengend: 可以請問對於這種結構性的問題,平常除了專案實戰 09/26 10:00
16F:→ WaterLengend: 或開源專案能夠接觸之外,有其他的練習方法嗎? 09/26 10:00
開源專案接觸不到這種東西, 因為如果開源專案已經足夠多人用, 通常已經有自己的可靠性處理的策略, 你頂多是見習. 平常接些爛尾案對這些事情有幫助, 但抱著練功的心情就好. 不用刻意去接或以此為業~~
17F:推 nini200: 謝謝分享 09/26 11:10
※ 編輯: TonyQ (210.61.209.201 臺灣), 09/26/2020 12:44:37
18F:推 WaterLengend: 瞭解,感謝大大。不過根據您的經驗分享跟之前的經 09/26 12:54
19F:→ WaterLengend: 驗比較後,感覺起來都是將問題切分明確、最小化問題 09/26 12:54
20F:→ WaterLengend: 、以及挑選風險最低的方法實行將問題解決,而不是 09/26 12:54
21F:→ WaterLengend: 動不動就要炸掉重來,把時間跟資源花在刀口上 09/26 12:54
更明確點說, 我一貫的策略是判斷當下時間跟目標, 在風險能承擔的上線, 貼著風險承擔的邊緣走, 我做事情出包的機率不低, 但我都有把握出包的時候被收在安全範圍且迅速被解決. 這未必是風險最低的, 當然在論述時我會講得比較保守是因為冒險本來就需要判斷. 在正常狀況之下因為我對系統可承擔的風險比一般人高, 一方面多數情況下我對系統的熟悉跟經驗比別人多, 另一個角度是我比較敢動結構, 跟比較能清算動結構對應的風險. 所以在多數情況下, 我的改變相對於環境仍然是屬於激進跟大膽的, 但這個激進跟大膽的背後還是風險承擔跟計算. 主要的問題還是所有地方都一樣, 要能上得了線才是生存, 所以目標應該放在最安全的著陸, 而不是最大膽的登月計畫. ※ 編輯: TonyQ (210.61.209.201 臺灣), 09/26/2020 13:11:25
22F:→ superpandal: 不給高薪只是其中一個原因 09/26 13:30
23F:→ superpandal: 重申一次 在台灣好工作真的不多 09/26 13:32
24F:→ superpandal: 年薪百萬 沒過到一年自然沒百萬 多方考量意義在這 09/26 14:15
25F:→ benqm300: 對阿要你翻新,但是原本的工作還是一樣要照進度完成, 09/26 18:34
26F:→ benqm300: 然後薪水不變,歡迎來到寶島台灣。 09/26 18:34
這不就是一種工作嗎?
27F:推 neo5277: 通常是沒有邊界,因為以前沒有切得很乾淨要換一個小東西 09/26 18:35
28F:→ neo5277: 就要整個全部拆了 09/26 18:35
那就要先對原本的系統進行骨幹分切作業。 ※ 編輯: TonyQ (223.137.36.198 臺灣), 09/26/2020 19:22:42 ※ 編輯: TonyQ (223.137.36.198 臺灣), 09/26/2020 19:29:34
29F:推 michael0728n: 可以很快rollback就沒啥大問題,最慘就浪費時間而已 09/26 23:42
30F:→ viper9709: 推分享~以為這是基本+1 09/27 00:47







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP