2015年6月8日月曜日

dockerを使用したシステム設計の原則

dockerを用いてシステム設計する際に注意すべきことがある。1バーチャルマシン(つまりサーバ1台)として捉えるとうまく設計できない。

dockerを用いる場合、「再現性」、「構築フロー」、「デベロッパーがサーバ管理できる」といったメリットがある。

しかし、コンテナやホストマシンの管理、docker自体の頻繁なアップデートによる学習コストなどがデメリットである。

システム設計で大切なこと
dockerコンテナの運用方法自体が簡潔になる方向を模索する。

1コンテナは1デーモンと考える
コンテナはサーバ上で起動する1デーモンと考えること。

コンテナに永続化するデータが存在しないこと
ログを含む永続化対象のデータはすべて、コンテナ外へ保存すること。

設定はすべてアプリケーションコード外で管理すること
設定がアプリケーションコードに依存していると、アプリケーションの変更によって接続先が変わってします可能性があるため。

ホストマシンには出来る限り直接パッケージをインストールしないこと
ミドルウェアを含めた環境全体をコンテナとして動かすこと。
ホストマシンの管理を不要にし、可能な限りコンテナのアップデートコストのみにする。

buildには基本Dockerfileを使用すること
シンプルで簡単だからである。

0 件のコメント:

コメントを投稿