今月は専用機「NonStopサーバー」の仕掛けと、Facebookの中でのMySQL 5.6への対応状況、使い方をウォッチします。
今月は「止まらない」ことをとことん追求し、OSと一体化して稼働するデータベース「HP NonStop SQL」と、フェイスブックにおけるMySQLの運用について紹介します。
本連載では、普段はオープンシステムやオープンソースのデータベースを対象に取材していますが、今回のHP「NonStopサーバー」はハードウェア、OS(NonStop OS)、データベース(NonStop SQL)、全てが一体化した独自設計の商用製品です。
金融や通信業界のミッションクリティカルやハイエンドの領域で多くの実績があり、全世界のATMトランザクションの70%、クレジットカードトランザクションの3分の2はNonStopサーバーが処理しているといわれています。
日本ヒューレットパッカード プリセールス統括本部サーバー技術本部 山本呈氏と原敏光氏が解説してくれました。
歴史をさかのぼるとNonStopサーバーはタンデムコンピューターズの誕生のきっかけでもあり、39年という長い実績があります。データベースで有名なジム・グレイ氏もこの製品初期のRDB設計に関わっています。今でもシステムは進化し続け、2013年には新製品「HP Integrity NonStop BladeSystem NB56000c」を発表しました。
専用設計ということもあり、一昔前はオープンシステムに比べて割高感があったものの、近年ではハードウェアを汎用的な部品で構成することで価格はUNIXでクラスタを構成する環境とほぼ同程度に収まってきているそうです。トータルで考えればダウンがほぼ発生しないため、運用コストやソフトウェアライセンスを抑えられるというメリットがあります。実際の継続性はHPによると「NonStop SQLのシステムダウンタイム発生率(実績)は年間0.026%」だそうです。
では「止まらない」をどうやって実現しているのかが気になりますよね。回答としては3つありますが、この製品のキモとなるのは(2)です。
ハードウェアが二重化してあるだけではなく、OS(NonStop OS)が、プロセスレベルで冗長化しています。言い換えると、プライマリとなるプロセスには必ず影武者のようなバックアップのプロセスがいて、物理的に別のCPUに配置されています。平常時にはプライマリのプロセスはどこまで処理したかを刻々とバックアップに伝え、バックアップはプライマリの処理進捗(しんちょく)を聞いています。いざとなったらバックアップが引き継ぎます。
またNonStop OSは疎結合マルチCPUを最大限活用するために設計されており、マイクロカーネル技術をベースとしています。これに対してUNIX、Windowsなどは全てのOS機能をカーネルの中に実装する「モノリシック(一枚岩)カーネル」です。
モノリシックカーネルの思想で設計されたOSの場合は、全てのサーバー資源を共有していることから、メリットはOS自体がシンプルで低オーバーヘッドにできる点にあります。一方で、どこかで障害が起きればOS全体が停止するというデメリットがあります。このため、対策としてクラスタリング構成の採用などが必要になります。
これに比べると、マイクロカーネル型アーキテクチャを採用しているNonStop OSは複雑でオーバーヘッドがあるものの、リソースそれぞれが独立して稼働するため、単一サーバー(論理CPU)に障害が起きてもOS全体が停止しなくて済むという違いがあります。
プロセスのペアやマイクロカーネルという特徴があると、CPU間の通信が重要になります。NonStop OS内部の通信はHP ServerNetという専用のハードウェア、専用のメッセージシステムで実装しており、高速かつ負荷が低くなるように設計されています。
ところでサーバー内部の高速データ転送(インターコネクト)といえば、Infinibandがありますね。実はInfinibandの仕様策定にはHP(当時はコンパック)が貢献したそうです。NonStopサーバーのServerNetで培われた技術はInfinibandにも生かされています。
さてデータベースはどうか。NonStopサーバーで稼働するデータベースは「NonStop SQL」です。止まらないように設計されたNonStop OSと一体化して稼働するデータベースなので、可用性は抜群です。特殊なOSと一体化しているのだからデータベースとしても「特殊では?」と思うかもしれませんが、ANSI 99準拠。そのため標準的なSQLを用いていれば(製品固有の機能を駆使していなければ)、移行も十分可能です。
データベースとして興味深いのが「優先度制御機能」です。NonStop SQLでは1台で複数業務を稼働させることが可能なので、複数業務を稼働させるときには業務ごとに優先度を設定できます。高優先度のリクエストには他の業務に影響されることなく、高いレスポンスを維持できます。
最後に余談ですが、かつて筆者はクレジットカードを不正使用されそうになったことがあります。幸いなことに犯人の3件目の買い物で不正が検知され、筆者に実被害は及びませんでした。3件目で検知できたのは、システムが過去の利用履歴と照らし合わせて、「本人の購買行動かどうか」を判断したためです。犯人が百貨店でブランドバックを立て続けに購入したところ、筆者が過去にブランドバックを購入したことがまずないためか「おかしい(この人らしくない)」と検知されたようです。こうしたシステムでは過去の利用履歴の分析と購買処理を同時に行います。
こうした過去実績分析は、NonStopサーバーではよくある利用例だそうです。筆者が損害を被らなかったのも、NonStopサーバーのおかげだったのかもしれません。
Copyright © ITmedia, Inc. All Rights Reserved.