2016年3月13日 星期日

筆記:Easier, Better, Faster, Safer Deployment with Docker and Immutable Containers


心得

這篇也算是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

沒有留言:

張貼留言

DevOps Lessons Learned at Microsoft Engineering 筆記

原文: https://www.infoq.com/articles/devops-lessons-microsoft 筆記 組織 講Microsoft裡面的DevOps 故事描述的是Cloud & Enterprise and the Bing ...