第1回 コンテナ仮想化とは?モダンアプリケーションへの最適なアプローチ

なぜ「モダンアプリケーション」なのか

ビジネスが急激に変化を遂げる昨今においては、アプリケーションも従来とは異なるスタイルを要求される場合があります。

「モノリシックからマイクロサービスへ」「APIによる連携手法の発達」この2大背景をもとに、ユーザはより高度なテクノロジーを望むようになりました。もはやビジネス×ITにおいては、イノベーションをただ促進すればよいということではなく、質の高いUXを維持したまま、開発したテクノロジーをいかにスピーディに市場投入できるかを重要視しなければなりません。

アプリケーションも例外はなく、「スケーラブル性」「可用性」「俊敏性」をもった、より高い次元でDXを実現するもの=「モダンアプリケーション」が、選択肢の一つとして数えられています。

モダンアプリケーション開発を実現する「コンテナ仮想化」とは

「サーバ仮想化」との違いから見る「コンテナ仮想化」の特徴

何十、何百万という将来的なユーザに対するスケーリング、世界規模の持続能力、ユーザ操作へのミリ単位でのレスポンスといった、ハイクオリティを要するモダンアプリケーション。クラウドネイティブなアプリケーション設計が求められるのはもちろんですが、その開発戦略においては「コンテナ仮想化」がファーストステップです。

「コンテナ仮想化」について、よく比較対象となる「サーバ仮想化」との違いから、その特徴を見ていきましょう。

サーバ仮想化では、サーバ上で仮想化ソフトウェア(ハイパーバイザーを指す。VMwareのESXi、LinuxのKVM、MicrosoftのHyper-Vなど)を実行し、ハイパーバイザー上でそれぞれゲストOSを含んだ仮想的なマシン(VM)を払い出すことで、ホストOSとは独立した実行環境を構築します。

一方で、1つのホストOSを共有しつつ、コンテナ管理ソフトウェア(Dockerなど)を実行し、アプリケーションが入った「箱」=「コンテナ」を積むことで、独立したアプリケーション実行環境を構築するのが、コンテナ仮想化です。

「アプリケーション実行環境を隔離して構築する」という点では、両者に違いはありません。隔離して構築するという特徴から、両者にはあらゆる環境でアプリケーションを開発・実行できる「可搬性」が担保されています。

しかし、VMごとにOS含むサーバ資源を内包するサーバ仮想化と比較して、同一OSを共有するコンテナ仮想化は、圧倒的にオーバーヘッドが少なく、コンテナ自体も非常に軽量(サーバ資源を最小限に抑えて)で構築されていきます。

コンテナ仮想化を使うことで、アプリケーションを高速デプロイできる

たとえば、たった2つのコマンドでwebサーバを起動させるなど、コンテナ仮想化はその軽量性から、アプリケーションのデプロイを高速で実現します。

例)たった2つのコマンドを入力するだけで、apacheをコンテナで起動させることができる

サーバ仮想化においては、それぞれのVMにOSを抱えているため、アプリケーション実行までには多少の時間を要することは否めません。一方で、コンテナ仮想化では初めからOSは起動している状態なので、サーバ仮想化よりも少ないステップでアプリケーションをデプロイできます。

マルチクラウドの観点からも高まるコンテナへの期待

コンテナは、AWSやMicrosoft Azure、GCPといった各パブリッククラウドでも実行可能です。近年では、それぞれのパブリッククラウドで「Kubernetes(コンテナ仮想化ソフトウェアの代表格「Docker」によるコンテナを統合管理するオープンソース・ソフトウェア)」のマネージドサービスがリリースされるなど、クラウドサービスが追従することでコンテナの地位を確固たるものとしています。

コンテナ前提のサービスが展開されるなど、パブリッククラウドでも必須となりつつあるコンテナ仮想化。マルチクラウドの観点から見ても、その期待値は高いといえるでしょう。

【Kubernetes製品群「VMware Tanzu」の実力を探る】コラム一覧

富士ソフト VMware 仮想化ソリューションのご紹介

 
 

  山本 祥正
山本 祥正(Yoshimasa Yamamoto)
執行役員 ソリューション事業本部 副本部長

この記事を読んだ人はこちらの記事も読んでいます。
社会の入り口、セキュリティの入り口
column
はじめまして。渡辺露文と申します。富士ソフトでセキュリティ関連を担当しています。この度、技術コラムのセキュリティを担当することとなりました。...