インフラ系SEの技術メモ

雑なエンジニアが低信頼性のメモを書いています。参考程度にとどめてください。

(DBには?)コンテナの向き不向きについて

コンテナが向いているもの

コンテナは起動/停止が早いものの内部的にデータを溜め込まないことがベストプラクティスなので

ステートレス

なサービスの実装に向いています。

一例で言うとWebフレームワークを利用したWebサーバや並列パッチなどなど。

向いてないもの

上とは逆の理論で

ステートフル

なサービスですね。

分かりやすい例で言えば従来型のRDBMSなどなど。
実際、RDBMSは性能観点やデータやログファイルの取り扱いの容易さからコンテナでは実装をしないケースが多いです。

しかし例外としては

分散アーキテクチャ

が採用されているDB。例えばNoSQLなどなど。

これらの場合はステートフルであっても比較的実装が容易です。障害設計などもコンテナであろうが仮想マシンであろうがあまり変わらないので、例外としてコンテナで実装するケースは見受けられます。

終わりに

どこまでをコンテナにするのか?という問いにて「DBはコンテナに向いてないよね」という話がありますが、実際はNoSQLであればコンテナでも容易に実装ができます。KubernetesではStatefulsetというオブジェクトもありますからね。