關於容器化技術
我喜歡用這個比喻跟同學解釋,為何 “容器化(Container)” 技術對於開發人員和維運工程師那麼重要。
過去,你一定碰到過,開發的程式 “在我的電腦上是好的” 但在客戶那邊就是不能用的情況。有時候是…在測試環境OK,在正式機就是不行,然後怎麼辦? 我們開始找差異(難不成把你的電腦出貨給客戶?),有時候幾天幾夜你也找不出差別,乾脆重安裝一台比較快。
這是因為,我們所開發的軟體對於作業系統、runtime、套件…都有相依性,所以換了底層環境,或是有一點點的套件差異,就可能導致無法執行。
然而,當我們採用容器化技術後,可以把軟體運行所需要的一切,都封裝在一個影像檔(image)之中,未來,只要把這個 image 丟到任何支援容器化技術的環境,不管是甚麼平台,不管作業系統、不管runtime是甚麼版本、不管有沒有安裝什麼套件…我們的應用程式一定可以執行。
就好比貨櫃屋或是行動餐車,把營業所需要的家當全部都封裝在那個車廂(image)裡面了,不管開到哪,接上水電就可營業(執行)。
而且容器化技術可以把一個影像檔壓縮到幾百M以內,比起VM的 image 動輒幾G起跳,有著天生的複製方便、擴展容易的特性,使得你可以很輕鬆地實踐 scale out(動態生出伺服器) 或 fail-over(壞了立刻啟動備援)。
從此之後,我們的應用程式跟作業系統環境毫無相依性,且隨便也可以瞬間擴展出五台十台執行個體,再也不怕瞬間大流量,這不是突破性的革命,什麼是突破性的革命?
如果讓我票選,近代軟體開發最重要的幾個技術,除了網際網路之外,容器化和AI可能可以名列前三。
留言