Diary

@ssig33

23/Dec/2016 (Fri) 00:28

Docker イメージの最適化問題

前提 1. 実行環境は頻繁に捨てられる

  • オートスケールでの増減
  • CodeBuild 使う場合とか
  • サーバーの故障、不具合
    • ぼくが使ってるゴミクラウドみたいなやつではすっげー頻繁におきてる

前提 2. 面倒なことはしたくない

そりゃまあね。

すると?

綺麗に作られた Docker イメージはベースとアプリケーション固有部分が分離していて転送が最適化されるみたいな話はあるんですが、それはそうとして頻繁にベースごと吹き飛ばされるという環境で生活している人は多いのではないかと思う。

このような情勢のもとではいろいろ頑張って最適化したところでダメなときはダメだしみたいな話になってくる。

というわけでなのでこのへんあんまり神経質にやる必要はないと思う。普通に書けばまあ普通にある程度キャッシュされますよ以上のことを考えなくていいんじゃないかな。そういうところ神経質に気にしたい人は Docker 使わないほうがいいと思う。ただまあこのへんコストの判断基準をどこに置くかなので最終的には殺し合いになります、

golang:latest でビルドしたバイナリを alpine-glibc に突っ込むぐらいのビルドパイプラインだと複雑さはかなり低いと思うのでそれはありかなと思うけど、

ChimpoKnights とかあんなん維持するのにそんなに金払いたくないから alpine-glibc に Go のバイナリ一個載せるみたいなチマチマしたことやってるけど、これが仕事だったら絶対こんなことしないな

— イスラム原理主義者@天皇陛下生誕委員会 (@ssig33) December 22, 2016

という話です。ちなみに @ChimpoKnights さんは AWS Lambda と AWS CodeBuild で動いています。