システム構築の主流「仮想化」と「クラウド」を知ろう

2017年4月21日(金)
山崎 翼吉田 祐介

はじめに

みなさん、こんにちは。早いもので、本連載も前半最後となりました。第4回の今回は、これまでに学んできたサーバやネットワークといった物理的資源を抽象化し、論理的に見せる「仮想化」という技術について解説します。各種システムの共通基盤として大規模な仮想環境を整備し、数千台規模の仮想サーバを稼働させている企業も珍しくなくなりました。

また、後半では最近勢いを増している「クラウド」についても解説します。弊社でも最近「AWS(Amazon Web Services)」や「Microsoft Azure」といったクラウドを使用したシステム開発の引き合いが多くなってきています。クラウドの登場によってインフラがどのように変わるのかについても触れていきたいと思います。

仮想化とは

1. 仮想化とは

「仮想化」は、物理的な構成を隠して、論理的に、かつ柔軟に構成するための技術です。例えば、4つのCPUを搭載した物理サーバの存在を隠して、1つのCPUを搭載した4台の論理サーバを構成することが可能になります。

では、なぜ「仮想化」を行うのでしょうか。その目的は「IT資源を効率良く使うこと」です。ここで言うIT資源とはサーバやストレージ、ネットワーク、アプリケーションなどが該当しますが、これらの全てに「使用されていない部分」があります。仮想化は、そのIT資源の「使用されていない部分」を「使用できる部分」に変えることができます。

例えば、1人暮らしのワンルームを思い浮かべてみてください。住人が外出している時は誰もその部屋を使用していませんが、住人が外出中でもその部屋を他人が使用できるようにすることが「仮想化」にあたります。 図1は仮想化される対象をまとめたものです。サーバのみならず、様々なIT資源を仮想化できることが分かります。

図1:仮想化の対象となるIT資源

2. サーバの仮想化

仮想化を具体的にイメージできるように、物理サーバの仮想化を例に解説します。物理サーバの仮想化には、以下の通り大きく2つの方式があります(図2)。

図2:物理サーバを仮想化する2つの方式

  • ホスト型
    物理サーバにインストールされたOSと仮想化ソフトウェア上で仮想サーバが稼働します。土台となるOSにはLinuxやWindowsなどがよく使用されます。アプリケーション感覚で仮想化でき、お手軽なのがメリットですが、OSの処理にも物理サーバのリソースが利用されるため性能面でデメリットがあります。
  • ハイパーバイザ型
    物理サーバにインストールされた「ハイパーバイザ」と呼ばれる仮想化ソフトウェア上で仮想サーバが稼働します。OSが不要なため物理サーバのリソースを制御しやすく、ホスト型よりも性能面でメリットがあります。皆さんが携わるシステムではこちらの方式が多いのではないかと思います。

物理サーバに搭載されているリソースの中で、仮想化の効果を期待しやすいものの1つがCPUです。サーバに搭載されているCPUは常に100%使用されているわけではありません。ワンルームの件を思い出してほしいのですが、部屋は24時間使用できても住人が外出している時は誰も使用していません。サーバの場合も同様で、24時間物理サーバが稼働していても、CPUを使用していない時間は多くあります。

1台の物理サーバ上で複数の仮想サーバを稼働させる場合、日中帯によく使用されるAPサーバと夜間帯によく使用されるバッチサーバのように、サーバの稼働特性を考慮して配置を考えたりします。私が以前携わったシステムでは、50台の物理サーバ上で500台近くの仮想サーバを稼働させました。単純計算すると1台の物理サーバ上で10台の仮想サーバが稼働していることになりますが、DBサーバなどCPUを多く割り当てるサーバもあるため一律な構成ではありませんでした。

3. 仮想化の特徴

もう少し詳しく仮想化の特徴を紹介していきましょう。仮想化により実現されることは数多くありますが、ここではよく着目される3つの観点から紹介します。

①可用性
システムが継続して稼働し続けることを「可用性」と言います。仮想サーバは物理サーバと直結していないという特性があるため、物理サーバに障害が発生した場合でも他の物理サーバへ瞬時に切り替えて稼働させるといった柔軟性を持たせることができます。また、仮想サーバの実態はファイルの集合体で、容易にバックアップやリストアできるという特徴があるため、物理サーバと比較すると復旧も容易にできます。

②拡張性
システムのリソースを自由に拡張・縮小できることを「拡張性がある」と表現します。例えば、物理サーバでHDDの容量を拡張する場合には、HDDを発注して搭載するまで2週間は必要ですが、仮想サーバの場合には設定画面でHDDの容量を変更するだけで拡張できてしまいます。また、仮想サーバ自体を追加したい場合も、既存の仮想サーバやテンプレートから複製するだけですぐに追加できます。実際に500台の仮想サーバを構築した時もテンプレートになる3つの仮想サーバを構築して、あとはひたすらコマンドで自動複製していました。

③運用保守性
システムの復旧や変更作業がしやすい状態を「運用保守性が高い」と表現します。仮想化すると物理的なIT資源を一元管理しやすくなります。1つの管理画面で複数の仮想サーバを管理したり、コマンドで仮想サーバの運用を自動化することも可能です。

メリットの多い仮想化ですが、仮想化しているが故に細心の注意が必要な場合もあります。例えば、1台のサーバのCPU数を変更しているはずが、他のサーバのCPUにも影響を与えてしまったことがありました。仮想サーバがどのCPUを使用しているのか、どのタイミングで設定が反映されるかを正しく理解しておく必要があります。また、容易に複数の仮想サーバを操作できてしまう側面もあり、仮想化に不慣れな人が作業対象ではない仮想サーバを停止したり、仮想サーバ自体を削除してしまったりといった事故も現場では起きています。

仮想化を実現する技術や製品は数多くあり、それぞれに特徴があります。インフラエンジニアにはその特徴を把握して、広い視野で仕事をすることが求められています。

<コラム>プロジェクトに関わるエトセトラ:基本設計

連載を通して、インフラエンジニアが関わる「プロジェクト」に注目し、さまざまな側面から解説していく本コラム。今回は、基本設計について解説します。

基本設計では、要件定義をインプットに設計を進めます。お客様の要望は要件定義で認識合わせをしているので、要望とズレなく設計できるかが求められます。具体的な設計内容はシステム構成、ハードウェアの実装方針、OS、ミドルウェアの構成などです。「災害でサーバが停止した時はどのように対応するか」「システムをどのように拡張するか」といったことも基本設計で決めていきます。

基本設計を家の建設に例えると、建築家がイメージを描き始めるあたりからでしょうか。どのような形の家を建てるか(システム構成やハードウェアの実装方針)を作成し、基礎(OS)や設備(ミドルウェア)を決めていきます。その他にも、耐震性や増築する方法を決めておくことも基本設計に当たります。

ウォーターフォール型開発のプロジェクトではよくある話ですが、基本設計で決めるべき内容が決まっていないと、詳細設計で苦労します。工程ごとに対応する会社が異なる場合もあり、そのような時には設計不備が大きな問題に発展することもあります。基本設計は責任が大きくプレッシャーもかかる工程ですが、「どのようにお客様の要望を実現するのか」を考え、システム全体の設計を考えることができることが醍醐味でもあります。

(第5回へ続く)

クラウドとは

1. クラウドとは

近年、多くの企業でITコストの削減が課題となっています。また、コスト削減だけでなく、加速するビジネスの変化に迅速かつ柔軟に対応することも求められています。そのため、サーバ発注(1ヶ月程度)⇒構築⇒テスト⇒リリースといった従来のサイクルではビジネスチャンスを逃してしまうことも考えられます。それらの課題を解決するための実現方法として「クラウド」があります。

クラウドとは、インターネットなどのネットワークを通じて様々なサービスを提供するシステム形態のことです。自社が持つシステムと異なる点は、クラウドでは「ユーザはサービス提供を受けるのみであり、実際のコンピュータがどこでどのような構成で稼働しているのか、ネットワークがどのように接続されているのかを意識する必要がない」ことです。各種サービスはWebブラウザから利用でき、操作性もシンプルなため、サーバ1台を起動するだけなら数分で対応できます(図3)。

図3:クラウドの各種サービスはWebブラウザから利用できる

2. サービス形態

クラウドの主なサービス形態は、大きく以下の4つに分かれます。

  • IaaS
    "Infrastructure as a Service”の略です。システムで使用するCPU、メモリ、ハードディスクなどのハードウェアや、そのシステムで稼働するOS、ネットワーク環境を提供するサービスです。ユーザが使用するミドルウェアやアプリケーションは利用者が導入・設定する必要があります。
  • PaaS
    “Platform as a Service”の略です。アプリケーションが稼働するためのプラットフォームを提供するサービスです。PaaSはIaaSの構成要素に加え、アプリケーションの開発・実行環境に必要な開発ソフトウェアやミドルウェアを提供します。
  • SaaS
    “Software as a Service”の略です。アプリケーションソフトウェアの機能を分割し、ユーザが必要とする機能だけを提供します。Microsoftが提供しているOffice365が分かりやすい例でしょう。
  • DaaS
    “Desktop as a Service”の略です。クライアントのデスクトップ環境を提供するサービスです。ユーザはディスプレイとキーボードを準備するだけで利用できます。手元にデータが残らないためセキュリティ面でのメリットもあります。

クラウドに対して、自社のサーバやネットワークを使用してシステムを構築し運用すること「オンプレミス」と呼びますが、それぞれの管理範囲を比較したものが図4です。

図4:オンプレミスとクラウドにおける管理範囲の比較

図4を見て分かるように、On-Premise→IaaS→PaaS→SaaS と利用者が管理する部分が減っていきます。 言い換えると、利用者側では制御できない部分が多くなります。制御できない部分が増えるにしたがって、クラウドのサービス内容に合わせた設計を検討する必要が発生します。

3. 最近の動向

2017年1月に三菱UFJフィナンシャルグループ(MUFG)が、メガバンクで初めてクラウドサービスのAWS(Amazon Web Services)を本格的に採用する方針を公表しました。これまで金融系では扱う情報の重要度から「クラウド化は難しいのでは」と言われてきたため、このニュースはIT業界で話題になりました。

どの企業でも同じですが、始めから重要な基幹システムをクラウドに移行するのではなく、外部に影響の少ないシステムから移行を進めているのが現状です。また、全てのシステムをクラウドに移行するのではなく、システムの特性に応じてオンプレミスとクラウドの両方を併用するハイブリット構成も利用されています。

こうした各企業のクラウド採用事例が増えていくことで、「クラウドファースト」「クラウドネイティブ」といった動きがさらに活発化していくことが予想されます。

  • クラウドファースト
    企業がシステムを設計・構築する際に、オンプレミスではなく第一にクラウドサービスの利用を検討すること
  • クラウドネイティブ
    クラウドサービスを最大限利用し、その特性や利点を生かしてアプリケーションを実装すること

クラウドにおけるインフラ

1. 必要となる知識

クラウド事業者が提供するクラウドサービスは、彼らの責任において運用されています。普段は利用者がそのサービス内容を気にする必要はありません。また、サービスの使い方さえ知っていればクラウドを利用できるので、これまで解説してきたようなインフラの知識は不要と考える方もいるかもしれません。

しかし、クラウドのベースには仮想化技術が使用されています。AWSは「Xen」、Microsoft Azureは「Hyper-V」、Google Cloud Platformは「KVM(Kernel-based Virtual Machine)」と別々の仮想化技術を採用しており、それぞれ特徴があります。また、クラウド事業者が提供するサービスには制約があり、必ずしもお客様の要件に合うとも限りません。サービス化されているが故にカスタマイズすることも難しく、代替案を検討することもあります。

良いシステムを作るためには、一歩踏み込んだ知識を元にメリット・デメリットを整理し、全体を俯瞰して設計をしていく必要があります。そのためには表面的なクラウドのサービス知識だけでなく、やはりサーバやネットワーク、OSやミドルウェアといったインフラの知識が必要となってきます。実際に、私もデータセンターでラックが並んでいるのを見たり、ケーブルの配線をしたり、サーバにメモリを挿したりといった経験があるので、クラウドを扱う場合にもより考慮されたシステム設計ができていると考えています。

2. 自動化

クラウド事業者が提供する自動化ツールを利用できることもクラウドを利用するメリットの1つです。例えば、基本となるマスタテンプレートを元にサーバ用途ごとに異なるミドルウェアをインストールしたり、構築後のテストまで一貫して自動化したりといったことが自動化ツールで行われています(図5)。

図5:自動化ツールを使用できることもクラウド利用のメリットの1つ

ただし、自動化ツールにより構築時間は短くなる一方で、自動化の仕組みを作り込むところには時間が必要となるため、極端に時間を削減できるわけではありません。何度繰り返しても同じ結果となることを「冪等性(べきとうせい)」と言いますが、同じ環境を何度でも即座に構築できる点も自動化のメリットです。「作っては壊す」といったクラウドらしい使い方にマッチしていると言え、数か月しか使用しないキャンペーンサイトのようなシステムには非常に有効です。

おわりに

今回は、「仮想化」と「クラウド」について解説しました。スマートフォンが代表的ですが、技術の進歩は隠れた部分も多く生み出します。今回のテーマはまさに様々な技術を隠す性質のものですが、皆さんにはぜひその隠れた部分にも注目していってほしいと思います。

次回は、「ミドルウェア(Web、AP、DB)」をテーマに解説します。オンプレミスでもクラウドでも基本となる技術要素です。次回も楽しみにしていてください!

株式会社BFT
縁の下の力持ちといったイメージのインフラエンジニアに興味を持ち、2015年に関西から上京し、株式会社BFTへ新卒として入社。社員の交流を深めたいとの思いから、現在は社員会の活動にも力を入れている。趣味は4才から続けているテニス、世界ランクTOP10を目指し日々精進中。
株式会社BFT
某SIerを経て、2012年に株式会社BFTへ入社。現在、課長としてお客様先と自社の社内業務に追われる毎日を送っている。ITとは無縁の法学部出身でこれからはPCを触れないと時代に乗り遅れるといった想いでIT業界に入り早10数年。趣味はテニスだが、練習をせずにすぐに試合をするため一向に上達しない。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています