iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 6
1
DevOps

誤入 DevOps 叢林的後端工程師系列 第 6

Day06 - Immutable

這年頭大家都在談論 Immutable,例如 ReduxFunctional programmingBlockchain 都在談論它, 它到底是何方神聖,為什麼它這麼重要?immutable 其實指的是當你在創建物件之後,其狀態就不能再改變,創建之後的任何變異,都以創建另一個新的物件做替換,immutable 有助於簡化變異的追蹤 (mutation tracking),變異的追蹤這點對於環境的管理也非常重要。

Dockerfile 為什麼這麼重要?

在以前,我們取得乾淨的 VM 後,馬上就是開始執行一堆指令去安裝必要軟體,有些人會用 script 把這個過程記錄下來,但是當系統趨近於穩定後,若發生一些突發狀況要處理,我們常常會直接透過 ssh 連進 VM 直接做更變,也許額外安裝了一些套件,也許修改了某個 config 檔,試了大半天伺服器終於恢復正常了。

除非當下你很清楚自己在做什麼,靠著那份記憶將所有變更百分之百同步更新到你的 script 檔中,但現實比較常發生的是,你試了 n 種方法,但不確定哪一個更變是真正導致系統恢復正常。例如你試了 A + B + C + D 步驟,但其實只要 A + D 步驟就夠了,B 跟 C 步驟是多餘的。

如果要釐清確切的原因,你需要一個當下錯誤狀態的環境,再重新驗證一次你的所有假設,把整個過程去蕪存菁,這樣你才能 100% 的肯定,就是那個原因。如果你的所有環境變更都透過 Dockerfile 來管理,並將 Dockerfile 檔案存放在儲存庫(repository),每次重建環境只要指定特定的 Dockerfile 版號來建立新的容器,那你要重現什麼階段的狀態的環境都不是問題了。

參考來源


上一篇
Day05 - 擁抱容器化
下一篇
Day07 - 撰寫 Dockerfile (1/2)
系列文
誤入 DevOps 叢林的後端工程師30

尚未有邦友留言

立即登入留言