[画像のクリックで拡大表示]
[画像のクリックで拡大表示]
[画像のクリックで拡大表示]
[画像のクリックで拡大表示]
[画像のクリックで拡大表示]
[画像のクリックで拡大表示]
[画像のクリックで拡大表示]

 JR浜松町駅から東京モノレールに乗り換え、天王洲アイル駅で下車して徒歩1分。私とS記者は、日本ヒューレット・パッカード株式会社(以下HP)にやってきました。お目当ては「HP NonStop Server(以下NonStopサーバー)」です。名前が示す通り「止らないサーバー」というわけですが、その仕組みをどうやって実現しているのでしょう。どうやってプログラムを作るのでしょう。どんなところで使われているでしょう。HPの浅野さんと原さんが、丁寧に説明してくれました。

NonStopサーバは二人乗りの自転車のようなもの

浅野:まず、NonStopサーバの歴史を紹介しましょう。HPに勤務していたJimmy Treybigが、1974年にベンチャー企業としてTandem Computersを設立したことが、事の起こりです。タンデムという言葉から、二人乗り(二人で漕げる)自転車をイメージしてください。Computersと末尾に複数を表すsが付いていることに注目してください。つまり、同じことを二つのコンピュータに並列処理させて信頼性と耐障害性を向上するのが、NonStopサーバーの基本的な仕組みです。どちらか一方がダウンしても、他方によってシステムは動き続けることができます。1976年に、現在のNonStopサーバの先祖にあたる一号機が銀行に納入されました。その後、タンデムがコンパックと合併してNonStopヒマラヤという製品が出て、さらにコンパックがHPと合併して現在のNonStopサーバーになったのです。

 ヒマラヤとは、なかなか力強い製品名だ。 動かざること山のごとし...、じゃなくて止らないのでしたね。失礼しました。デモルームで、NonStopサーバーの実機を見せてもらった。小さな冷蔵庫ぐらいのサイズだ。ふたを開けると、CPUユニットもディスクもファンもバッテリーも、何でも二つずつ入っている。こりゃ仕組みがわかりやすいや。

浅野:製品のグレードが違っても、筐体や内部のユニットのサイズは同じになっています。そのため、簡単にユニットを交換できます。台数を増やすだけで、簡単に処理能力を向上できます。万一電源が切れた場合はバッテリーで動作させるのですが、その間にディスク装置のアームの位置や、プログラムの実行位置などを記憶しておきます。電源が復帰すれば、すぐにノーオペレーションで処理を継続できるのです。

 お値段を聞くと、最小構成の2CPUで1,000万円ぐらいとのこと。これまでに何台ぐらい出荷されたのですか? 日本国内で6,000CPUぐらい。それって筐体の数にすると何台ですか? 6,000を2で割ればいい。なるほど! 1CPUのNonStopサーバーということはあり得ないからですね。これまた、実にわかりやすい(実際には、1筐体内に2CPU以上の構成もあるので、6,000÷2=3,000台という数は目安である)。

ハードもソフトも多重化している

浅野:NonStopサーバーの仕組みを、より詳しく説明しましょう。ノンストップという言葉には、2つの意味があります。耐障害性すなわち止らないこと、そして無停止運用性すなわち止めずにメンテナンス(機器の増設、交換、設定変更、DBの再編成)ができることです。そのために、ハードウエアとソフトウエアの両方を多重化しています。コンピュータは、CPU、メモリ、I/O、ディスク装置から構成されているわけですが、それらすべてを多重化しているのです。CPUだけが複数あるマルチプロセッサとは異なります。ネットワークで接続された複数のコンピュータにディスクを共有させて同じ処理を行わせるクラスタ結合とも異なります。

 1つのシステムの中で、同じ装置が多重化されているんだ。それなら信頼性バッチリというのも納得できる。これまでの最高記録では、どのくらい止らずに稼動したのだろう?

浅野:企業が入っているビルの保守点検の都合で、どうしても1年に1回ぐらいは電源を切ることがあるので、ノンストップの記録は取っていません。とは言え、NonStopサーバーは、処理を絶対に止められない業務で使われていることが多いので、ビルの保守点検中も外部の電源車につないで動かし続けたことがあります。あの時は、オフィスは真っ暗であり、エレベータが使えなくて大変でした。

 スゴイなぁ! そこまでして止められない業務にこそNonStopサーバーが使われるんだ。ハードウエアの多重化は分かりましたが、ソフトウエアの多重化とはどういうことなんだろう?

原:プロセスを多重化するのです。ただし、複数のプロセスが同時に動くのではありません。一方が動作し、他方はメモリ上で待機しているだけです。これを「プロセスペア技術」と呼びます。動いている方がPrimaryで、待っている方がBackupです。Primaryがダウンした場合は、Backupがプロセスを引き継ぎます(BackupがPrimaryに昇格する)。この場合には、プロセスを先頭から再起動するのでなく、チェックポイントごとの区切りで処理を継続できるようになっています。

あなたにもNonStopプログラミングができる

 NonStopサーバーのOSであるNonStop Kernelとミドルウエア(DBやTPモニタなど)は、すべてプロセスペアとしてHPから提供されているそうだ。それでは、アプリケーションをどうやって作ればいいのだろう。画面に”Hello World”と出すだけでも、特殊なコーディングテクニックが必要なのだろうか?

原:アプリケーションは、複数コピーがメモリ上に置かれ、もしもダウンした場合はTPモニタによって他のCPUへ自動的にリカバリされるようになっています。以前は、特殊なNonStopプログラミングのテクニックが要求されましたが、現在では、ごく普通にコーディングすればOKです。強いて特殊なテクニックを挙げれば、適切なタイミングでチェックポイントの関数を呼び出すぐらいでしょう。主力言語は、昔はTAL、COBOL、FORTRAN、Pascalの順でしたが、今はC言語、COBOL、TALの順になっています。TAL(Transaction Application Language、タル)というのは、HP独自のプログラミング言語です。昔は、OS自体もTALで記述されていました。

 それでは、お決まりの”Hello World”をやっていただきましょう。パソコン上でエミュレータを使って実行するのですね。TALのコードは読めないけど、何となくPascalに似ている。こっちのC言語のコードなら分かるぞ。あれあれ、本当に普通のC言語のソースコードだ。うわっ! Visual Studioでコーディングできるんですか(Visual Studioを統合開発環境として使っているだけであって、作成されたプログラムが.NET Frameworkで動作するわけではない)。これなら、私でもNonStopサーバー用のアプリケーションを作れそうですね。「ファイル」メニューから「新規作成」を選ぶと「普通のアプリケーション」「SQLプロジェクト」「CORBAプロジェクト」などのアイコンが表示される。「ビルド(クロスコンパイラによるコンパイル)」が成功したら、エミュレータ上で動作を確認し、OKなら「配置」メニューでNonStopサーバにプログラムをコピーする。

とにかく真面目なヤツなんです

 NonStopサーバーの導入先を聞いてビックリ。銀行、クレジット会社、電話会社、電機メーカー、自動車メーカー、食品メーカー、旅行社、スーパーマーケット、デパート、ファーストフード、病院、保険会社、流通、商社、公共、...など、ありとあらゆる分野で使われている。きっと私も皆様も、普段の生活の中で何らかの形でNonStopサーバーのお世話になっているだろう。異なるシステムを統合するためのハブとしても使われているそうだ。可愛い冷蔵庫のようなNonStopサーバーが、ますます身近に感じられた。最後に、浅野さんにNonStopサーバーへの思いを熱く語っていただきましょう。

浅野:ちょっと変わったコンピュータであり面白そうだったので、NonStopサーバーに関わるようになりました。タンデム時代から長年の付き合いで、いろいろな進化を見てきたため、NonStopサーバを自分の子供のようだと思っています。お客様のところに納入するときは、ジーンとした感動を覚えます。後で様子を見に行ったとき、お客様から「止らないで動いているよ」と言っていただけるときが何より嬉しいです。あちこちで使われているのに脚光を浴びず目立たないので、親としてはちょっと寂しく感じますが、文句も言わず24時間×365日黙々と働き続ける真面目なヤツなんです。

 NonStopサーバーへの愛を感じる素晴らしいコメントですね。そんなHPの皆様に見守られながら地味に活躍している日本全国そして全世界のNonStopサーバー君たち、これからもノンストップでがんばってください!