Oswald Regular
OpenSans Regular
より安心なシステム
実際に役立つソフトウェアの“噴出防止装置”

2010年メキシコ湾での大規模な石油流出事故が起きるまで“噴出防止装置”という言葉を耳にしたことがある人はほとんどいませんでした。噴出防止装置は、海底油井上面に設置された数百トンもの一種の機械で、油回収と生態系に及ぼす影響に対してきわめて重要な装置として連日報道されました。正常時には、油は噴出防止装置を通じて油井から回収パイプに連続的に流れ込みます。もし問題が発生した時には、パイプを締め付ける巨大な水撃ポンプを作動させることになっています。明らかに、噴出防止装置を作動させることは通常の出来事ではなく、作動させないと大惨事になるときに限られます。

幸いなことに、掘削事故はほとんど発生しません。それとは対照的に、業務データ処理システムでは障害が頻繁に発生します。電源が落ちてもバックアップに電源が入らない、冗長構成でもコンピュータがクラッシュする、RAID配列にもかかわらずディスクドライブが故障する、訓練を受けているはずなのに誤ってボタンを押してしまう、不良データがシステムに紛れ込み作業を台無しにする、データベースが機能しなくなりデータをロードできない、ネットワークが輻輳しトランザクションが消失する…。これらのシステムに問題が発生した場合、運が良ければ事態はそれ以上悪化しません。しかし、不運に見舞われると、メキシコ湾での油井事故と同様に、データが溢れ出す”噴出”が起き、大混乱に陥ります。すると、作業員たちはシステムを停止し、できる限りデータを修復しなければならなくなります。運用を再開すると、別の”噴出”が発生しさらにデータが失われ混乱に陥る可能性もあり、大変危険です。

ソフトウェア開発者は人を怖がらせるので“噴出”という表現を使うのを嫌がります。しかし、障害が発生すると通常はこうなります。色々なデータが正しくなくなり、システムの構成要素は機能を完全に停止するか一時的に無効になります。

過去数十年間、ソフトウェアエンジニアはこの種の問題と闘ってきました。しかし、システムはそれぞれ異なり、また“ソフトウェア噴出防止装置”は特注で設計するため、フェイルセーフシステムを構築することは極めて困難です。さらに、よくわかっていない人が設計することさえあります。コストが高くなるので、ソフトウェアエンジニアは手抜きの誘惑に駆られます。これまで何回「ここは障害を起こすわけがない」という言葉を耳にしたことでしょう。障害の原因についての理解が欠けているため、このようなシステムのテストは無計画に実行される傾向があります。さらに悪いことに、堅牢性を追求するほど、高パフォーマンスなどデータ処理システムの他のニーズと対立することがあります。これらを両立させることはできません。システムの堅牢性は証明できなくても、パフォーマンスなどの事業目標の達成度は簡単に評価できるので、堅牢性は後回しにされがちです。

新しいアプローチ

Ab Initioは、このようなデータ処理の障害を防止する別のアプローチを採用しました。Ab Initioのソフトウェアは、アプリケーションが堅牢で使いやすく、高いパフォーマンスを発揮するよう一から設計を行いました。Ab Initioで開発されたソフトウェアにはこのアプローチが組み込まれており、ユーザーが業務要件に集中し、障害に見舞われないことを確信できるようにしました。

Ab Initioアプリケーションを複数の処理がデータを流すパイプを通じてまとめられたものとして考えてみてください。データはこれらのパイプを通り次の処理へと高速で流れていきます。ときには、ある処理に複数の入力パイプや出力パイプが接続されていることもあります。これらのパイプは、データストリームを受け入れたり生成したりするデータ保存装置やその他の処理システムに最終的につながります。これらの処理とデータパイプの相互接続システムは、ニューヨーク市の地下鉄路線図よりはるかに大きく複雑かもしれません。

Ab Initioのチェックポイントメカニズムは、これらデータパイプに取り付けられた弁のような複数のチェックポイントで構成されています。一般に、全体的処理システムの入力と出力には一組のチェックポイントがあります。また、処理システムの戦略上のポイントにもチェックポイントが設置されていることがあります。さらに、これらのチェックポイントにデータを保存することができ、データをコピーしてからシステム内の次のセクションに渡す場合もあります。これらのチェックポイントの一部はユーザーが指定できますが、他のチェックポイントはAb Initioソフトウェアが自動的に配置します。これらのチェックポイントのほとんどはAb Initioソフトウェアで実装されますが、一部はデータベースやメッセージキューなどの他のソフトウェアテクノロジで実装されます。最も重要な点は、これらのチェックポイントが中央コントローラであるAb Initio Co>Operating Systemにすべて接続されていて、この中央コントローラが厳密に同期させて弁の開閉を行うということです。

Co>Operating Systemは、高パフォーマンスの並列分散処理と、障害発生時にもきわめて堅牢であることを目的としています。したがって、ネットワーク上のサーバーの間やあらゆる種類の外部システムとつながっているパイプを通じて大量のデータが高速で流れている間、Co>Operating Systemは”噴出”が発生しないか用心深く目を光らせています。

最悪の事態が発生した場合

Co>Operating Systemはチェックポイントの開閉を慎重に行っているため、噴出が発生しても失われるデータはチェックポイントの間を流れているデータに限られます。しかも、Co>Operating Systemは危険にさらされる可能性があるデータのコピーをタンクに保管していて、さらにシステムに出入りするデータの流量を正確に把握しているので、実際には失われるデータはありません。障害の原因が解決されると、Co>Operating Systemを再起動できるようになり、アプリケーションが適切な位置から自動的に再開されます。Co>Operating Systemはタンクから取り出した正しいデータでデータパイプを再度満たすので、“まるで障害など発生しなかったかのように”事態が収まります。しかも、これは誰もが待ち望んでいるニュースですが、噴出が発生しても負傷者はゼロ、失われたデータもゼロで、パイプが修復されるとポンプはすぐにまた動き始めます。これ以上何を望めるでしょうか。

チェックポイント機能には、ここで説明を省略した2フェーズコミット、チェックポイントトリガー、コントロールメッセージ、トランザクションマネージャ、XAプロトコルなどが含まれます。Ab Initioを使うと、ユーザーはその機能を簡単に、そして安心して利用できます。

English
Français
Español
Deutsch
简体中文
言語:
日本語