役割分担/仮想化/クラウド


 コンピュータにはいろいろのタイプがありますので、ここでまとめてみたいと思います。コンピュータはその処理能力や、ネットワーク上の役割などによって分類できます。また、最近では、コンピュータの中に仮想のコンピュータを作るというアイデアも実用段階に入っています。更に、この仮想化を推し進めると、インターネット上のどこかに仮想コンピュータをたくさん作って、リモートからの処理依頼に対応するシステムを構築することもできます。




1 いろいろのタイプのコンピュータ

 コンピュータにはいろいろのタイプがありますが、これを性能や役割分担などで分類してみようと思います。


 

1.1 コンピュータの性能基準

 コンピュータの性能は様々な要素によって決まってきますが、性能を決める大きな要素としてはCPUの性能、メモリの容量、ストレージの容量があります。ここでは、この3つについて考えてみたいと思います。


1.1.1 CPUの性能

 CPUの性能は主として、「ビット数」、「クロック周波数」、「コア数(CPUの個数)」で決まってきます。

 CPUの性能はWindows10の場合は、コントロールパネル>システムとセキュリティ>システムで表示することができます。ビット数は少し古いタイプのパソコンでは32ビット、最近購入したものなら多分64ビットとなっていると思います。クロックは**GHzと表示されます。コア数はCore2 Duo CPUのような感じになっていると思います。


1.1.1.1 ビット数
 ビット数はCPUが一度に処理できるデータの大きさと言われています。一般的にはビット数が大きければそれだけ処理能力が高いとされています。ただ、このビット数が何を表しているか、今一つはっきりしないところがあります。

 CPUの逐次的な動きを解析した「コンピュータの仕組み」では、CPU内のALUとレジスタ、メインメモリ、外部の入出力装置の間の命令や、データのやり取りについて説明しました。そこでは、メインメモリにどんなビット幅の命令、データを格納できるか(1メモリのビット幅)。メインメモリ上の命令や、データを特定するためのアドレスのビット幅は何ビットなのか。アドレスのビット幅は、アドレスを指定するためのバス(アドレスバスの幅)が何本からできているかということです。例えば、4ビットなら、バスが4本必要です。メインメモリ上の命令や、データをいっぺんに何ビットずつ、CPU内のレジスタに転送できるか(データバスの幅)。1つのレジスタはどれだけのビット幅の命令や、データを格納できるのか(レジスタのビット幅)。レジスタからALUへのデータの移動では、いっぺんにどれだけのビット幅で送信できるのか(レジスタとALU間のバス幅)、ALUは一度に何ビットずつデータ処理ができるか(ALUのビット幅)。などの観点があります。また、CPUと外の入出力装置とのやり取りにもビット幅が関係しています。入出力装置のアドレスの幅は何ビットか。入出力装置との間のデータ幅は何ビットか、など様々な観点があるということを説明しました。

 「コンピュータの仕組み」では、極々単純なCPUを想定して、簡単に説明しましたが、実際のCPU内には命令を解読するための仕組み(命令デコーダ)や命令を制御するためのユニットや、スケジューラ(演算回路に渡す命令の順序を決める回路)、更に演算回路には算術計算や論理演算を行う回路と、浮動小数点演算を行う回路が別にあります。さらに、キャッシュなどもあり、キャッシュには一次キャッシュ、二次キャッシュなどがあり、これらがバスで接続されています。

 これらが全部4ビットなら、4ビットCPU、全部8ビットなら8ビットCPUと言えます。少なくとも、内部の命令セットとレジスタサイズ、ALUのビット幅が同じなら、そのビット幅によって、NビットCPUということになると思います。これ以外にメインメモリとCPUの間の、アドレスのビット幅、データのビット幅が全部Nビットということなら、何の問題もないのですが、これがなかなか一筋縄ではいきません。

 例えば、最初のマイコンと言われているIntel4004は4ビットマイコンと呼ばれています。このマイコンは確かに内部データバス幅やレジスタ幅は4ビットですが、命令長は8ビットで、メモリアドレスは12ビットです。

 インテルによって開発された8ビットマイクロプロセッサ8080は、命令はバイト単位で1バイト(8ビット)から3バイトの可変長です。レジスタには8ビットレジスタと、16ビットレジスタがあります。更に16ビットCPUである8086は演算回路やレジスタは16ビットですが、アドレスバスは20ビットです(データバスは16ビット幅)。

 初期のワークステーションなどでよく利用されていたモトローラの68000は、CPU内部は32ビット幅ですが、外部バスはより小さく設計され、アドレスバスは24ビット幅、データバスは16ビット幅になっています。

 これ以外にも、ALUのビット幅とレジスタのビット幅が違っているものなどがあります。

※上記の分類方法に全く当てはまらないビットスライスプロセッサなどと呼ばれるタイプも過去には存在していました。ビットスライスプロセッサは自由にビット数を増減することができるCPUで、代表的なものとしてはAMDのAM2900シリーズなどがあります。

 と言いながら、CPUメーカはNビットCPUという形で売り出しています。多分、メーカはNビットCPUを開発するという意識で、それを開発したのではなく、いろいろの工夫をしたらそのCPUができたということではないでしょうか。そして、それを売り出そうという段になって、どう売り出したらいいかということになり、NビットCPUという形で売り出したということだと思います。

 一般的には、算術論理演算器(ALU)のビット幅や、CPU内部のデータバスの幅(バスの本数)などで決めていることが多いようですが、レジスタと外部のバスの幅で決めている場合もあります。

 CPUのビット数というのは正確に定義されたものではなく、メーカによって恣意的に使われているということですね。ただそうは言ってもビット数が多いほうが性能が高いことは確かです。例えば、ALUのビット幅が8ビットのものを考えてみましょう。8ビットのALUでもそれを超えたビット数の演算は可能です。例えば、8ビットのALUで、それを超えるビット数の足し算をする場合には、下位8ビットと、それを超えるビットを、8ビットの演算回路でそれぞれ計算し、下位8ビットの最上位ビットの桁上りを、上位8ビットの演算回路に足し込むことで計算できます。8ビットの演算回路で、32ビットの加算を行う場合には、8ビットずつに分割し、それぞれのビットを計算するとともに、桁上りを上の8ビット演算回路の足し込んでいけば、計算が可能です。ただ、小さなビット幅のCPUでは何度も計算をしなくては結果が出ないということになります。しかし、16ビットの演算回路を使えば、16ビット以下の演算は1回でできます、32ビットの演算回路を使えば、32ビットまでの演算は1回でできます。従って、ビット数が多い方が一般的には、CPUは高速だということになります。


1.1.1.2 クロック数
 CPUのビット幅は、定義も定かでないという話をしましたが、一度にやり取りするビット数のことだという考え方が、一般的なようです。だとすると、ビット数はデータを送信するためのチャネル(バス構造のチャネル)の数だということになります。8ビットなら同時にデータを送信できるバスの数が8本、16ビットなら16本ということになります。これは、高速道路に例えて言うと、車線の数を増やすのと同様だということです。車線の数を増やすと、一度に走ることのできる車の数が増えるので、交通渋滞が減り、また運べる荷物の量が増えるということになります。ここで注意してほしいことはCPUのビット数を増やすということは、あくまで車線の数を増やすということで、車の速度を上げるという話ではないということです。

 高速道路を走る車の速度を上げるということに例えられるのが、CPUでは「クロック数」です。

 CPUをはじめとしたコンピュータの各回路は、一定の時間で刻まれるクロック信号に歩調を合わせながら処理を行っています。クロックはメトロノームあるいはオーケストラの指揮者の指揮棒の動きのようなものです。皆さんは既に「コンピュータの仕組み」で、CPU内のレジスタとメモリの間のデータのやり取りや、アドレスの指定などがバス回線を介して行われていることを学んだことと思います。バス回線ですから、CPUからメモリへのデータ転送と、メモリからCPUへのデータ転送が同じ回線で行われています。タイミングを調整しないとデータが衝突してしまいます。また、アドレスバスを使ったアドレスの指定でも、CPUとメインメモリ間、CPUと入出力ユニットの間で同じバスが使われています。ここでも、タイミングを調整しないと、メインメモリのアドレスを指定したのか、入出力ユニットのデータレジスタのアドレスを指定したのか分からなくなってしまいます。このバス回線の利用調整がクロック信号に合わせて行われています。もちろん、CPU内部のデータ転送と、ALU内のデータ処理もこのクロック信号に従います。

 ただ、CPU内の動作と、メインメモリ、その他のバスやコントローラ(I/O、PCIバス、USBコントローラなど)の動作速度は異なりますので、PLL(Phase Locked Loop)という可変周波数発生回路が利用されます。クロック信号は水晶発振器によって生成されますが、回路ごとに異なる水晶発振器を使うのは現実的ではありませんので、1個の水晶発振器からPLLを使って様々な周波数のクロック信号を作り出しています。

 CPUのクロック数は、PLLから生成されたクロック信号を逓倍回路(クロックダブラ)で整数倍にしたものです。例えば1GHz(1000MHz)で動作するCPUの場合、100MHzのクロック信号を入力したら、それを逓倍回路で10倍にして使っています。

 クロック数はCPUの中で行われている処理のテンポです。1秒間にクロックを何回発生させるかがCPUのクロック数になります。CPUのクロック数が高くなるほど処理速度が向上すると考えて間違いありません。ただし、これは同じタイプのCPUを比較する場合にだけ有効で、違うタイプのCPUを比較するのに単純にクロック数だけ比較してもあまり意味がありません。

 CPUは処理速度を上げるために様々な工夫を施されています。その一つが「パイプライン」方式です。1つの命令は、「命令の読み込み(F、Fetch)」、「命令のデコード(D、Decode)」、「命令の実行(Execute)」、「命令の出力(書き戻し、WriteBack)」の4つのステージに分解できます。

 従来のCPUでは1つの命令のフェッチ、解読、実行、書き戻しを1クロックずつ使って実行していました。図に書くと次のようになるでしょう。


 CPUの中にはいろいろの部品があって、メモリからCPU内のレジスタに命令を持ってくる(フェッチ)ときに働く部品、命令を解読する(デコード)する部品、命令の解読に従ってメモリからデータを持ってくる部品(データフェッチ)、命令を実行する部品、実行結果をメモリに書き戻す部品がそれぞれ異なっています。従って、1つの命令のフェッチ(F)、デコード(D)、実行(E)、結果の書き戻し(WB)の各ステージを順に行っていると、それ以外の部品は遊んでいます。例えば、命令フェッチをしている時には、それ以外のデコード部、実行部、書き戻し部は遊んでいることになります。

※ここでの説明例は、デコードとデータフェッチで1つのDecodeステージにしています。新しいタイプのCPUでは、デコードとデータフェッチを2つのステージに分割して、全体で、フェッチ、デコード、データフェッチ(Data Fetch)、実行、処理結果の出力の5ステージ構成にしているものもあります。

 パイプライン方式はCPUの各部品が遊ぶことなくいつでも動作するようにしたものです。フェッチ部、デコード部、実行部、書き戻し部がいつも働いているように工夫されていますので、それだけ高速に処理できるわけです。


 CPUを更に高速化する技術としては、命令を更に細分化して処理するスーパーパイプライン方式と、複数の命令を同時に並列処理するスーパースケーラという方式があります。


スーパーパイプライン


スーパースケーラ

 現在販売されているCPUの多くは、スーパーパイプラインとスーパースケーラの併用によって、処理速度の向上を図っています。

 パイプラインを使った場合は、クロック数だけでは性能を表すことができません。ここでよく使われる指標がIPC(Instructions Per Cycle)です。IPCは1クロック当たりの処理命令数の平均値です。例えば、平均して7クロックで4命令を実行できるとすると、IPCは4/7=0.57となります。

 CPUの処理性能は一般的に、 CPU処理性能=クロック数×IPC  となります。

 この式から、CPUの性能アップには動作周波数を上げて、IPCをより大きくすればいいということが分かります。ただし、この2つの指標はトレードオフの関係にあります。スーパーパイプラインの効率を上げるためには、クロック周波数を増加させる必要がありますが、クロック周波数を上げると、1クロック当たりの時間が短くなり、スーパースケーラで同時並列処理する命令の数が少なくなりますので、IPCは小さくなります。IPCを上げるためにはスーパースケーラで1クロックで処理する命令数を上げればいいのですが、そうすると1クロックの時間を長くせざるを得ません。

 CPUのメーカは動作周波数とIPCを同じように重視して、どちらも上げようとするのではなく、どちらをどれくらい重視するかという考え方でCPUの設計をしています。

 インテル社は動作周波数を重視してCPUの性能の向上を目指しているのに対して、AMD者はIPCを重視してCPUの性能向上に努めているようです。


1.1.1.3 CPUの個数
 動作周波数を上げると消費電力が増えることになり、ある程度以上の動作周波数は放熱の観点から困難という制約があります。また、各ステージを細分化するためには、細分化した各ステージごとにラッチと呼ばれる回路を入れなくてはなりません。そのため細分化をどんどん進めていくと、消費電力が増大して、過大な発熱につながり、ひいては製品の寿命を縮めることになります。

 クロック数とIPCを調整してCPUの処理性能を向上させようとする考え方には、限界があるということになります。そこで、次なるアイデアとして登場したのが、「CPUの数を増やせばいい」という考え方です。

 次に示すのはx86のPentiumで、はじめてCPUの数を増やした時の構成です。


※FCB=Front Side Bus
※CPU Die:小さくて薄いシリコン基盤の表面に、数千万個から一億個を超える数のトランジスタで回路を形成したもの。指先に乗るほど小さいものなので、そのままでは配線や取り扱いが難しいため、数cm角のパッケージの表面に乗せられています。


※Chipset:コンピュータのCPUやメモリ、周辺装置などの間でデータの受け渡しを管理するLSIのセットのことです。複数CPUの場合は、チップセットで複数のCPUの処理結果を調整しています。

 次に示すのは論理的には2CPUだが、物理的には1CPUというMCM(Multi Chip Module)というタイプの構成です。CPUを増やすと発熱量が増加しますので、CPUを増やしていくことには問題があるのですが、1つのパッケージに複数のダイ(Die)を入れてしまえば、消費電力はほとんど増えないという利点があります。


 ただ、CPUを増やして性能を上げるためには、違う要素もかかわってきます。それは、プログラムをいくつ動かしているかです。CPUが2つあり、プログラム1とプログラム2を動かしているという場合は、CPU1がプログラム1の処理をして、CPU2がプログラム2の処理をするだけです。CPUが4つあり、プログラムを4つ同時に動かすという場合も同様に考えることができます。

 CPU1台で、2つのプログラムを動かしている場合は、次のようになります。


 CPUが2つあり、プログラムを2つ動かしている場合には次のようになります。

 


 しかし、CPUが2つあるのに、プログラムが1つしか動いていないという場合はどうでしょうか。この場合は、プログラムが並列化に対応するように書かれていないと効果がありません。次の図は、プログラムの一部が並列化に対応している場合の例です。

 
 処理Bが並列化されている場合は次のようになります。


 更に複数のCPUでプログラムを処理する場合には同期の問題が出てきます。複数のプルグラムを同期して処理するには、そのための待ち時間が必要となります。


 次は処理Bだけが並列化している場合です。



 CPU1つで、2つのプログラムを処理する場合は、OSがそれぞれを切り替えながら処理していますが、CPUが2つになると、2CPUにまたがる形でOSがそれぞれの処理を走らせる形になり、処理能力が落ちてしまいます。FCBを使ったMCM方式では、この同期にかかる時間が長くなるという欠点があります。

 このような問題を解決する方法が、CPUの中心部の実際の処理をするコア(Core)という部分を、1つのCPUダイの中に複数作り込んでしまうという方式です。2つのコアを1つのダイに組み込むのが「デュアルコア」、4つ組み込んでしまうのが「クアッドコア」です。このように複数のコアを1つのダイに組み込んでしまう方式を「マルチコア」といいます。


※BIU:Bus Interface Unit

 従来マルチコアを実現しようとすると、ダイサイズガ極端に大きくなってしまい、コスト面で非現実的だったのですが、製造プロセスが微細化されたことで、複数のコアを組み込んでも現実的なダイサイズに収まるようになりました。


1.1.2 メインメモリの容量

 メインメモリの容量もコンピュータの性能に大きく関係します。メインメモリの容量も、コントロールパネル>システムとセキュリティ>システムで表示できます。単位はバイト(B)で、通常はギガバイト(GB)だと思います。

 メインメモリはCPUのレジスタとの間で命令やデータのやり取りをしていますので、データの処理速度に大きく関係してきます。よく使われるたとえ話が、CPUが作業者の頭脳で、メインメモリが作業者が使用する作業机で、ハードディスク(ストレージ)が作業で使う本やノートを入れておく机の引き出しだというものです。メインメモリ上においてある命令(プログラム)やデータを実際に使用するのはCPUです。メインメモリの容量が小さい場合は、実際にCPUが使おうとしたデータやプログラムがないという場合が多くなります。その場合には、ハードディスクからデータやプログラムを持ってこなくてはなりません。ハードディスクの速度はCPUと比較すると極端に遅いので、CPUの待ち時間が長くなり、動作速度に大きく影響します。大きなプログラムやデータを使う場合は、メインメモリは大きければ大きいほどいいといえます。

 実際にメインメモリをどれくらい使っているかはタスクマネージャで確認することができます。タスクマネージャは、Windows10の場合は、スタートボタン>Windowsシステムツール>タスクマネージャで選ぶことができます。

 タスクマネージャのパフォーマンスタブを選ぶと、メインメモリをどれだけ積んでいて、実際にどれだけ使っているかが分かります。メモリは分数で表示されていると思いますが、分母が積んでいるメモリ容量で、分子が実際に使っているメモリの量です。

 動画などを動かすと途端に動きが悪くなるような場合は、メモリを増設したほうがいいかもしれません。ただし、メインメモリをいくら積み込んでもWindows OSが認識できるメモリの総容量を越えて、利用することができません。Windows OSが32ビット版の場合、認識できるメモリ容量は4GBですので、それ以上にメモリを搭載しても、利用することはできません。

※メモリは半導体で作成された記憶装置です。次に説明するHDDなどの機械的な動作をする部品とは違い、電子レベルで動作する部品ですので非常に素早い動作が可能です。半導体の記憶装置は大きく分けてRAMとROMに分かれていて、メインメモリはRAMと呼ばれます。RAMはRandom Access Memoryの略で、ランダムに、自由に読み書きができるメモリです。RAMはパソコンの電源を切るとデータが失われてしまうので、揮発性のメモリとも呼ばれます。RAMにはDRAMとSRAMという2種類があります。2つを比べると、SRAMの方が容量が小さく高速で動作し、高価です。SRAMはCPUの内部のキャッシュなどに使われます。DRAMはSRAMに比較すると安価で、低速、大容量です。一般的にはパソコンのメインメモリとして使われています。


1.1.3 ストレージの容量

 CPUが直接アクセスできるのは(メイン)メモリですが、それ以外にも様々なメモリがあります。これらのメモリはCPUが直接アクセスできないので、二次記憶装置とか、補助記憶装置などと呼ばれています。ストレージ(Storage)と呼ばれることもあります。

 CPUが頭脳、メインメモリが作業机に例えられるとすれば、ストレージは机の引き出しに当たります。できるだけ大きな引き出しを用意した方が作業がはかどります。

 パソコン用のストレージとしてはハードディスク(HDD、Hard Disk Drive)やSSD(Solid State Drive)、外付けハードディスク、USBメモリ、光学ディスクなどがあります。最近ではオンライン上のデータ保存場所をオンラインストレージなどとも言います。

 外付けハードディスクや、USBメモリ、光学ディスクなどは一般にデータの保存場所として利用されます。外付けストレージはメディアとか媒体などと呼ばれることもあります。

 オンラインストレージとは、インターネットでつながっている場所にあるストレージという意味です。雲のように離れたところにあるのでクラウドとか、クラウドサービスなどと言ったりします。クラウドについては、こちらをご覧ください。

 パソコン内部のストレージとしてはHDDやSSDなどがあります。この内部ストレージの中にOSやアプリケーションなどのプログラムがインストールされているのが一般的です。


1.1.3.1 HDD
 パソコンなどを購入するときに注意するのが内蔵HDDの性能です。外部ストレージは後で好きなものを購入すればいいので、購入時には気にする必要はありませんが、内蔵HDDの場合は、その性能が不十分なら、買い替えるなどの無駄が生じてしまいます。

 まず容量ですが、内蔵HDDにはOSをはじめ、Windows Office製品などをインストールすることになるのが普通ですので、十分な容量が必要となります。一般的には500GBから1TB(1TB=1024GB)程度の容量が必要だと思います。

 容量は大きければ大きいほどいいといってもいいかもしれません。では速度はどうでしょうか。これも速ければ速いほどいいといえます。HDD(ハードディスクドライブ)は磁気ディスクと呼ばれるガラスやアルミでできた円盤状の媒体(プラッタ)がくるくる回っていて、その上を磁気ヘッドと呼ばれるものが移動して情報の読み書きをします。

 HDDのデータアクセス時間は中の円盤(プラッタ)の回転速度に関係します。1分間の円盤の回転数をrpmといいます。5400rpmとか7200rmpなどといいます。この数値が高いほど高速に回転します。HDDのrpmは速いほどいいといっていいでしょう。ただ、回転数が高くなると熱を持ちますし、エラーも起こしやすく、振動にも弱くなります。しかし、現在は高速回転でも、熱を逃がすパーツ(ヒートシンク)がついている製品も多く、高速だから高温とも言えなくなっています。

 最近のディスクトップ用のHDDは殆ど7200rpmに統一されています。ノートパソコンはいろいろのところに持ち運びますので振動などに強い5400rpmが多くなっています。

 HDDの読み込み時間はrpmだけでは決まりません。ハードディスクの円盤上の密度が高ければ、磁気ヘッダが求める情報に近づく時間が短くなるのではないかということは容易に想像できます。プラッタの密度は枚数にも関係してきます。同じ500GBの容量を1枚のプラッタで実現している製品と、4枚で実現している製品を比較すると、1枚で500GBを実現している製品は密度が4倍となります。

 ただこの当たりのことは余り単純ではないようです。1プラッタあたり1ヘッダというタイプもあれば、1プラッタで2ヘッダ、2プラッタで3ヘッダなど、記録面が表だけだったり、裏表を記録面として使っていたり、あるいは2枚のプラッタの裏表を記録面として使い、間に挟まった記録面は1つのヘッダで賄っていたりと、製品によって様々だからです。
 
 更に記録面にしても違いがあります。円盤の外周部から必要な容量分だけ使い、遅い内周部は使わない工夫をして速度を上げている製品などもあり、単純には比較できないようです。

 HDDにはキャッシュと呼ばれる一時的にデータを保存できるメモリ(バッファとも呼ばれます)が付いています。キャッシュはHDDと比較すると高速に読み書きできます。キャッシュメモリには主に3つの種類があります。

●読み込みキャッシュ
 HDDからデータを読み出すときに、キャッシュメモリにもデータを保存しておき、次回以降に同じデータを読み出す場合に、キャッシュメモリからデータを読み出します。キャッシュメモリからのデータ呼び出しですので、高速に読出しができます。

●書き込みキャッシュ
 HDDに直接データを書き込もうとすると時間がかかります。書込みキャッシュがあれば素早く書き込むことができ、書き込みが終わるまで、待たされることがありません。HDDへの書き込みは後でゆっくり行うことができます。

●先読みキャッシュ
 HDDからデータを読み出すには時間がかかります。そこで、目的のデータを読み出す際に、この先要求のありそうな、近くのデータも一緒に読み込んで、キャッシュに入れておきます。配列データなどは直接必要とされたデータ以外にも、一緒に読み込んでおくと、後で読み込み要求にヒットする確率が高くなります。

 バッファの容量が多いほど、パソコンの性能が上がります。キャッシュの容量は2MB、8MB、16MB、32MBなどが一般的です。性能の高いHDDほどキャッシュの容量は多くとっているようです。

 内蔵HDDの接続インターフェースは従来はUltra ATAという規格が使われていましたが、現在はSerial ATAが主流です。このSerial ATAにはいくつかの規格が存在して、規格ごとに転送速度が異なります。「Serial ATA Revision 1.0」が1.5Gb/s、「Serial ATA Revision 2.0」が3.0Gb/s、「Serial ATA Revision 3.0」が6.0Gb/sです。

 接続インターフェースが「Serial ATA 3.0Gbps」以上(Serial ATA 6.0Gbpsも)ならば、NCQ(Native Command Queuing)という機能が使えます。連続して複数のデータを読み取る場合は、読み取りたいデータはディスク上に分散している可能性が高く、読み取りたいデータがある場所にヘッダが動けるようにプラッタが回転します。NCQに対応しているHDDの場合は、一定数の読み取りたいデータがある場所を予め確認し、最もプラッタの回転数が少ないようにデータの読み取りの順番を決めてから、データの読み取りを行うという機能です。NCQが出始めたころは、NCQに対応していないものもあり、HDDの仕様にNCQ対応と明記されていることが多かったのですが、現在はNCQが普及しましたので、NCQ対応でも仕様に明記していないこともあります。

※NCQが使えるようになるためにはマザーボードもNCQ対応である必要がありますが、現在ではマザーボードがNCQに対応しているのは当たり前になっていますので、新しく購入するのであれば、確認する必要はないかもしれません。

 HDDには内蔵のものだけでなく、外付けのHDDもあります。外付けのHDDの速度は、HDDの読み書き速度と、接続インターフェースの転送速度によります。HDDの読み書きの速度は概ね800Mbpsですので、どれでもあまり変わりませんが、接続インターフェースは規格によって様々です。

 接続インターフェースの規格としては、USB(1.1、2.0、3.0)、eSATA、IEEE1394の3つです。速度はUSB1.1が12MB、USB2.0が480MB、USB3.0が5GB、IEEE1394が400MB、eSATAが1.5GBです。従って、外付けHDDの速度は接続インターフェースの規格次第ということになります。

 外付けHDDを購入する場合は、バックアップの機器として考えている場合も多いかもしれません。この場合はRAIDに対応しているかも重要です。以前は、RAIDを考える場合はeSATA対応を確認する必要がありましたが、最新版のUSB3.0はRAIDにも対応しています。

※RAID(Redundant Arrays of Inexpensive Disk、レイド)はデータを複数のハードディスクに分散することで、性能と耐障害性を同時に確保する技術です。
※最新版のUSB3.0がRAIDに対応したことで、eSATAのメリットがなくなったとして、eSATA対応の外付けHDDの販売を止めてしまったメーカもあります(バッファローや、I・O DATA)。

 HDDの速さについてはこれ以上追求しないことにします。速さを求める方にはHDDではなく、SSDを使うという選択肢があります。


1.1.3.2 SSD
 半導体メモリにはRAMとROMと呼ばれるものがあります。RAMはCPU内部のキャッシュや、メインメモリなどに利用される部品で、電源を切るとデータは失われます。これに対して、ROMはRead Only Memoryの略で、読み出し専用のメモリで、電源を切ってもデータが消えることはありません。

 ROMには製造時に書き込まれたデータを書き換えることができないマスクROMと、ユーザによって書き換えが可能なEEPROM、フラッシュメモリなどがあります。書き換え可能なROMとして現在最も利用されているのがフラッシュメモリです。フラッシュメモリには、USBメモリや、SSDなどがあります。

 SSD(Solid State Drive)はHDDと同様に机の引き出しに当たる装置です。HDDは機械的に動く装置ですが、SSDは半導体部品ですので、「シリコン・ディスク」などと呼ばれることもあります。

 フラッシュメモリは半導体製品ですが、電気が通じていなくても長時間データを保存しておくことができます。

 SSDはHDDのように中に円盤が入っていて回転しているわけではありません。半導体部品ですので、データのやり取りが高速で、熱もあまり発生しません。また、音が静かで、振動にも強く、軽量です。欠点と言えば、容量当たりの値段が高い(HDDの10倍程度)ことです。更にフラッシュメモリにはデータの書き込みの回数に限界があり、ずっと使っているといずれ壊れてしまうという問題もあります。



1.1.4 性能によるコンピュータの分類

1.1.4.1 マイコン
 マイコンは主として機械などに組み込まれる小規模のコンピュータです。マイコンという言葉は和製英語で、海外の方には通じません。多分「マイ**コン***」という言葉の省略形だと思いますが、元の言葉は分かりません。候補としては、「マイクロコンピュータ(microcomputer)」か、「マイクロコントローラ(microcontroller)」だと思います。このあたりのことは余り詮索しても生産的ではありませんので、止めておきます。とりあえず「マイコン」でいいということにしておきましょう。

 エアコン、洗濯機、冷蔵庫、テレビ、最近では照明器具や扇風機などにもマイコンが使われています。リモコンがついている家電にはマイコンが内蔵されていると思って間違いありません。マイコンは車の制御にも使われています。どれくらい使われているのでしょうか。直ぐに予測がつくのがナビゲーションシステムです。その他、移動体通信、エンターテイメントなどにマイコンが使われています。これ以外にもパワーステアリング、エンジン制御、AT制御、エアバックやブレーキなどの安全系制御、各種スイッチ、盗難防止制御、パワーウィンドウ、ヘッドライト制御、ドア制御などあげるときりがありません。普及型の車でも約50個近くのマイコンが使われているようです。

 マイコンもパソコンも原理は全く同じです。マイコンはパソコンと比較すると、小さくて、安価で、性能が劣っていて、消費電力が小さいという特徴があります。


1.1.4.2 パソコン
 パソコンは普段皆さんが使っているコンピュータです。パーソナルコンピュータ(Personal Computer)を短縮した和製英語ですので、当然海外では通用しません。個人向けの一人で使うコンピュータという位の意味でしょうから、マイコンよりは性能が上です。音楽や動画像を扱おうとするとかなり高機能なものが必要となります。

※性能でコンピュータを分類する場合には、他にワークステーション(WS、workstation)と呼ばれている高性能のコンピュータがあります。通常のパソコンと同様の使い方をする場合は、組版、科学計算、CAD、グラフィックデザインなど通常のパソコンではちょっと手に負えないような複雑な処理をする場合に利用します。
 科学技術計算、CAD、プロダクションデザイン、グラフィックデザインなどに使用するものは特にエンジニアリングワークステーション(EWS)と呼ばれ、これらの作業を円滑に行うため、専用のソフトウェアや専用のハードウェアを持っていることがあります。
 また、事務処理や組版などの編集に使われるタイプはオフィスワークステーションなどと呼ばれています。



1.1.4.3 サーバ
 サーバ(server)はサービスを提供するコンピュータです。多くのコンピュータからの要求を受けて迅速に処理することができます。サーバもパソコンも構造的には全く同じですが、サーバは多くのコンピュータからの要求を同時に処理しなくてはならないため、性能の高いCPUと容量の大きなメインメモリ、ストレージを搭載しています。

 近年ではサーバ1台の性能を上げるよりも、パソコンに近い能力のサーバを大量に並べて処理性能を稼ぐ方法が主流です。限られた設置場所に大量のサーバを隙間なく並べられるように、薄型の筐体を積み重ねていく方法が一般的です。薄型の筐体は厚さを表現するときにU(ユニット)という言葉を使用しますので、厚さによって1Uサーバ、2Uサーバ、3Uサーバなどといいます。1Uサーバは高さ約45mm×幅約19インチ×奥行約540mmとなっています。2Uサーバは幅と奥行きが同じで厚さだけが2倍に、3Uサーバは幅と奥行きが同じで厚さが3倍になっています。従って、19インチ幅のラック(19インチラック、19インチ幅の棚)に隙間なくびっしりと集積することができます。

 次の図は、HPEのラックマウントサーバProLiant DL120 gen9サーバです。

1Uラックマントモデルのサーバ
HPE ProLiant DL120 gen9

 一般的にはこれを19インチラックに収納します。

 さらに集積度を上げるために導入されるのがブレード型のサーバです。ブレード(blade)は、抜き差し可能なサーバで、同じ高さのもの(通常は5Uとか6U)を筐体に差し、その筐体を19インチラックに収めるという使い方をします。

IBMのブレードサーバ 「IBM BladeCenter HT」
1枚のブレードを抜いているところ


 マイコン、パソコン、サーバを性能的に比較すると大体次のような感じになります。数字はあくまでだいたいのところで、どこまでがマイコンで、どこからがパソコンで、どこからがサーバと明確に分かれているわけではありません。この指標は当然年代によって大きく違ってきますが、2017年ではこの位という程度に考えてください。

マイコン パソコン サーバ
ビット数 4~16 32~64 32~64
クロック周波数 数十KHz~数十MHz 数百MHz~数GHz 1GHz~数GHz
CPUの個数 1個 1~8個程度 1~32個程度
メモリの容量 ~1MB程度 500MB~数GB程度 数GB~100GB程度
ストレージの容量 ~数百KB程度 数十GB~数TB程度 数十GB~数TB程度


1.1.4.4 スーパーコンピュータ
 スーパーコンピュータ(super computer)は科学技術計算を主要目的とする大規模コンピュータです。日本国内では通常スパコンと呼ばれています。何をもってスーパーコンピュータというかについては明確に定義されているわけではありません。一般的にはその時代の最新技術を投入した最高クラスの性能のコンピュータと言っていいでしょう。国家レベルのプロジェクトとして開発されることが多く、各国が開発にしのぎを削っています。

 スーパーコンピュータにはスカラー型スーパーコンピュータ(scalar-type super computer)とベクトル型スーパーコンピュータ(vector super computer)があります。スカラー型はワークステーションなどで利用されている汎用CPUを搭載したものです。スカラー型は大規模な並列接続や、分散処理を行うことで性能を上げています。ベクトル型はベクトル型プロセッサと呼ばれる専用のプロセッサを搭載しています。ベクトル型プロセッサは同じような計算を大量に行うときに効率的に演算できるように設計されていて、スーパーコンピュータ向きのプロセッサだといえます。

 ベクトル型は多くのデータをまとめて計算するので大規模な計算に向いています。例えば、大気や海洋の大循環や、航空機の空力の計算などに向いています。代表的な例は「地球シミュレータ」(海洋研究開発機構、NEC)です。これに対して、スカラ型はデータを細かく分けて逐次的に処理するような計算に向いています。例えば、ナノデバイスの構造解析や、遺伝子の配列検索などが得意です。代表的な例が「京」(理化学研究所、富士通)です。

 処理能力はベクタ型の方が上げやすいかも知れませんが、特定分野に特化していますので、他の分野には利用できません。また、スパコンにしか応用できない技術を維持し続けることはコスト的にも難しいという点があります。これに対して、スカラー型は汎用のCPUを使いますので、研究開発に費やした経費をスパコン以外からも回収でき、コストパフォーマンスが良くなります。能力的に同じならスカラー型の方が採用しやすいといえます。最近は、CPUの性能向上や省電力化に伴い、スカラー型スーパーコンピュータが主流になっています。

※ベクトル型の代表として2002年運用開始の地球シミュレータと、スカラー型の例として2006年に運用開始されたTSUBAME(東京工業大学)を比較してみましょう。スカラー型のTSUBAMEを、ベクトル型の地球シミュレータと比較すると、導入経費は20分の1、電気代は5分の1、処理速度は1.6倍になっています。


1.2 ネットワーク上の役割による分類

1.2.1 スタンドアローン

 スタンドアローン(stand alone)とはネットワークやインターネットに接続されておらず、他のコンピュータからデータを取り込まなくても単独で機能できるコンピュータです。今日では、パソコンのほとんどはネットワークに接続した状態で利用されますので、スタンドアローンでないことが殆どです。

 スタンドアローンは外部と接続されていない状態で動きますので、セキュリティが高まると考えられます。従って、機密情報を扱うシステムではスタンドアローンで利用するということが多いかもしれません。しかし、外部とつながっていないのだからと安心してしまうと、かえってセキュリティ上の落とし穴になってしまいます。スタンドアローンでも、USBメモリや他のPCとの接続によってウィルス感染の脅威にさらされることを忘れてはなりません。

※ネットワークにつながっていないPCは安全だろうということで、ウィルスソフトが入っていないことが多いのではないでしょうか。しかし、USBメモリを利用して、インターネットと接続しているパソコンと、データのやり取りをしていれば、それは間接的に外の世界とつながっていることになります。


1.2.2 クライアント

 クライアント(client)は、サーバに対して何らかの処理を要求し、サーバから処理結果を受信することで動作するコンピュータです。


1.2.3 サーバ

 サーバ(server)はクライアントからの要求を受けて処理し、その処理結果をクライアントに返すコンピュータです。一度に多数のクライアントからの要求を処理しなくてはなりませんので、性能の高いコンピュータであることが求められます。




2 クライアントサーバモデル

 クライアントサーバモデルはクライアントとサーバを分離するコンピュータネットワークのソフトウェアモデルです。このモデルではクライアントがサーバに要求し、サーバがこれに応答を返す形で処理が行われます。

 サーバもクライアントもソフトウェアとして捉えられています。サーバとしてはメールサーバ、Webサーバ、アプリケーションサーバ、ファイルサーバ、データベースサーバ、プリントサーバなどがあります。

 Web上のオンラインストアを利用する場合は、オンラインストアの利用者が使っているWebブラウザがクライアントに該当し、オンラインストアのデータベースやサーバプログラムがサーバということになります。Webクライアントがページを指定して表示要求を送信すると、サーバは必要な情報からWebページを作り、これを応答としてクライアントに返します。これを受信したクライアントがページを表示することで、ユーザがWebページを見ることができます。

※WebサーバとしてはApacheというアプリケーションが有名で、デファクトスタンダードとしての地位を確立していますWebクライアントとしては、IE、Edge、Chrome、firefox、safariなどが有名です。

 ここまでクライアントという言葉とサーバという言葉は何度も登場していますが、クライアントはクライアントマシンあるいはクライアントコンピュータという形で登場し、サーバはサーバマシンあるいはサーバコンピュータという形で登場しています。クライアントプログラムだけで、サーバプログラムを搭載していないコンピュータがクライアントコンピュータで、サーバプログラムをたくさん搭載し、他からの要求に応答する必要のあるコンピュータがサーバコンピュータだと思ってください。

 皆さんがコンピュータやインターネット関係の書籍や記事を読む場合にはクライアントとサーバという言葉が頻繁に出てきて、しかもそれがソフトウェアのことを指しているのか、コンピュータのことを指しているのか明記していないという場合が殆どだと思いますが、文脈から簡単に判断することができますので、あまり気にしないでください。

 現在は、ネットワークにつないでコンピュータを使う形としては殆どがクライアントサーバモデルを採用しています。クライアントサーバモデル以外の形(ネットワークアーキテクチャ)としては、端末同士が同等の立場で通信しあうピアツーピア(P2P)という方式が有名です。

 クライアントサーバモデルでは、サーバプログラムやデータ(ベース)をサーバマシンに集約することができますので、比較的性能劣るマシンをクライアントマシンとして利用することが可能です。タブレット端末やスマートフォンでのインターネット利用は、クライアントシステムのたまものです。欠点としては、必ずネットワーク接続が必要で、ネットワーク速度(帯域)が処理速度に大きく関係してきます。インターネット上のサーバにアクセスするにはインターネット接続が必須条件となります。また、サーバマシンにはアクセスが集中しますので、ネットワークの負荷を分散させるような工夫が必要となります。

3 コンピュータの仮想化

 Webが爆発的に普及し、世界中のたくさんのクライアントから洪水のようなアクセスがサーバに集まっています。サーバの処理能力を上げないと、今のWebシステムを維持することは困難です。サーバ(マシン)の能力については、既に見てきましたが、ここではコンピュータの中に仮想のコンピュータを作るという方法でサーバの性能を上げるという新しい方法について考えてみたいと思います。


3.1 スケールアップ

 スケールアップはサーバを構成する個々のコンピュータの性能を上げる方法です。コンピュータの性能はCPU、メインメモリ、ストレージなどによって決まってきます。CPUの性能は主としてビット数クロック数CPU数などによって決まります。

 現在はパソコンのCPUでも64ビットですが、これを128ビット、256ビットと増やしていくということはあるのでしょうか?特別目的のスパコンなどならあるかも知れませんが、一般のパソコンやサーバ用としては疑問です。64ビットアドレスの上限値は16EBなので、これ以上膨大なメモリを必要とするコンピュータが必要とされることは、現時点ではあまり考えられません。

※1024GB=1TB(テラバイト)、1024TB=1PB(ペタバイト)、1024PT=1EB(エクサバイト)ですから、1EB=(1024)3GBとなります。

 CPUのクロック数はどの位まで上げられるのでしょうか?光の速さは大体30万キロメートル/s(30Giga cm/s)ですから、1GHzの場合、1クロックあたり、30cmほどしか進みません。30GHzにすると、1クロックあたり1cmしか進みません。チップ内部は配線がこみあっていますので、電子は光の速さでは進めませんので、もっと遅くなります。こうなるとCPUのダイをもっと小さくする必要があります。ダイを小さくするといってもトランジスタの微細化技術にも限界があります。微細化(スケーリング)が極限まで来ると、電気的な絶縁(リーク電流)など様々な問題が出てきます。

 同じダイサイズに多くのコアを搭載するには、トランジスタの微細化が必要になりますので、やはりここでも微細化技術が限界としてのしかかってきます。

 CPUの性能を上げようとすると、これ以外に消費電力や、発熱の問題もかかわってきます。

 こう考えると、1つのコンピュータの性能を上げるのは、この先段々と難しくなってくるようです。


3.2 スケールアウト

 スケールアウトはサーバを構成するコンピュータの台数を増やすことで性能を向上させる方法です。同じ性能のサーバでも、数を増やしてクライアントからのアクセス増に対応しようとする作戦です。負荷分散装置(ロードバランサ)を導入すれば、同じIPアドレス、同じドメイン名のサーバへの対応を複数のサーバで実現することができます。


3.3  サーバの仮想化

 サーバの仮想化(Virtualization)は、1台のサーバマシン(物理サーバ)の中に複数の仮想的なサーバを作る仕組みです。それぞれの仮想サーバには個別のOS(ゲストOS)を導入し、個別のアプリケーションを導入することができ、それぞれの仮想サーバをまるで独立のコンピュータのように動かすことができます。

 仮想化の方式にはホスト型、ハイパーバイザー型、コンテナ型などの方法があります。現時点ではハイパーバイザー型が普及しています。


3.3.1 ホストOS型

 ホストOS型は、ホストOSに仮想化ソフトを導入し、その上で仮想化マシン(ゲストマシン)を立ち上げます。ホストOS型の仮想化は、手軽に利用できるのが特徴です。既存のマシン環境で、アプリケーションをインストールする感覚でインストール・起動が可能なため、汎用マシンでの仮想化や検証用途などに使われます。例えば、ホストOSとして、Windows XPを使っている場合に、仮想化ソフトを導入して、Windows 7、Mac OSX、Linuxなどを立ち上げることができます。仮想化ソフト上に導入するOSはゲストOSなどと呼ばれます。


 ホストOS型仮想化を実現する仮想化ソフトとしては、VMWare Player、VirtualBoxなどがあります。通常のホストOS上で通常のアプリケーションを動かしながら、仮想サーバを動かすことができるので、非常に使いやすい仕組みです。VMWare Player、VirtualBoxは運用が簡単で、個人利用のサーバに向いています。

 ホストOS型はホストOS上に仮想化ソフトを導入して、そこにゲストOSを立ち上げますので、ハードウェアへのアクセスはホストOSを経由しなくてはなりません。また、ホストOSを利用するアプリケーションも動いています。従って、ゲストOS上の仮想サーバの処理の他に、ホスト自体の処理にもリソースを割り当てなくてはならないため、処理速度が出ないということも欠点です。



3.3.2 ハイパーバイザー型

 ハイパーバイザー型は、物理サーバ上に直接ハイパーバイザーというソフト(仮想化専用OS)を導入し、この上に複数の仮想サーバを立ち上げます。ホストOSを必要としないためハードウェアを直接制御することができ、仮想マシンの速度低下を最低限に抑えることができます。


 ハイパーバイザー専用のOSとしては、ESX(VMWare)、vSphere(VMWare)、Xen(Linux Foundation)、KVM(QUMRANET社、Linux Foundation)などがあります。一般的にハイパーバイザー型のOSは一般的に非常に運用しずらいという面がありますが、商用に耐えうる高機能を備えています。

 KVM(Kernel-based Virtual Machine)は、Linux Kernel自体をハイパーバイザーとする仕組みです。KVMは現時点では、Intel VT-xやAMD-Vなどのマイクロプロセッサーが提供する仮想化支援機能を必要としています。KVMは、ハードウェアのエミュレーションやゲストOSの管理用のフロントエンドとして「QEMU」を使い、Linux上でゲストOSを動かすので、一見ホストOS型に見えますが、Linux カーネル(Kernel)にマージされて、Linux自体をハイパーバイザーとしてしまいますので、ハイパーバイザー型に分類することにします。

 しかし、KVMはESXやXenなどとアーキテクチャが少し違います。次に、KVMのアーキテクチャを示します。



3.3.3 仮想化のメリット

 多くの企業や大学では何十台、何百台ものサーバが稼働しています。それぞれのサーバは各部門毎に管理していますので、様々なアプリケーションが動いています。あるサーバの稼働率は高いけれども、あるサーバの稼働率は極めて低いということが珍しくありません。また、稼働率のピークが時刻によって異なっていたり、曜日によって異なっていたり、あるいは大学では入学案内配布時、合格発表時に異常に高くなるなどということが珍しくありません。各サーバを独立のマシンで動かしている場合は、他のサーバの遊んでいるリソースを互いに融通しあうということはできませんが、仮想化ではこれが可能になります。特に、メモリや、CPUなどの資源を予備として用意し(プーリング)、仮想マシンがそれを必要に応じて利用できるようにしておけば(共有化)、特定のサーバに負荷が集中しダウンしてしまうなどということはなくなります。あるいは、合格発表の一時期だけ合格発表用の仮想サーバを立ち上げることなども簡単にできます。

※皆さんもご存知だと思いますが、大学の合格発表用のサーバがダウンしてしまうと大変な事態になります。志望大学の合格発表の初日は、多くの場合、滑り止めで合格した大学の入学手続きの締め切り日に重なっています。志望大学の合格が確認できれば、滑り止めの大学の入学金を支払わなくてもいいのですが、その日に合格発表用のサーバがダウンしてしまうと、滑り止めの大学の入学金を支払わなくてはなりません。この金額は決して安いものではありません。

 大量にあるサーバを、仮想化して小数の物理マシンに集約すれば管理費が大幅に節約できます。また、セキュリティなどへの対応も適切にできるはずです。



4 クラウド

4.1 クラウドとは

 クラウド(雲、cloud)という言葉は最近使われるようになった言葉です。2006年に米グーグルのCEO(最高経営責任者)であるエリック・シュミットが、「サーチエンジン戦略コンファレンス(Search Engine Strategies Conference)」の席上でクラウドコンピューティング(Cloud Computing)という言葉を使って、これからのコンピューティングについて説明したことに由来しているようです。シュミットは、これからの情報とアプリケーションは、特定のプロセッサやシリコンラックの上にあるのではなく、サイバースペースという拡散した大気圏の中にあり、その中から取り出すことができると説明しました。

 クラウドという言葉は最近の言葉ですが、このような技術は以前から存在しています。何だか良く分からないけれども、漠然とした何かに要求を出すと、ちゃんとした答えを返してくれるが、そのシステムが、中でどんなことをしているかは分からないし、分かりたいとも思わない。このような場合の、何だか分からないシステムがクラウドです。

 インターネットの基本的な仕組みである、クライアントサーバシステムなどはクライアントを操るユーザの視点から見るとクラウドに違いありません。代表的なものがWebシステムです。皆さんがブラウザにアドレスを入力してクリックすると、そのサーバにアクセスできます。そして、表示されたページの中に色の変わった文字列があり、そこをクリックすると何だか分からないが違うページが表示されます。そのページは同じサーバ内にあったものかもしれませんが、そうでないかもしれません。でも、それはユーザにはどうでもいいことです。

 このクライアントサーバシステムに、上で説明したコンピュータの仮想化を適用すると、エリック・シュミットが言うクラウドコンピューティングになります。CPUもメモリも、ハードディスクも仮想化し、それをインターネット上に置き、みんなで利用しようということになれば、ハードウェア資源、ソフトウェア資源の効率的な利用が可能になります。

 クラウド(コンピューティング)では、MicrosoftのOfficeを自分のパソコンにインストールして利用するということはしません。クラウド業者と契約して、クラウドにアクセスすればいつでも最新のOfficeを使うことができます。ストレージもクラウド上にあります。クラウド上のストレージは容量の心配をすることなく使うことができます。サーバもクラウド上にあり、このサーバを使って情報公開することができます。


4.2 クラウドのメリット/デメリット


4.2.1 クラウドのメリット

 クラウドのメリットは導入が簡単なことです。クラウドを利用しない場合は、どういうことになるでしょうか?まず、自社の要求に完璧にマッチするサーバを選択します。ただし、Webでのアクセス数がどれくらいになるかは前もって明確に判断することはできませんので、多少オーバスペックのものを選ぶことになります。また、一年のうち特定の時期にだけ稼働率が上がるという場合でも、最も稼働率が高い時をターゲットとして、機器の選択をしなくてはなりません。サーバを選定したら、それを調達します。これまでで多分、数週間かかります。運用を開始した後でも、メンテナンス、性能増強時のハードウェア調達など仕事が残ります。

 しかし、クラウドなら自社で調達するよりもはるかに小さな初期費用で導入できます。また、負荷に合わせて追加のサーバを起動したり、停止したりすることが容易ですので、将来のために予めオーバスペックのサービスを利用するという必要もありません。しかもメンテナンスや、セキュリティ対策や、運用人員の確保、あるいはハードウェアの置き場の確保/空調/入退出管理など全くいりません。


4.2.2 クラウドのデメリット

 もちろん、クラウドはいいことばかりではありません。クラウドサービスは既製品を買うようなものですので、クラウドを運営する会社が提示するサービスメニューから、使いたいものを選んで利用することになります。自分の会社のニーズに合わせてカスタマイズするというようなことはできません。ただし、会計ソフトのクラウドサービスのように一般的なものは、個々の会社の状況に合わせて設定できるように多くの項目を備えてその中から自社のニーズに合わせて選択することができますので、それほど不自由ということはないでしょう。


4.3 クラウドの利用形態

 クラウドコンピューティングのサービスは多様化が進んでおり、サービス提供形態を類型化するのは非常に難しくなっていますが、大きく分けるとSaaS(Software as a Service、サービスとしてのソフトウェア)、PaaS(Platform as a Service、サービスとしてのプラットフォーム)、IaaS(Infrastructure as a Service、サービスとしてのインフラストラクチャ)に分けることができます。



4.3.1 SaaS

 SaaSはソフトウェアをサービスとして提供することです。主として業務で使うソフトウェアのサービスをインターネット経由で利用します。1つのサーバを複数の企業で利用しますが、個々のユーザ毎のデータは分離されています。

 自前でソフトウェアを用意する場合は、ソフトウェアにバグがあっても、基本的には自分でパッチを当てたり、バージョンアップしたりしなくてはなりませんが、クラウドサービスを利用する場合は業者にやってもらえます。ソフトウェアの管理運用は業者側が行い、ユーザはただそれを利用するだけですので、セキュリティへの対応も全部業者に任せることができます。

 通常、サービス契約をするとすぐに使い始めることができます。SaaSを利用する場合は、ユーザのアカウントを用意することだけで直ぐに始めることができます。自分でパッケージを購入する場合と比較すると大幅に導入までの期間を短縮することができます。

 SaaSは会社のパソコンからだけではなく、外出先からも利用できますので、外回りが多いい営業マンには便利だと思います。

 SaaSの代表的な例としてはWebメール(Gmailなど)、グループウェア、CRM(顧客管理システム、Customer Relationship Management)などがあります。Google AppsなどもSaaSとなります。


4.3.2 PaaS

 PaaSは、サービスとしてプラットフォームを提供するタイプのクラウドサービスです。Web系のサービスや、スマートフォンやタブレット向けのモバイルサービスを開発する場合は、ネットワークやセキュリティなどの実験環境を予め用意しなくてはならないのですが、これは中小の企業にとっては高いハードルとなります。クラウド業者がネットワークやセキュリティなどのインフラと、Java、PHP、Rubyなどが自由に利用できる開発環境を用意してくれれば、中小の開発企業でも余裕をもって業務をスタートさせることができます。

 PaaSの例としては、Google App Engine、米マイクロソフトのWindows Azureなどがあります。


4.3.3 IaaS

 IaaSはインフラを提供するサービスですので、サーバやハードディスク、あるいはセキュリティシステム、CPU、メモリなどのハードウェアリソースを貸し出すサービスということになります。

 サーバを貸し出すサービスは、一般的にはレンタルサーバと呼ばれます。レンタルサーバと呼ばれるサーバ提供方式は、共用サーバ、あるいは専用サーバ、VPS(仮想専用サーバ)を貸し出すサービスですが、通常はレンタルするリソースが固定的です。ハードディスクの容量はどれ位にするか、メモリはどれ位にするかが固定的です。しかし、これでは突発的な要求に対応できないことがあります。そこで、このレンタルの仕方をもっと柔軟にしたサービスが求められることになりました。これがクラウド型のIaaSです。クラウド型のIaaSは基本的には従量制のサービスになりますので、長期に使うと予想外の経費がかかりますので注意してください。

 ハードディスクを貸し出す場合も柔軟性を重視して、従量制になるとクラウドとなります。特にハードウェアに焦点を絞ったオンラインストレージのようなものになりますと、HaaS(Hardware as a Service)という言い方をされることがあります。これに対して、仮想サーバにネットワークも一緒にしたようなインフラ全体ということになりますと、IaaSということもあります。

※VPSとIaaSは区別がつきにくい用語です。あえて区別する必要はないという考え方もあると思います。実際、技術的には同じものと言っていいと思います。ただし、商売の仕方としては違うというべきです。あえてサービス名を変えて商売をやりやすくしているとも言えます。大学の合格発表用にサーバをレンタルするという場面を考えてみましょう。VPSという場合は、細かくスペックを指定しています。CPUはどれくらいの能力で、メモリの容量はいくつで、ハードディスクの容量はいくつという感じです。これで経費の計算が行われます。しかし、クラウドという場合はもっと柔軟です。合格発表日にはどれくらいアクセスがあるか分からないので、突発的なアクセス増でも対処できるように契約すれば、クラウドという契約形式になると思います。もちろんクラウドという契約形態をとれば、VPSと比較して、少し割高になることは仕方ありません。


4.4 パブリッククラウドとプライベートクラウド

 ここまではインターネットを使い外の会社が提供するクラウドサービスを利用するという前提で話を進めてきましたが、このようなインターネット上のクラウドサービスをパブリッククラウドといいます。無料のブログサービスなどもパブリッククラウドに当たります。

 これに対して、比較的大きな会社、大学等が独自に専用環境を構築し、この環境から、自分の組織内の各部門に対してクラウドサービスを提供するような形態をプライベートクラウドといいます。プライベートクラウドは、自分の組織で構築し、自分の組織だけで利用しますので、自分の使い勝手のいいようにカスタマイズして使うことが可能です。しかし、構築・維持・管理には大きな負担がかかります。









参考資料
・ CPU(wikipedia https://www.ja.wikipedia.org/wiki/CPU)
・ プログラミングのきほん 河村 進 翔泳社
・ クラウドの基本 林 雅之 SB Creative
更新記録
2017/1/16        作成































































































































































 ページの先頭へ