心得
這篇也算是Docker官方業配文?這位法國來的Jerome Petazzoni講英文我意外蠻好懂的。所謂Immutable這個概念最常就是拿人體的細胞來比。聽起來是很有說服力啦。基本上這樣子的Deploy方式就很像修車模組化整批換掉,而且軟體是虛擬的,完全不會有什麼零件製造品質問題或是什麼物理性問題。而這個架構可以強迫設計者把Storage與Service分開,讓Service成為真正的Stateless,而Data與Service分開的速度部份,我覺得也不用擔心,現在幾乎所有雲端Solution都有Storage Service了,怕延遲就是要用In Mem Cache。我最驚豔的是,有side kick container這種東東呀!裝個Container在正在運作的Container旁邊就可以偷看網路與其它東西…Docker真的是越來越成熟了!不過缺點就是,幾乎什麼都要寫code,想要完成這樣子的架構就是要寫一堆configuration!然後就有比較高的學習曲線,然後就要引進版本管理機制,然後就要管理這些東西的複雜度,然後就要找更厲害的Engineer才能把東西搞好搞大!這樣其實對我們來講是好事啦!在IT界總有新觀念可學習,新東西可以玩~
筆記
Never change what’t on a server
- 不要裝新的packages
- 不要upgrade原來的packages
- 不要移除或down grade原來的packages
- 就算有安全性問題!
- 不要編輯configuraiton files
- 不要更新application的code!
如何upgrade
- 起一個全新的Server然後測試過沒問題之後換掉舊的那新舊Server可以同時存在,寫DB怎辦?這可能又是一個只新增欄位與換Data Model才能解決的問題
- 避免server confiugration drift導致難以維護的結果。
導入Immutable Server的佈署概念
- 一陣子就重新換Servers
- 維護Golden image,所有的Server都用這個image佈署
缺點
小修改很可怕
- 小修改就要把整個Server群的image換掉
- create image要時間
- 重新啟用同數量的server要時間
- 把舊的Server的Request導到新的也要時間
- 解法:
- 全部都自動化
- 用中間image減少編譯時間
很難Debug
- 沒裝tcpdump或iptables怎辦
- log怎麼導出去
- 解法:把需要用的工具裝進去image裡面
- 解法:把log導到外面。
存資料
- Immutable沒辦法存資料
- 解法:不要存在Server上,存在其他Storage,Amazon RDS
- 解法:存在外部系統
導入Immutable Container也就是Docker
- Create docker image可以有snapshot,所以小修改要create image更快。
- 換Image後啟動速度比一般VM快非常多!完全不能比!
- 可以重使用原本在Host作業系統上的資料,或是用Data Volume Container。
- Container之間可以分享:
- 目錄,像是Log
- 網路,可以用B Container來看到A Container的Traffic!這種叫做side kick container
- 執行Service的Container完全可以是Read only
沒有留言:
張貼留言