精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

改進舊代碼庫的推薦路線:走向可擴展可維護系統的11條經驗

運維 系統運維
在開始做任何事情之前,您需要備份所有可能相關的內容,這樣可以確保不管發生什么情況不會丟失數據。我們很難記得每天修改了哪些東西,特別是配置數據容易受到這種問題的影響,配置通常不會進行版本控制,如果能夠進行定期備份,那則可以規避很多麻煩。把所有東西復制到一個非常安全的地方,除非它是只讀模式,否則永遠不會觸摸到。

每個程序員,項目經理或團隊負責人的生命周期中至少發生一次,你接手一坨超過百萬行代碼的系統,原來的程序員很久以前就離職,現在也許正在某個陽光明媚的地方度假,文檔(如果有的話)最有可能的情況就是與現有的系統不同步。

[[193271]]

而你的工作則是帶領團隊脫離這個混亂。

在經歷逃離的本能回應之后,您開始對項目進行了了解,公司高層領導是不能容忍項目失敗的情況。然而,通過你手頭現有的東西,失敗是大概率發生的事件。那么該如何應對?

我有幸(或不幸)已經經歷過若干次類似的經歷,我和一小部分朋友發現,如果能夠把這些垃圾代碼變成健康的可維護的項目,實際上是非常值得一試的事情。以下是我們總結改進舊版代碼庫的一些經驗(或者叫軍規)。

1、數據備份

在開始做任何事情之前,您需要備份所有可能相關的內容,這樣可以確保不管發生什么情況不會丟失數據。我們很難記得每天修改了哪些東西,特別是配置數據容易受到這種問題的影響,配置通常不會進行版本控制,如果能夠進行定期備份,那則可以規避很多麻煩。把所有東西復制到一個非常安全的地方,除非它是只讀模式,否則永遠不會觸摸到。

2、重要的先決條件,構建一個真實的仿真環境

我之前的文章中錯過了這一步,假設這個環境已經存在了,但許多 HN 網友指出了這一點,他們是絕對正確的。

***步是確保你知道現在正在生產環境運行的是什么,這意味著您需要能夠構建一個軟件版本 —— 和您的真實環境保持一致 —— 相同的軟件環境與二進制版本。

如果你找不到一個方法來實現這一點,那么如果你提交代碼到生產環境,就可能會遇到一些令人不快的意外。確保新的代碼在合適環境盡可能地被測試,然后你才會有足夠信心將其運行到生產環境。上線時做好準備可以隨時切換回老的代碼,并確保通過日志記錄了相關重要內容,以便在后續排查問題能派上用場。

3、凍結 DB 修改

盡可能凍結數據庫修改,直到完成***階段的改進,直到團隊對代碼庫已經有了徹底的了解,遺留代碼已經棄之身后時,才考慮修改數據庫結構。在此之前任何的數據庫修改可能會導致一些棘手的問題,你失去了并行運行舊系統和新的代碼庫的能力。保持 DB 完全不變,您可以比較新的業務邏輯代碼與舊的業務邏輯代碼,如果所有這些效果都與預期一樣,則應該完全沒有區別。

4、編寫測試

在進行任何修改之前,編寫盡可能多的端到端以及集成測試,確保這些測試能夠產生正確的輸出,并覆蓋所有潛在的情況。

這些測試將具有兩個重要功能:幫助在早期階段清除任何誤解,另外一方面,一旦您開始編寫新代碼來替換舊代碼,這些測試將可以更好保護您的系統。

自動化您的所有測試,如果您已經有 CI 的經驗則盡快使用它,并確保您的測試運行足夠快,以便在每次提交后運行全套測試。

5、Instrumentation 和日志

如果舊平臺仍然可以增加 Instrumentation,在一個全新的數據庫表中執行此操作,為您可以考慮的每個事件添加一個簡單的計數器,并添加一個單個函數來實現此功能,以根據事件的名稱來增加這些計數器。

這樣,您可以使用一些額外的代碼行實現帶有時間戳的事件日志,您將了解到有多少事件導致另一種事件。一個例子:用戶打開應用程序,用戶關閉應用程序。如果兩個事件應該導致一些后端請求,那么這兩個計數器應該在長期上保持不變,差異是當前打開的應用程序的數量。如果您看到更多的應用程序打開,而不是應用程序關閉,你知道必須有另一種應用程序結束的方式(例如崩潰)。

這個簡單的技巧可以將每個后端應用程序變成一個類似的簿記(bookkeeping)系統,就像一個真正的簿記系統那樣,所有的數字必須匹配,確保它們在所有用到的地方沒有問題。

隨著時間的推移,這個系統將監控健康方面變得非常寶貴,并且將成為源代碼控制系統變更日志的一個很好的伴侶,您可以在其中確定每個錯誤引入的時間點,以及對各種情況產生影響的計數。

我通常保留這些計數器的分辨率為 5 分鐘(因此每小時記錄 12 次),但如果你的系統有更少或更多事件,則可能需要修改這個時間間隔。所有計數器使用同一個數據庫表,因此每個計數器只是該表中的一列。

6、每次只修改一個點

在添加新功能或修復錯誤的同時,不要陷入同時改進代碼以及修改其運行的平臺的陷阱。這會導致很多頭大的問題。

7、平臺更改

如果您決定將應用程序遷移到另一個平臺,那么請先執行此操作,但要保持一切功能完全一樣。你可以添加更多的文檔或測試,但不能超過這一點,所有業務邏輯和相互依賴關系應該保持原樣。

8、架構變化

接下來要解決的是改變應用程序的架構(如果需要)。在這個時候,您可以隨意更改代碼的較高級別結構,通常通過減少模塊之間的水平鏈接數量,從而減少與最終用戶進行任何交互時代碼活動的范圍。如果舊代碼本質上是一體的,現在將是一個很好的時機使其更加模塊化,將大型功能分解成較小的功能,但是保留變量和數據結構的名稱。

HN 網友 mannykannot 指出,架構修改并不總是可行,如果特別不幸運,那么可能需要非常深入理解代碼才能進行任何架構更改。我同意這一點,因此我做個小的補充,如果您同時進行高級別更改和低級別更改,至少需要將其限制在一個文件,或最壞情況下限制在一個子系統,以便盡可能限制更改的范圍。否則你可能很難調試剛才所做的更改。

9、低級重構

到目前為止,您應該對每個模塊的功能有很好的了解,并為實際工作做好準備:重構代碼以提高可維護性,并使代碼具備擴展新的功能的能力。這很可能是項目中耗時最多的一部分,文檔需要隨之進行,在完整編寫文檔介紹并徹底了解一個模塊之前,不要隨意更改模塊。

這個階段也可以修改變量和函數命名、修改數據結構,以提高代碼清晰度和一致性。記得添加相關測試代碼(根據需要,可進行單元測試)。

10、修復 bug

現在你準備好進行一些最終用戶可見的變化,***件事情將是修復多年來積累在隊列中的 bug。像往常一樣,首先確認 bug 仍然存在,然后編寫一個測試并修復 bug,您的持續集成和端到端的測試應幫您避免由于缺乏理解或某些錯誤而導致的任何錯誤及外圍問題。

11、數據庫升級

如果上述工作都已經完成,你可以再次擁有可靠且可維護的代碼庫,您可以選擇更改數據庫 schema 甚至替換數據庫。已經完成的上述工作都將有助于您以無負擔的方式進行變革,而無需擔心任何意外,您可以使用新的代碼和所有的測試來測試新的數據庫,以確保您的遷移沒有任何問題。

在路線圖上前行

恭喜,到這里您已經走出了叢林,現在已經準備好可以實施任何新功能了。

不要嘗試徹底重寫

徹底重寫是一種幾乎保證會失敗的項目。一方面,你是在未知的領域開始,你甚至會不知道要重構什么,另一方面,你也將所有的問題推到***一天,就在你用新系統啟用之前的那一天。很悲劇的是,那也是你失敗的時刻。業務邏輯的假設最終會證實存在問題,那時您將突然了解到為什么舊系統會用某種奇怪的方式來工作,最終也會意識到能將舊系統放在一起工作的人也不都是白癡。 如果你真的想要將公司(以及你自己的信譽)帶向一個泥潭,就來一個徹底大重寫吧,但如果你足夠聰明,徹底重寫系統通常不會成為桌上的一個討論選項。

替代方案:迭代式改進

要解開這些線團最快方法就是從你已經理解的代碼入手(它可能是一個外圍設備,但也可能是一些核心模塊),并在它的舊的上下文的范圍內嘗試逐步改進。

如果舊的構建工具不再可用,您將不得不使用一些技巧(見下文),但至少在您開始更改時,盡可能多地保持舊的系統工作。一個典型的提交通常只包含數行代碼。

發布!

所有修改盡可能發布到生產環境,即使修改的代碼是最終用戶不可見的,因為當你對系統了解不足時,只有生產環境才會告訴你新的修改哪里會有問題。如果這個問題只是在小的改變之后出現,你將獲得幾個優勢:

很容易弄清楚出了什么問題

您將處于改善流程的良好狀態

您應該立即更新文檔,以記錄獲得的新見解

合理使用代理服務器

如果您正在重構一個 Web 系統,感謝上帝,你可以在最終用戶和舊系統之間部署一個代理服務器。您可以精確控制每個 URL 哪些請求進入舊系統,哪些請求路由到新系統,從而可以更輕松,更精細地控制運行的內容。

如果您的代理足夠強大,您甚至可以控制將某個 URL 一定百分比的流量發送到新系統,以便觀察新系統的運行情況。如果您的集成測試也能夠連接到這個代理那就更好了。

很有道理,但這一切需要太多的時間!

那么這取決于你如何看待它。如果按照這些步驟確實存在不少工作,但是它的確有效,而且這個過程的任何優化都讓你進一步徹底了解整個系統。我個人在這方面也有一個很好的聲譽,我真的不希望這樣的工作中出現任何負面的問題。

有時候如果公司系統已經出現問題,而且可能會影響客戶時,如果按照這個流程可能使事情好轉,我寧愿完全控制和和使用這個過程,而不是為了表面的節省幾天或幾周的時間的方式。如果你更多地是牛仔的做事方式,你的老板也同意 —— 那么也許那是可以接受的高風險方式,但是大多數公司寧愿采取稍慢一點,更穩健的重構之路。

責任編輯:武曉燕 來源: 運維派
相關推薦

2013-04-15 09:02:43

JavaScriptJS

2021-08-08 08:23:45

SQL代碼編程

2023-11-08 13:55:27

2013-05-30 10:20:39

系統架構

2023-09-21 11:20:46

2023-01-27 14:53:03

2023-07-13 12:27:04

2023-02-09 09:08:44

PaSca圖結構數據處理

2017-07-04 10:16:37

舊代碼庫改進

2024-02-01 00:13:28

React前端開發

2023-09-25 12:13:00

Android架構

2023-12-12 08:00:00

2024-11-20 13:18:21

2021-01-14 09:59:07

JS代碼編碼

2023-09-25 12:18:48

2021-09-22 11:05:19

JS代碼前端

2009-03-16 09:16:13

行為擴展WCF.NET

2022-06-16 08:00:00

元數據數據中心數據架構

2024-10-10 14:01:34

2024-04-18 14:19:39

UPS系統模塊化數據中心
點贊
收藏

51CTO技術棧公眾號

国产中文日韩欧美| 久久人人爽亚洲精品天堂| 伊人久久大香线蕉av不卡| 色婷婷精品久久二区二区密| 亚洲成人a级网| 亚洲欧美日本伦理| 亚洲欧美色图视频| 日韩精品免费看| 91亚洲一区| 国产精品美女久久久久av爽| 国产99久久精品一区二区 夜夜躁日日躁 | 日本老师69xxx| 国产乱国产乱300精品| 欧美婷婷久久五月精品三区| 涩涩涩999| 欧美小视频在线| 日本不卡一二三| 国产a级黄色片| 亚洲美女av在线| 欧美成人久久| 国产精品视频一区二区三区,| 日韩av图片| 亚洲午夜久久久久久久久电影院| 日色在线视频| 性刺激综合网| 久久国产精品免费| www.97视频| 欧美日韩成人精品| 国产成人精品影院| 亚洲精品久久久久久久久久 | 咪咪网在线视频| 美女日批在线观看| 另类色图亚洲色图| 精品一区二区三区免费毛片爱| 日韩一级中文字幕| 精品视频免费在线播放| 亚洲精品一区二区三区99| 国产视频亚洲| 日本成人动漫在线观看| 国产精品欧美激情在线观看| 欧美videos中文字幕| 九色porny丨入口在线| 在线观看免费黄网站| 在线日韩中文字幕| 午夜一级久久| 青梅竹马是消防员在线| 日韩激情免费视频| 尤物精品国产第一福利三区| 国产成人av电影在线观看| 国产高清自产拍av在线| 少妇饥渴放荡91麻豆| 欧美在线www| 国产嫩草影院久久久久| 亚洲一区二区av| 日本网站免费观看| 日韩精品无码一区二区三区| 欧美日韩二区三区| 黄视频在线免费看| 北条麻妃亚洲一区| 国产精品成人av性教育| 亚洲一二三专区| 国产91久久精品一区二区| 91精品人妻一区二区三区果冻| 草b视频在线观看| 中文字幕综合在线| 91亚洲精华国产精华精华液| 日韩一级特黄| 精品久久久久久久久久久久久久久久久久| 日韩欧美在线观看强乱免费| 精品区一区二区| 久久99精品久久久久久国产越南| 中文一区一区三区高中清不卡免费 | 亚洲精选视频免费看| 国产精品xxx视频| 日本中文字幕免费| 亚洲国产日韩欧美一区二区三区| 久久高清视频免费| 亚洲av鲁丝一区二区三区| 外国成人免费视频| 欧美激情按摩在线| 免费一级片视频| 亚洲午夜极品| 7777精品视频| 青青国产在线视频| 美女诱惑黄网站一区| 国产精品久久久久一区二区| 亚洲一区二区激情| 久久97超碰色| 国产精品一区二区三区免费观看| 日本人妖在线| 国产精品美女久久久久久2018| 国产免费美女视频| 在线能看的av网站| 久久久亚洲国产| 一起操在线播放| 欧美精品首页| 性色av一区二区三区免费| 精品一区二区三区人妻| 亚洲一区久久| 成人免费福利在线| 午夜小视频在线播放| 中文字幕va一区二区三区| 国产人妻人伦精品| 欧美18av| 日韩欧美一区二区视频| 亚洲综合网在线观看| 久久伦理在线| 高清在线视频日韩欧美| 人妻中文字幕一区二区三区| 国产精品伊人色| 久久久久久久久久久久久久一区| 亚洲成人影院麻豆| 天天爽夜夜爽夜夜爽精品视频| 五月婷婷丁香综合网| 日本综合精品一区| 亚洲男人天堂网| 免费国产羞羞网站美图| 噜噜爱69成人精品| 91九色在线观看| 国家队第一季免费高清在线观看| 欧美亚洲国产日韩| 国产精品天干天干在观线| 丁香花在线影院观看在线播放| 992tv国产精品成人影院| 亚洲精品在线观| 日韩欧美在线播放| 成人午夜电影网站| 国产精华一区| 最近高清中文在线字幕在线观看| 综合av第一页| 国产一区二区视频免费在线观看| 欧美三级电影网址| 亚洲天堂av网| 日本亚洲色大成网站www久久| 国产在线精品不卡| 欧美亚洲日本国产| 日本wwwxx| 国产精品97| 国产91在线播放九色快色| 欧美一级特黄aaaaaa| 亚洲免费观看高清| 久久久久久免费看| 9l视频自拍蝌蚪9l视频成人| 欧美成在线视频| 97精品人妻一区二区三区在线 | 日本高清www免费视频| 国产成人av电影在线播放| 黄色网络在线观看| 四虎成人在线| 中文字幕久久精品| 中文字幕欧美在线观看| 久久久美女艺术照精彩视频福利播放| 国产aaa免费视频| 成功精品影院| 91精品国产色综合久久不卡98口| 人妻与黑人一区二区三区| 一区二区三区四区在线| 亚洲妇熟xx妇色黄蜜桃| 性xxxx欧美老肥妇牲乱| 97国产suv精品一区二区62| 少妇人妻偷人精品一区二区| 一区二区三区精品在线观看| 麻豆av免费看| 夜夜嗨一区二区三区| 99理论电影网| 漫画在线观看av| 亚洲免费影视第一页| 国产裸体美女永久免费无遮挡| 国产清纯美女被跳蛋高潮一区二区久久w | 国产91久久婷婷一区二区| 大地资源中文在线观看免费版| 欧美视频在线一区二区三区| 亚洲精品国产精品乱码在线观看| 国内精品国产三级国产a久久| 青青在线免费视频| 国产劲爆久久| 日韩av免费在线播放| 中文字幕在线视频区| 欧美一区欧美二区| 日韩黄色三级视频| av一区二区三区在线| 可以免费观看av毛片| 91视频久久| 懂色av一区二区三区在线播放| 激情影院在线| 亚洲欧美制服综合另类| ,亚洲人成毛片在线播放| 一区二区激情小说| 国产特级黄色录像| 国产在线精品一区二区三区不卡 | 快射av在线播放一区| 精品国产1区2区3区| 特级做a爱片免费69| 亚洲欧洲性图库| 日韩精品人妻中文字幕有码 | 国产亚洲精品美女久久久久| 日韩精品一区二区亚洲av| 久久久欧美精品sm网站| www.五月天色| 美女被久久久| 欧美做暖暖视频| 国产精品一区二区三区av麻 | 国产成人精品影院| 午夜在线视频免费观看| 超碰成人97| 日韩免费在线免费观看| 成人在线观看免费| 日韩精品一区在线观看| 国产午夜无码视频在线观看| 一区二区三区四区中文字幕| 九九九视频在线观看| 91啦中文在线| 欧美精品99久久久**| 日韩av电影网| 亚洲欧洲国产日韩| 成人在线电影网站| 激情偷乱视频一区二区三区| 99精品人妻少妇一区二区| 国产伦精品一区二区三区千人斩 | 91福利视频导航| 国产精品一级二级| 欧美日韩亚洲一区二区三区| 在线视频这里只有精品| 国v精品久久久网| 午夜天堂精品久久久久| 久久的精品视频| 青青操在线视频| 亚洲天堂一区二区三区| 少妇饥渴放荡91麻豆| 久久99热这里只有精品| 免费看又黄又无码的网站| 亚洲第一偷拍| 欧美丝袜美女中出在线| 久久久久久久久久久国产精品| 美女mm1313爽爽久久久蜜臀| 成年人看的毛片| 欧美激情视频一区二区三区在线播放| 久久伊人一区| 欧美freesex8一10精品| 99一区二区| 精品九九久久| 国产精品电影网站| 樱桃视频成人在线观看| 亚州av一区二区| 国产精品69xx| 久久亚洲综合网| 初高中福利视频网站| 国产日产一区二区| y97精品国产97久久久久久| 国产在线一在线二| 一本一本久久a久久精品综合小说 一本一本久久a久久精品牛牛影视 | 青草在线视频| 日韩精品视频在线免费观看| 一卡二卡三卡在线观看| 久久亚洲精品视频| 日本韩国欧美中文字幕| 亚洲欧美另类在线| 91日韩中文字幕| 夜夜嗨av一区二区三区网页| 欧美性猛交xxxx乱大交少妇| 亚洲欧洲精品一区二区三区| 午夜精品一区二区三级视频| 亚洲乱码日产精品bd| 免费在线一区二区三区| 亚洲电影在线免费观看| 国产午夜福利一区二区| 婷婷综合另类小说色区| 波多野结衣二区三区| 97久久精品人人澡人人爽| 国内自拍偷拍视频| 暴力调教一区二区三区| 在线观看国产免费视频| 99久久综合国产精品| 中国极品少妇videossexhd| 成人午夜视频网站| 亚洲区免费视频| 2024国产精品| 日本黄色录像视频| 亚洲成a人片在线观看中文| xxxx 国产| 欧美日韩另类视频| 中文字幕人妻精品一区| 玖玖精品在线| julia一区二区中文久久94| 全球av集中精品导航福利| 国产精品自拍偷拍视频| 涩爱av色老久久精品偷偷鲁 | 69久久夜色精品国产69| 日本不卡1234视频| 国产精品视频区| 国产成人高清精品免费5388| 色一情一区二区三区四区| 欧美 日韩 国产一区二区在线视频 | 欧美日韩和欧美的一区二区| av一区二区三| 亚洲免费成人av电影| 成年人在线观看视频| 欧美激情在线一区| 欧美人体一区二区三区| 99久久伊人精品影院| 欧美精品一区二区三区精品| 999一区二区三区| 日本va欧美va精品| 亚洲精品久久久久久| 国产欧美一区二区精品久导航 | 色天使久久综合网天天| www.国产视频| 综合久久五月天| 亚洲性受xxx喷奶水| 成人动漫视频在线观看免费| 欧美国产美女| 日本成年人网址| 黑人精品欧美一区二区蜜桃| 国产精品成人一区二区三区电影毛片 | 精品国偷自产国产一区| 免费看男男www网站入口在线| 欧美夫妻性生活视频| 久久精品黄色| 日本黑人久久| 国产日韩精品视频一区二区三区| 日韩欧美中文视频| 国产欧美日韩麻豆91| 国产一级在线观看视频| 日韩亚洲国产中文字幕欧美| 1024视频在线| 国产精品久久国产精品99gif| 99精品在免费线中文字幕网站一区| 色香蕉在线观看| 青椒成人免费视频| 熟女少妇内射日韩亚洲| 亚洲午夜av在线| a网站在线观看| 久久精品99久久久香蕉| 日韩精品一级毛片在线播放| 日本一区二区在线视频| 在线日韩中文| 亚洲の无码国产の无码步美| 一区二区三区在线免费视频| 久久久久久久久久一级| 国产午夜精品美女视频明星a级| 神马久久午夜| 国产精选一区二区| 国产精品v亚洲精品v日韩精品 | 国产毛片视频网站| 国产福利精品一区二区| 久久黄色小视频| 精品国产99国产精品| 99热99re6国产在线播放| 国产伦精品一区二区三区在线 | 五月婷婷六月丁香激情| 国产精品久久三| 国产绿帽一区二区三区| 久久久999精品| 亚洲视频国产| 大地资源网在线观看免费官网| 国产精品综合在线视频| 殴美一级黄色片| 91精品国产欧美日韩| 色呦呦久久久| 国产一区二区在线观看免费播放| av成人激情| 中国女人特级毛片| 欧美日韩电影在线| 国产黄色小视频在线| 亚洲va欧美va国产综合剧情| 欧美亚韩一区| 国产精品九九视频| 狠狠操狠狠色综合网| 亚洲精品永久www嫩草| 一区二区久久| 成人在线手机视频| 欧美三级韩国三级日本三斤| 国产精品刘玥久久一区| 粉嫩av一区二区三区免费观看 | 丰满熟妇乱又伦| 久久久之久亚州精品露出| 亚洲色图丝袜| 亚洲欧美另类动漫| 国产精品午夜免费| 亚洲av无码国产综合专区 | 日韩av黄色| 免费人成自慰网站| 国产视频一区二区在线| 这里只有精品免费视频| 久久99国产综合精品女同| 婷婷综合电影| 国产亚洲视频一区| 一区二区激情视频| 大片免费播放在线视频| 国产日韩欧美成人| aa国产精品| 登山的目的在线| 亚洲精品久久在线| 中文字幕综合| 国产精品视频一区二区三区四区五区| 国产精品视频一区二区三区不卡| 亚洲欧美另类综合| 国产精品美女av| 激情视频一区| 秋霞欧美一区二区三区视频免费 |