IBM Cloud Pak for Applicationsの新規販売は終了いたしました。
今後のアプリケーションランタイムソリューションは、
アプリケーションを稼働させる環境として、コンテナに注目が集まっています。
デジタルサービスに対する顧客のニーズが多様化し、かつ加速度的に変化している中、その顧客ニーズに対応しようとしている企業にとって、DevOps によるアプリケーションの開発・運用と共にコンテナ化には様々なメリットがあるのがその理由です。
本記事では、そんなアプリケーションの迅速な開発・展開が可能となるコンテナ化について、従来の仮想マシン上でアプリケーションを稼働させる場合との違いやメリットを解説します。
Index
- コンテナとは?
- コンテナと従来の仮想化技術との違い
- コンテナのメリット
- コンテナ化の注意点
- 今日のビジネスにおけるコンテナの活用シーン
- IBM Cloud Pak for Applications について
- この記事に関するお問い合わせ
- 関連情報
コンテナとは?
コンテナとは、アプリケーション本体やライブラリといったアプリケーションの実行環境をパッケージングした上で、ホスト OS のコンテナエンジン上でプロセスやネットワークといったリソースを切り離して仮想環境を構築する技術のことです。
コンテナの中核をなしているソフトウェアは、主に以下の2つです。
-
コンテナエンジン
コンテナエンジンは、ホスト OS 上でのコンテナの作成、削除、実行などを担います。代表的なコンテナエンジンとしては Docker がよく知られています。
-
オーケストレーションツール
単に開発環境としてではなく本番環境もコンテナ化する場合には、コンテナの運用管理を徹底する必要があります。そこで登場したのが、オーケストレーションツールです。
オーケストレーションツールは、コンテナ起動中のロールアウトやロールバック、データを保持するための外部ストレージのマウント、クラスタの構成、各コンテナの管理やログといったコンテナの運用に関わる様々な役割を担います。
代表的なオーケストレーションツールとしては、Kubernetes や OpenShift がよく知られています。
コンテナと従来の仮想化技術との違い
これまで、アプリケーション稼働環境の構築手法としては仮想マシン型が一般的でした。
仮想マシン型の場合、物理サーバー上にアプリケーションやライブラリのほかにゲスト OS を含む仮想マシンを複数実装することで仮想環境を構築し、リソースの効率的な利用を実現します。
一方でコンテナの場合、各コンテナはアプリケーション本体やライブラリなどで構成されており、ゲスト OS は含みません。コンテナエンジンがホスト OS からネットワークやリソースを切り離した上で、単一のホスト OS 上での複数アプリケーション(コンテナ)の実行を制御しているからです。
これにより、仮想マシン型と比べるとより小さなリソース(CPU・メモリ・ディスク)でアプリケーションを稼働させることができるようになります。
コンテナのメリット
前項で述べたコンテナと仮想マシン型の仮想環境の実装を比べると、コンテナには次のようなメリットがあります。
1. 起動が速い
仮想マシン型の場合、アプリケーションを起動するためにはゲスト OS の起動をともなうため、アプリケーションが利用可能となるまでに数分から数十分程度の待ち時間が発生します。
一方コンテナの場合、アプリケーションを実行するための各コンテナはゲスト OS を含まないので、ゲスト OS を起動する待ち時間が発生しません。そのため、コンテナ起動後は数秒から数十秒程度でアプリケーションの利用を開始できます。
2. 処理が速い
仮想マシン型の場合、各仮想マシンからハードウェアにアクセスする際にハイパーバイザーとホストOS を経由します。そのため、物理環境と比べると処理速度が低下する難点があります。
コンテナの場合には、各コンテナからハードウェアへのアクセスをホスト OS が直接制御します。そのため、仮想マシン型と比べて物理環境に近い処理速度で仮想環境を利用可能です。
3. ハードウェアのリソース消費を減らせる
仮想マシン型の場合、アプリケーションを実行するためのサーバーを増やす(スケールアウト)にはアプリケーションやライブラリのほかにゲスト OS を含む仮想マシンを追加しなければなりません。
特にゲストOS自身が多くのリソースを消費するので、スケールアウトすることによってハードウェアのリソースを消費し、アプリケーションで利用できるリソースが逼迫してしまいます。
繰り返しになりますが、コンテナの場合、各コンテナはゲストOS を含みません。
そのため、ハードウェアのリソース消費を抑えながらアプリケーションをスケールアウトすることができます。
4. 環境を選ばず実行できる
ゲスト OS を含む OS 単位で構成された仮想環境の仮想マシン型とは異なり、コンテナはアプリケーション単位で構成された仮想環境です。
そのため、作成したコンテナは、パブリッククラウドやオンプレミスといったアプリケーションの配置場所や物理サーバー・仮想サーバーのようなサーバー環境の違いに依存せずに実行できます。
5. ほかのアプリケーションから分離された開発環境で作業できる
エンジニアは、コンテナ上で開発したアプリケーションをほかのアプリケーションから分離された開発環境で扱えるようになります。
また、コンテナには特定のバージョンのプログラミング言語ランタイムやライブラリ、アプリケーションの実行に関わる依存関係などを組み込めるので、最終的にそのコンテナがどの環境にデプロイされてもアプリケーションとしての一貫性を保つことが可能です。
コンテナ化の注意点
前項で挙げたように、アプリケーションのコンテナ化には様々なメリットがあります。
一方で、コンテナ内でデータを保持する場合には注意が必要です。コンテナを削除すると、コンテナ内のデータも一緒に削除されるからです。
したがって、コンテナで扱うデータを保持する場合には、データを永続化させるための構成を検討する必要があります。
具体的な方法としては2つあります。
-
- コンテナエンジンを稼働させているホスト OS 上にデータを保管する
- 外部(共有)ストレージにデータを保管する
1.では、コンテナ上で保存するデータをホストOS上の領域に保管する設定ができます。
しかし、サービスを提供する本番環境では可用性・拡張性を確保する必要があり、一般的には複数台のホストOS 環境を用意することになります。
この方法の問題点として一番大きいのは、アプリケーションのスケールアウトや、障害対応のために当初稼働していたホストOS とは別のホストOS でコンテナを稼働させるといった場合に、データの引き継ぎが行われず結果としてデータロストが発生してしまう可能性があります。
2.では、複数のホストOS からアクセス可能な共有ストレージにデータを保管します。
その場合は1.で実現できなかったホストOS をまたいだコンテナのスケールアウト・移動にも対応できるようになります。
また、コンテナを停止するとコンテナ内に保存していたデータが消えるという特性上、仮想マシン型のようなバックアップ取得は難しくなります。
そのため、アプリケーション内にバックアップ機能を追加する、データの保管先を意識した設計に変えるといった考慮が必要になります。
今日では、コンテナ化にあたっての懸念材料となるデータの永続化について、バックアップ機能を持ったオーケストレーションツールや NAS とのパッケージングなどによって解消できるソリューションも登場しています。
今日のビジネスにおけるコンテナの活用シーン
ここまで解説したように、アプリケーションのコンテナ化には様々なメリットがあります。冒頭でも述べたように、これらのメリットは顧客ニーズの多様化に対して自社のデジタルサービスをスピーディーに適合させようとしている企業にとって大きなインパクトがあります。
今日のようにビジネス環境の変化が著しい中で、企業は顧客ニーズを自社サービスに素早く反映することが求められています。
とはいえ、これまでの「ウォーターフォール」型手法ではスピーディーな実現が難しくなります。「アジャイル開発」的な発想で自社のデジタルサービスを日々アップデートしていく必要があります。
これまで、デジタルサービスはモノシリックな形で作り上げるのが一般的でした。モノシリックとは、単一のアプリケーションとしてデジタルサービスを作り上げるソフトウェアのアーキテクチャのことです。
小規模なデジタルサービスの開発には適していますが、コードベースの拡大に伴って修正・テストに時間がかかる・コードのバージョン管理といったメンテナンスが煩雑化しやすいという難点があります。
そのため、サービスの改修や追加をスピーディーに実行することが難しく、高頻度でのアップデートを前提としたデジタルサービスを開発するアーキテクチャに適しているとは言えません。
こうした中で、多くの企業の関心を得ているのがデジタルサービスのマイクロサービス化です。
マイクロサービスとは、細分化された個々のサービスを連携させて1つのデジタルサービスを作り上げるというソフトウェアのアーキテクチャです。すでに一部の企業は、自社のデジタルサービスをマイクロサービス化した上で、それぞれを高頻度でアップデートすることにより顧客ニーズに素早く対応しています。
そして、前述したようにアプリケーションをコンテナ化することによって、開発者はほかのアプリケーションから分離された環境で開発を行うことができるようになります。
これはつまり、アプリケーションをマイクロサービス化・コンテナ化することによって、コンテナ上で開発したアプリケーションをマイクロサービス化した機能単位でスピーディーに開発できるようになるということです。
したがって、アプリケーションのコンテナ化・マイクロサービス化によってマイクロサービス単位のアップデートを繰り返すことが容易にになり、顧客ニーズを早期にキャッチアップした継続的なアップデートを行うことで顧客満足度を向上し企業価値を高めることができます。
IBM Cloud Pak for Applications について
本コラムは、アプリケーションのコンテナ化とそのメリットについて解説しました。
今日、デジタルサービスに求められる必須要件としてのアプリケーションのコンテナ化をスピーディーに実現できるツールの1つが、IBM Cloud Pak for Applications です。
IBM Cloud Pak for Applications は、Red Hat OpenShift を基盤としてアプリケーションのモダナイゼーションを支援する製品です。
Cloud Pak シリーズには他に、データ管理、システム連携、マルチクラウド管理、セキュリティといった様々な機能に特化した製品があります。
ユーザーは、IBM が築き上げたベストプラクティスとして提供されるコンテナ・イメージを活用できるので、オンプレミスやクラウドといった環境を問わず、IBM Cloud Pak for Applications を利用して既存アプリケーションのコンテナ化を実現できます。
アプリケーションのコンテナ化に関心をお持ちの方は、ぜひ、IBM Cloud Pak for Applications をご検討ください。
この記事に関するお問い合わせ
エヌアイシー・パートナーズ株式会社
企画本部 事業企画部
この記事に関するお問い合せは以下のボタンよりお願いいたします。
関連情報
- 全ての企業が AI カンパニーになる!「IBM THINK Digital 2020」に参加した (ブログ)
– 全世界から9万人以上の参加者が! - 【やってみた】IBM Cloud Pak for Applications導入してみた:概要編 (ブログ)
– シリーズ第1回目!概要編として検証の目的・背景や環境周りをご紹介します。 - IBM Cloud Paks シリーズ ご紹介資料 (資料) ※会員専用ページ
– 6つの Cloud Paks について、お客様の理解度に応じて必要な資料を選択できる形式になっています。