インフラレベルの抽象化
Infrastructure abstraction
(株式会社Aiming)
(Aiming Inc.)
Docker含め、インフラレベルの抽象化技術全般が発展して来たことで、ゲーム分野でも柔軟にリストラクチャリング可能なインフラ構築の選択肢が増えて参り来たなと実感しています。
セキュリティや運用面のリテラシーは勿論必要とはいえ、Docker自体の設定などは、パイプラインを扱う人間なら即座に習得し使いこなすのは可能だと言える難易度です。
しかし一方、インフラ構築の柔軟なリストラクチャリングとその設定の際の選択肢からベターなものを選ぶ際は、ゲーム会社やアセット制作に関わる様々なアーティストの声を反映し、うまく設計する必要があります。
この記事ではそのうちの一手段であるDockerの基本的な仕組みを解説します。
under construction...
■概要
■Overview
Dockerとは、非常に軽量なコンテナ型仮想化ソフトウェアです。2013年にオープンソースのプロジェクトとして公開されました。
当初はソフトウェアの開発やテストなどで多用されておりましたが、現在ではプロダクション環境としてパブリッククラウドからオンプレミスシステム上にシステムが構築されるケースなどが増えています。
Dockerの特徴は他の仮想化ソフトウェアと比較して、仮想化した環境の配布、実行が容易な点です。
更にイメージのカスタマイズ、導入運用の手軽さもあり人気が出てきております。
under construction...
■仮想化とは
■About virtualization
1台のPCで複数のOS(環境)を同時に動かすことができる技術です。仮想化ソフトウェア上で動かすOS(またはアプリケーション)は、一般に仮想マシンと呼ばれます。
仮想化ソフトウェアは仮想化方法により大別されます。Dockerはコンテナ型仮想環境で、OSレベル仮想化を行います。
また、別の方式としてはハイパーバイザによる仮想化というのがあり、ハイパーバイザによる仮想化には、ハードウェア上で直接仮想化ソフトウェアを稼働させるネイティブハイパーバイザ(ベアメタルハイパーバイザ)と、WindowsやMac等でアプリケーションとして利用するホストハイパーバイザと2つがあります。
ネイティブハイパーバイザの例としてはVMware ESXiや、Windows Hyper-V、Xen、KVMがあり、ホストハイパーバイザの例は、Oracle VM VirtualBox、VMWare Workstation等があります。
Dockerのコンテナ型仮想環境は、ハイパーバイザを用いたシステムとは仕組みが違うため後述します。
under construction...
■OSレベル仮想化について
■Operating-system-level virtualization
OSを仮想化します。動いているOSはベースとなる1つのみで、その上でコンテナと呼ばれる仮想OSを複数実行できます。
従って、異なるOSやバージョンを各コンテナ上で動かすことはできませんが、異なるアプリケーションを各コンテナにインストールし利用することが可能です。
この方式は他の仮想化を実現する技術と比べ、パフォーマンスが比較的高く、コストも比較的低いのがメリットとなります。
※Docker for WindowsとDocker for Macはハイパーバイザ型の仮想化ソフトウェアを用いて実現しているため、Dockerと名乗るもの全てが純粋なコンテナ型仮想環境ではありません。
under construction...
■コンテナ型仮想化の利用ケース
■Use case of container-based virtualization
コンテナは既存の全ての仮想マシンを一様に代替するものではありません。コンテナ型に適していないアプリケーションもあるために注意が必要です。
コンテナ型はマイクロサービス型のアプリケーションに適していると言われ、モノリシックな設計のアプリケーションはコンテナ型に適していないと言われています。
マイクロサービス型のアプリケーションとは、構成する要素を小さくし、疎結合の状態で統合することで複雑なアプリケーションを構成するアプローチです。
システムを拡張する際にはシステムを作り直すのでは無く、新しい要素を追加します。一つの大きなコンポーネントを作るのではなく数多くの小さなコンポーネントを組み合わせて一つのアプリケーションを構成します。
それぞれの構成要素はコンテナの構成に置き換えすることができます。アプリケーションの構成要素であるコンテナは互いにリンクされ総合的なアプリケーションを形成します。
アプリケーションの機能を拡張する場合は、新しくアプリケーションを作り直すのではなく、適切な構成要素のコンテナを追加することで拡張できるようになります。
under construction...
■コンテナ型仮想化のデメリット
■Disadvantages of container-based virtualization
ハイパーバイザによる仮想化ソフトウェアで実行した仮想マシンは高いレベルの相互分離が実現されます。(準仮想化やパススルーを用いた場合は異なりますが)ハイパーバイザによって実現された仮想マシンのハードウェアリソースは全て仮想化されます。
仮想マシンはアプリケーションの欠陥やウイルス、侵入や攻撃などの事象により問題が発生したとしても、そのリスクが別のVMに波及することはありません。
しかし、コンテナ型仮想化ソフトウェアではOS(カーネル)やコンポーネントを共有し、Linux環境のルートアクセス権等高いレベルの権限が既に与えられます。つまり分離レベルは低く、アプリケーションの欠陥やウイルスや侵入、攻撃が基盤のOSや別のコンテナに波及する可能性は高くなります。
DockerのコンテナはOSの権限を分離し、脆弱なセキュリティ体制を制限するようになっておりますが、よりセキュリティを向上させるためには、ハイパーバイザ型の仮想化ソフトウェアを用いて仮想マシンを作成し、その上でコンテナを動かすことで潜在的な影響範囲を制限する事ができます。
under construction...
※会合までに資料の内容を更新する可能性があります。
※There is a possibility to update the contents of materials by the meeting.