將Test/Prod環境安裝在同一台主機問題
前言
與前同事討論關於他所在公司MIS想把專案(專案服務都有容器化)的測試與生產環境都安裝在同一台主機上,但後端工程師是認為應該把測試與生產環境拆開成兩台不一樣虛擬機上。
在公司裏其實滿常發生不同職務對同一件事情有不同看法,但如何做出最後決策的方法可能很多種,例如:
- 老闆已經有想法,那就照老闆的想法當決策,出錢的最大,最後責任也是老闆承擔。
- MIS(DevOps)部門有想法,那就溝通看看,最終還是以MIS部門想法為主,畢竟責任歸還是這部門要承擔。
- 後端工程師也有想法,如果老闆或MIS部門願意交換彼此想法,那就值得溝通看看,這篇文章也主要針對這情況進行溝通的探討。
想法
針對此議題進行思考:
- 方案A: 測試與生產環境都安裝在同一台主機上。(老闆與MIS頃向此方案)
- 方案B: 測試與生產環境拆開成兩台不一樣虛擬機上。(個人與前同事頃向此方案)
在大家都有不同想法時,我可能會先詢問對方用方案A有哪些好處以及回饋個人對方案A可能面臨到的壞處。後續再提供方案B的好處與壞處,這樣大家就可以對明確的好處跟壞處進行討論,而不是對方案的抽象概念進行討論,這樣討論的結果可能會更有建設性。
因個人頃向的是對方案B,以下是個人認為方案B的好處:
- 資源分離,測試環境與生產環境的資源不會互相影響,例如在進行壓力測試時榨乾了系統資源。
- 資安等級,測試環境可以配置較低的資安等級,生產環境可以配置較高的資安等級。
- 套件升級,可先在測試環境測試套件升級後,確認沒問題再將測試環境的套件升級到生產環境,避免直接在生產環境升級導致服務中斷。
- 硬體配置,測試環境與生產環境的資源可以分別配置,例如測試環境可以配置較低的CPU與記憶體,生產環境可以配置較高的CPU與記憶體。
以下是個人認為方案A的壞處:
基本上方案B的好處可能都會是方案A的壞處。
- 資源佔用,雖然可以限制容器資源上限,但也代表要把一部分資源給測試環境,導致生產環境的資源會被減少。
- 套件升級,Docker套件升級時,導致配置與相依套件的版本不一致,使服務無法啟動。
- 資安等級太高,導致測試環境除錯困難,例如不允許後端工程師登入遠端主機進行log取得與當前資源監測。
- 部署複雜度提升,因同時要區別各種環境的容器,但容器使用的port資源可能都一樣,導致部署複雜度提升。
結論
- 透過溝通針對個方案分析出好處與壞處,達到共識。
- 透過討論,老闆或MIS部門依然覺得自己方案最好,那只能接受老闆或MIS部門的決定。
評論