Robin Systems氏の実施した調査によって,IT意思決定者の3/4が,データベースなどのステートフルなアプリケーションのコンテナ内での運用に関心を持っていることが明らかになった。関心の背景にある動機はワークロード統合とパフォーマンス向上の2つで,80パーセントがコンテナ採用による向上を考えている。
ステートフルなアプリケーションにはデータベース以外にも,HadoopあるいはSparkなどのビッグデータアプリケーションが含まれる。調査結果から,ステートフルアプリケーションを運用する企業の60%がLXC/LXDを使用していること,38%程度がDockerを採用していることが明らかになった。
データベースのようなステートフルなアプリケーションにとって,重要なのはデータの一貫性だ。 しかしながら,サードパーティによって対処されているDockerのPID 1シグナル問題は,アプリケーション状態の一貫性をもたらす原因ともなり得る。ソリューションは他にもあるが,Docker自体に含まれているものは存在しない。この問題はDockerコンテナ内でデータセントリックなアプリケーションを稼働する上で障害になるのではないか,という質問に対して,Robin SystemsのCMOであるSushi Kumar氏は次のように説明している。
コンテナには2つのタイプがあります – Dockerのようなアプリケーションコンテナは,単一のプロセスないしサービスを実行するように設計されているので,initなどのバックグラウンドサービスを含んでいません。その一方で,LXCやLXDなどのシステムコンテナは,本質的には軽量VMであるため,initシステムを含まないだけでなく,SSH可能なホスト名やIPアドレスを自身で保持して,VMとほとんど同じような動作をします。
調査結果は,データアプリケーションの運用に使われるコンテナテクノロジとしては,システムコンテナがより一般的であることを示している。
従来のデータベースサーバのセットアップ(RDBMSでもNoSQLでも)では,スケーラビリティは多くのリソース投入(CPUやメモリ)によって達成されることもあった。Kumar氏によれば,データベースをコンテナ化された環境に移行することで,CPUやメモリ増設が容易に管理できるようになる,すなわち,“データアプリケーションの実行プラットフォームとしてコンテナが自然である理由もそこにあるのです。”
コンテナで使用されるストレージバックエンドとして最も多いのは,AWS Elastic Storage(EBS)で,30%と報告されている。これはクラウドネイティブなアプリケーション – 少なくともAWSで動作するものについて – の適切な拡張手段として,コンテナが用いられていることを暗に示すものだ。