DX時代で加速するアプリ開発のアジャイル化 コンテナの活用とセキュリティ対策に必要なこととは
- アフターレポート
- コンテナ
- DX
- ../../../article/2021/08/dx_seminar.html

アプリケーションの開発・管理を効率的に行うための仮想化技術の一つ。コンテナ内にアプリケーションの実行に必要な環境がパッケージ化されているため、環境移動が容易であり、新しい環境でも同じように動かせる。一般的な仮想化技術とは異なり、ホストOSを共通して使用しているため、システムリソースの節約や処理速度の向上が期待できる。
コンテナ(container)とは、アプリケーションやその実行に必要な環境をパッケージ化する仮想化技術のことを指します。コンテナというと、貨物を輸送する際に使用する箱のイメージですが、IT分野においても同様のイメージです。コンテナという箱のなかにアプリケーションの動作に必要なライブラリやミドルウェア、依存関係をまとめておくことで、自由に運ぶことができるようになり、環境の構築や移動、運用が容易になります。
従来の仮想化では、物理サーバ上に作成した仮想マシン内にゲストOSをそれぞれ構築します。一方で、コンテナではコンテナエンジンが基本的な機能を担当するため、ゲストOSを必要としません。
ゲストOS関連のシステムリソースを節約でき、処理速度の向上や開発・運用にかかるコストの削減を図れます。
コンテナの大きなメリットは、一度アプリケーションの実行に必要なものをパッケージ化してしまえば、自由に環境を移動させ、どんな環境でも同じように動作できることです。アプリケーションを動かすのに必要なOSやミドルウェアを一から用意する必要がなくなること、環境の違いを考慮せずに済むことで、開発効率が向上し、リリースサイクルを短縮できます。
ゲストOSが不要な分、システムリソースを必要最低限に抑えることができます。これにより処理速度が向上し、迅速な開発や頻繁な機能強化が可能です。
コンテナではホストOSを共有して使用するため、複数のOSを使用することができません。自由にOSを変更することができないので、異なるOS環境やバージョンでテストができないというデメリットもあります。
複数の環境が一つのゲストOSで動くため、共有部分に不具合が発生すると、コンテナ全体に悪影響を及ぼします。コンテナを導入する際は、リソース状況や健全性のモニタリング、脆弱性の発見を行うソリューションも併せて検討すると良いでしょう。