スムーズな開発を実現するためのコンテナ仮想化

s_cover_201705-1.jpg昨今、開発競争力を高めるためには、短いスパンで開発スピードをあげることが必要となってきていますが、システムの開発から導入するうえで以下のような課題に直面したことはないでしょうか

「開発から運用までにいくつかの環境を構築する必要があるが、それぞれに差異があるため、スムーズに開発が進行できない。」

「一部のみの改修にもかかわらず、システム全体の入れ替え作業が必要になってくる。」

これらが要因となり、開発から実際の運用までのリードタイムが長くなってしまったり、システム全体をとめる必要が出てくるため業務を停止させる必要が出てきます。特に、 顧客接点を担うCRMシステムやコールセンターにおいては導入の遅れやシステムの停止は大きな機会損失につながりかねません。

今回はこのような課題を解決するための手段として、コンテナ仮想化についてご紹介したいと思います。


コンテナ仮想化とは?

コンテナ仮想化は2010年台後半から盛り上がってきた仮想化技術のことです。ITシステムの開発や運用において変化に対応する方法として、サーバ仮想化の導入がありました。サーバ仮想化は1つのホストOS上に各アプリケーション単位にゲストOSを用意し、アプリケーションを稼働させます。この技術はハイパーバイザの機能により、仮想マシン(仮想的な物理マシン)を作り出し仮想マシン内部でそれぞれ異なるOS環境を実現します。しかし、複数のOSを集約した際に性能が劣化する、ホストOSとゲストOSの仲立ちをするハイパーバイザにより障害発生時に問題の判別が複雑化するといった点が問題視されてきました。コンテナ仮想化はサーバ仮想化とは異なり、あくまで稼働するOSはサーバ1つにつき1つです。1つのホストOS上にコンテナと呼ばれる空間を作成することで、マルチOS環境を実現することができるため、複数のITシステムを1つのOS環境で実行することができるようになります。

コンテナはアプリケーションの実行にゲストOSを必要としないため、ホストOSからはプロセスの形で見えます。各プロセスとして実行されるため1つのOS環境でマルチOS環境を実現することができます。サーバ仮想化とは異なり、コンテナ内部でOS一式が稼働するわけではありません。


コンテナ仮想化がもたらすメリット

コンテナ仮想化を用いることで開発から運用に至る流れをより効率的に、より速く、より確実にすることができるようになります。

ハードウエアの観点ではインフラを効率的にかつ迅速に使いたい、ソフトウエアの観点では継続的な開発や運用を続けたといった点を簡単に実現することができます。

アプリケーションの開発では開発→テスト→運用という工程で進みます。それぞれが何かしらの環境で行われますが、開発のための環境とテストのための環境、そして実際に運用を行う環境はOSやミドルウエア、IPアドレスが異なっていることが多いでしょう。またマシン性能もそれぞれ異なることが多いでしょう。このような環境間の差異を吸収し、開発言語やミドルウエア等の制約を受けない共通環境を実現することで、リードタイムが短縮され、効率的でよりスピーディーな提供ができます。また、システムをマイクロサービスとして分割してそれぞれをコンテナにすることにより、一部のコンテナのみの入れ替えでシステムの改修を行うことも可能です。さらに、オーケストレーションシステムを用いる事により、ホストOSのCPUやメモリを有効に利用するだけでなく、必要に応じてアプリケーション数の増減を管理することも可能となりリソースの効率的な利用や障害時の復旧を容易とすることができます。

これらにより、先にあげたような課題を解決し、短いスパンで開発スピードをあげることが可能となります。


まとめとして

国内においてもさまざまな業種の企業でコンテナ仮想化の導入は進んでいます。CRMやコンタクトセンターシステムにおいても、顧客価値最大化という点からもスピード間を持った開発を行い、常によりよいシステムを提供し続けることが大切となってきます。

今後も最新の技術動向に注視し、よりよいシステムのご提供を行っていきます。

vs_toiawase.png

RELATED POSTS