1. 配置的環境屬性
毫無疑問,在系統持續交付的過程中,系統最終執行環境的多樣性及複雜性毫無疑問增加了我們在配置管理工作上的負擔,有時候,甚至不誇張的說,配置就是因環境而生。
這在Eugen Paraschiv的博文 Configuration Must Be Environment Specific裡有簡單的闡述,在我的博文《現代應用架構中的配置管理面臨的挑戰》 的容器化、排程與配置管理小節也有深入的闡述。
如果要問,是什麼導致了我們應用的構建物(artifact)在各個環境不能保持一樣,有時候Docker無法輕易達成“Build Once, Run Anywhere!”的承諾,其答案往往就是環境配置的差異,為幫助你理解,舉一些簡單的例子:
- 在開發環境中將logLevel設定為DEBUG,在預發環境logLevel設定為INFO,生產環境裡logLevel設定為WARNING
- 在開發環境中使用4核8G的機器跑資料庫,而在生產中用32核96G機器跑資料庫
- 在日常環境執行執行緒池的最大執行緒數應該設定為15,而生產環境上這個值應該大一點,預設設為150
- 線上上環境中,中心機房,應用資料來源需要連線A庫,而深圳機房,應用應該就近連線使用B庫
- 只有在小淘寶環境,雙向同步開關才應該關閉
- 這次的改動有點大,新的特性僅線上上的杭州單元把該特性開放出來,其它的單元環境先不要開放出來