《持續(xù)交付發(fā)布可靠軟件的系統(tǒng)方法》讀書筆記
配置管理指一個過程,通過該過程幽歼,所有與項目有關的產(chǎn)物导饲,以及它們之間的關系都被唯一定義捞高、修改、存儲與檢索渣锦。
使用版本控制
- 對所有內(nèi)容進行版本控制(所需的支撐軟件配置信息硝岗,操作系統(tǒng)配置信息、DNS區(qū)域文件和防火墻配置等)
配置管理是持續(xù)集成交付過程的基礎袋毙。
軟件配置管理
靈活性:先專注于提供具有高價值且可配置程度低的功能型檀,冒煙測試就是一種緩解配置驗證問題的方法
配置分類
- 推薦應使構建打包生成的包,面向所有環(huán)境听盖,并不植入配置信息
應用程序的配置管理
- 將特定于測試環(huán)境或生產(chǎn)環(huán)境的實際配置信息存放于與源代碼分離的單獨代碼庫胀溺,需要注意配置信息的版本裂七,一定要與相應的應用軟件的版本相切爾西
- 不要把密碼放在版本控制系統(tǒng)中
- 獲取配置信息:文件系統(tǒng)、從某個中心倉庫中獲取配置信息
- 配置信息:區(qū)分應用月幌、版本碍讯、環(huán)境,都需要滿足以下:
- 新增一個環(huán)境扯躺,能為這個配置應用的新環(huán)境指定一套新的配置信息
- 新建應用程序的一個新版本捉兴,確保在部署新版本時,使用新的配置录语,但是一量需要回滾時倍啥,還能夠使用舊版本的配置
- 將新版本從一個環(huán)境移到另一個環(huán)境,確保新環(huán)境上的新配置里有效
- 重定向到一個數(shù)據(jù)庫服務器澎埠,只需要簡單更改一個配置項
- 通過虛擬化技術管理環(huán)境
- 一種方法是把預生產(chǎn)環(huán)境的配置信息作為默認配置虽缕,其它環(huán)境通過適當?shù)姆绞礁采w這些默認值,盡量減少配置項
跨應用的配置管理
每個應用程序的配置項管理都應該作為項目啟動階段的一個議題蒲稳,且應維護一份應用程序配置選項索引表氮趋,記錄配置項的功能,位置及生命周期江耀,如何修改剩胁。
- 在應用程序的生命周期中,我們應該在什么時候注入哪類配置信息祥国,要與系統(tǒng)運維和支持團隊一同討論昵观。
- 將應用程序的配置項與源代碼保存在一個倉庫中,但要把配置項的值保存在別處舌稀,另外像用戶密碼這類敏感信息不應該放在版本控制庫中
- 應該總是通過自動化的過程將配置項從保存配置信息的存儲庫中取出并設置好啊犬,這樣就能很容易掌握不同環(huán)境中的配置信息了
- 配置系統(tǒng)應該能依據(jù)應用、版本壁查、環(huán)境為打包觉至、安裝以及部署腳本提供不同的配置值。
- 對每個配置項都應用明確的命名習慣睡腿,避免使用難懂的名稱康谆。
- 確保配置信息是模塊化且封閉的,使得對某處配置項的修改不會影響到那些與其無關的配置項嫉到。
- DRY原則沃暗。定義好配置中的每個元素,使每個配置元素在整個系統(tǒng)中都是唯一的何恶,其含義絕不與其他元素重疊孽锥。
- 最少化,即配置信息應盡可能簡單且集中。
- 避免對配置信息的過分設計惜辑,應該盡可能簡單唬涧。
- 確保測試已覆蓋到部署或安裝時的配置操作。
環(huán)境管理
- 環(huán)境中各種各樣的操作系統(tǒng)盛撑,包括其版本碎节、補丁級別及配置設置
- 應用程序所依賴的需要安裝到每個環(huán)境中的軟件包,以及這些軟件包的具體版本及配置
- 應用程序正常工作所需的網(wǎng)絡拓撲結構
- 應用程序所依賴的所有外部服務抵卫,以及這些服務的版本和配置信息
- 現(xiàn)有的數(shù)據(jù)以及其他相關信息
當評估第三方產(chǎn)品或服務時狮荔,應該問自己以下問題:
- 我們可以自行部署它嗎?
- 我們能對它的配置做有效的版本控制嗎介粘?
- 如何使它適應我們的自動化部署策略殖氏?
對環(huán)境的變更過程進行管理,嚴格控制生產(chǎn)環(huán)境姻采,未經(jīng)組織內(nèi)部正式的變更管理過程雅采,任何人不得對其進行修改。
應該像對待生產(chǎn)環(huán)境一樣對待測試環(huán)境慨亲,其配置管理應該與生產(chǎn)環(huán)境中的配置管理一樣的策略婚瓜。