《持續(xù)交付發(fā)布可靠軟件的系統(tǒng)方法》讀書筆記
配置管理指一個(gè)過程,通過該過程,所有與項(xiàng)目有關(guān)的產(chǎn)物,以及它們之間的關(guān)系都被唯一定義、修改、存儲與檢索。
使用版本控制
- 對所有內(nèi)容進(jìn)行版本控制(所需的支撐軟件配置信息,操作系統(tǒng)配置信息、DNS區(qū)域文件和防火墻配置等)
配置管理是持續(xù)集成交付過程的基礎(chǔ)。
軟件配置管理
靈活性:先專注于提供具有高價(jià)值且可配置程度低的功能,冒煙測試就是一種緩解配置驗(yàn)證問題的方法
配置分類
- 推薦應(yīng)使構(gòu)建打包生成的包,面向所有環(huán)境,并不植入配置信息
應(yīng)用程序的配置管理
- 將特定于測試環(huán)境或生產(chǎn)環(huán)境的實(shí)際配置信息存放于與源代碼分離的單獨(dú)代碼庫,需要注意配置信息的版本,一定要與相應(yīng)的應(yīng)用軟件的版本相切爾西
- 不要把密碼放在版本控制系統(tǒng)中
- 獲取配置信息:文件系統(tǒng)、從某個(gè)中心倉庫中獲取配置信息
- 配置信息:區(qū)分應(yīng)用、版本、環(huán)境,都需要滿足以下:
- 新增一個(gè)環(huán)境,能為這個(gè)配置應(yīng)用的新環(huán)境指定一套新的配置信息
- 新建應(yīng)用程序的一個(gè)新版本,確保在部署新版本時(shí),使用新的配置,但是一量需要回滾時(shí),還能夠使用舊版本的配置
- 將新版本從一個(gè)環(huán)境移到另一個(gè)環(huán)境,確保新環(huán)境上的新配置里有效
- 重定向到一個(gè)數(shù)據(jù)庫服務(wù)器,只需要簡單更改一個(gè)配置項(xiàng)
- 通過虛擬化技術(shù)管理環(huán)境
- 一種方法是把預(yù)生產(chǎn)環(huán)境的配置信息作為默認(rèn)配置,其它環(huán)境通過適當(dāng)?shù)姆绞礁采w這些默認(rèn)值,盡量減少配置項(xiàng)
跨應(yīng)用的配置管理
每個(gè)應(yīng)用程序的配置項(xiàng)管理都應(yīng)該作為項(xiàng)目啟動階段的一個(gè)議題,且應(yīng)維護(hù)一份應(yīng)用程序配置選項(xiàng)索引表,記錄配置項(xiàng)的功能,位置及生命周期,如何修改。
- 在應(yīng)用程序的生命周期中,我們應(yīng)該在什么時(shí)候注入哪類配置信息,要與系統(tǒng)運(yùn)維和支持團(tuán)隊(duì)一同討論。
- 將應(yīng)用程序的配置項(xiàng)與源代碼保存在一個(gè)倉庫中,但要把配置項(xiàng)的值保存在別處,另外像用戶密碼這類敏感信息不應(yīng)該放在版本控制庫中
- 應(yīng)該總是通過自動化的過程將配置項(xiàng)從保存配置信息的存儲庫中取出并設(shè)置好,這樣就能很容易掌握不同環(huán)境中的配置信息了
- 配置系統(tǒng)應(yīng)該能依據(jù)應(yīng)用、版本、環(huán)境為打包、安裝以及部署腳本提供不同的配置值。
- 對每個(gè)配置項(xiàng)都應(yīng)用明確的命名習(xí)慣,避免使用難懂的名稱。
- 確保配置信息是模塊化且封閉的,使得對某處配置項(xiàng)的修改不會影響到那些與其無關(guān)的配置項(xiàng)。
- DRY原則。定義好配置中的每個(gè)元素,使每個(gè)配置元素在整個(gè)系統(tǒng)中都是唯一的,其含義絕不與其他元素重疊。
- 最少化,即配置信息應(yīng)盡可能簡單且集中。
- 避免對配置信息的過分設(shè)計(jì),應(yīng)該盡可能簡單。
- 確保測試已覆蓋到部署或安裝時(shí)的配置操作。
環(huán)境管理
- 環(huán)境中各種各樣的操作系統(tǒng),包括其版本、補(bǔ)丁級別及配置設(shè)置
- 應(yīng)用程序所依賴的需要安裝到每個(gè)環(huán)境中的軟件包,以及這些軟件包的具體版本及配置
- 應(yīng)用程序正常工作所需的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
- 應(yīng)用程序所依賴的所有外部服務(wù),以及這些服務(wù)的版本和配置信息
- 現(xiàn)有的數(shù)據(jù)以及其他相關(guān)信息
當(dāng)評估第三方產(chǎn)品或服務(wù)時(shí),應(yīng)該問自己以下問題:
- 我們可以自行部署它嗎?
- 我們能對它的配置做有效的版本控制嗎?
- 如何使它適應(yīng)我們的自動化部署策略?
對環(huán)境的變更過程進(jìn)行管理,嚴(yán)格控制生產(chǎn)環(huán)境,未經(jīng)組織內(nèi)部正式的變更管理過程,任何人不得對其進(jìn)行修改。
應(yīng)該像對待生產(chǎn)環(huán)境一樣對待測試環(huán)境,其配置管理應(yīng)該與生產(chǎn)環(huán)境中的配置管理一樣的策略。