對於是否要用 Container (Docker) 的檢查表

這篇積的有點久,但很不錯的一篇文章 (以條列出來的東西來看):「Instead of containerization, give me strong config & deployment primitives」。

作者遇到了現在很多團隊「因為潮/因為好像可以解決問題,而想要用 Docker」,在沒有想清楚的情況跳下去用,發現沒解決本來的問題,反而製造了一堆問題。

如果你已經在用 AWS,那麼 Docker 相較於 AWS 大致上只有一個優點,也就是開啟速度很快 (因為是 container 的特性)。Docker 的另外幾個優點在 AWS 上是不存在的,包括了 immutable 以及隔離性。

在 AWS 上使用 Docker 反而有不少麻煩,像是要處理 AutoScaling + Service Discovery 時整合的問題,以及 storage 問題。這些都需要另外花力氣處理。

另外一個常聽到的是「讓開發環境與線上環境一致」的議題常常是假議題,對於有照 The Twelve-Factor App 避免寫出有 bad smell code 的程式,開發環境用 Docker,正式環境用標準的 EC2 其實不會有太大問題。

PS:雖然我覺得 The Twelve-Factor App 裡面有些想法有點走火入魔,但對於大多數情況,裡面寫的其實不錯。

One thought on “對於是否要用 Container (Docker) 的檢查表”

  1. 對於沒有sysadmin技能跟思維的developer而言, 使用Docker可以讓他們在"不需要把雙手弄髒"的情況下快速地佈署所有開發環境需要的基礎架構 - 不論那是個網路服務還是另一台機器. 所以當然會讓人上癮 :)

    然而, 正確地建立基礎架構其實也是排除潛在問題的基本前提. 一個從根就爛掉的開發環境會狀況頻傳並不讓人意外. Docker在幕後對OS環境做了多少小動作, 大多數的使用者應該都沒去追查了解過 :)

    以前好像還有個 boycottdocker.org 網站在, 現在已經消失了, 可惜哪

Leave a Reply

Your email address will not be published. Required fields are marked *