2020-10-01 15:49 | カテゴリ:所見日記
今日はめったに起きない事が起きました。
東証がシステム障害(ハード故障によるクラスタシステムの不具合)で全取引停止となりました。

障害に伴う売買の停止について

障害に伴う売買の停止について【第2報】

障害に伴う売買の停止について【第3報】

障害に伴う売買の停止について【第4報・終日売買停止】
※これで今日は売買停止が確定

障害に伴う売買の停止について【第5報】

どこのハードが壊れたか不明なのでなんとも言えませんが、投資家は勿論非難ごうごうで、政府も怒るでしょうが、元SEとしては、これってしょうがないかなって思います。

ハード故障でシステムが止まらないようにするために、冗長化(クラスタ化)しますが、そう一言いえば簡単ですが、実際は凄く複雑です。

例えば、サーバ単体レベルでも、
・ハードディスク故障→RAIDで当たり前に冗長化
・ネットワークカード(NIC)故障→冗長化可能
・電源装置故障→冗長化可能
・冷却用FAN故障→冗長化可能
・メモリ故障→冗長化可能
・CPU故障→CPU縮退機能で冗長化可能
と、各ハードウェア部品毎に冗長化をする以外にも、サーバ自体を冗長化するクラスタシステムも可能です。

しかし、サーバごと冗長化するクラスタシステムは以下の二つに分類され、HAクラスタシステムの場合、クラスタを管理するサーバに障害(ハード・ソフト問わず)が発生した場合、正しくクラスタが動作しないので、あまりよくないです。
・HAクラスタシステム・・・サーバが故障したら待機系に切り替える
・負荷分散クラスタシステム・・・複数のサーバで処理の負荷を分散して実行するシステムで、同時に一つのサーバで障害が発生しても問題なく稼働する仕組みとなっている

そして、これらは、サーバ以外にもネットワーク機器(ルータ、スイッチ、セキュリティ機器等)でも同じ対応が取られているはずです。
というか、ネットワーク機器は障害が起きたらシステム全体に影響が及ぶので、基本冗長化します。

んで、さらに、もっと大規模な障害の場合、システム全体を予備システムに切り替えるというのがあります。
例えば、銀行は、基本的に、全く同じシステムを二か所(本番系、予備【災対】系)に作り(予備系はハードのスペックは劣るのが普通)、普段は本番系で運用し、大地震などで、本番系システムのあるデータセンターが使えなくなった時に、遠隔地にある予備系に切り替えて運用します。
そのため、夜間バッチでデータを毎日予備系に送って同期しています。
※某みずほ銀行は、本番系が東京、予備系が千葉にあるので、関東全域がダメになるような大規模災害時には銀行システムが止まってしまいます。これでは予備系の意味がないです。どうしてこういう意味のない事に大金を注ぎ込んでいるかというと、合併前の銀行が、それぞれ東京と千葉のデータセンターを使っていたってだけです。

・・・そして、システム運用の現場では、ハードに障害が起きた時に、正常に冗長化システムが稼働するかというテストは、運用上の制限から、実施するのは難しいです。
システム構築時に冗長化して、ちゃんとテストもして正常稼働を確認してますが、そこから10年、20年と年月が経てば、周辺システムが数多く構築され、ハードウェア障害が起きた時にに、冗長化が正常に動作し、周辺システム含めて全てが連動して問題なく動くかなんて、株価と同じく、神のみぞ知るです。
つまり、大金を掛けて構築した(冗長化は凄く余計に経費が掛かる)、冗長化システムが正常に稼働するなんて誰も分からないのです。
仮にテストを定期的にしたとしても、そこで問題が起きて、本番運用に影響が出たら、ただ事では済まないです。
だって、テストなんていう余計な事(本当は大事な事だけど)をして、本番運用が1分でも止まるってなったら大問題なので、そのリスクは犯さない(テストをしない)というのが普通です。
特に多数の証券会社が接続する東証のシステムは、その全てが連携してテストをしないといけないので、問題発生時の対応期間を考慮すると、仮にやるとしても、長期連休中の年一回ぐらいしかテスト出来ませんし、テスト自体にかなりの経費が掛かります。

もっと現実的な話をすると、システム構築時はデータ量が少なく、周辺システムも少ないので、切替時間が二時間とかだったのが、システムが稼働して10年とか経つと、データ量が多くなり、周辺システムも多くなるため、「やってみたら切替に30時間掛かるから、故障したハード交換して設定とかし直してる時間の方が短くて、待機系の存在意義0って事もありえます。無駄な経費とは正にこの事。

しかも、ハードが正常に待機系に切り替わって「はい正常終了♪」ってならないです。
ソフトウェアのデータベースというのは真正性が一番大事で、切替によってデータベースに不具合が出ていないか(先祖帰り)まで確認しないといけません。
だって昨日買った株が、データベース切替による不具合で、その取引がなかった事になってたら大問題でしょ?
株の所有権だけならまだしも、その取引による手数料とかまで考え出すと、そのデータ復旧作業は頭が痛くなる程大変です。
さらに、周辺システム含めて、全てのアプリが正常に稼働するか確認しなくてはならず、全部署・全ベンダーを動員したテストとなり、莫大な労力(人的・金的リソース)を消費します。

今回は東証でこれが起きましたが、基本大企業全部のシステムが同じ状況です。

冗長化テストで本番障害は許されない→冗長化テストをしない
※ハードウェア障害が起きない限り永遠に問題は具現化しないので、運が良ければ問題が起こらない


とりあえず、今日収益機会を逃した人は、飛行機事故に遭うぐらい運が悪かったなって感じで諦めるしかないですね。

【追記】
こんな感じでテストはやってたみたいですね。ただ、原因不明で自動で待機系に切り替わらなかったようです。
「根本原因、判明していない」 東証社長ら会見で謝罪
今回は1号機のメモリ故障で2号機に切り替わるクラスタシステムが正常に稼働しなかったという事で、おそらく1号機のメモリ故障冗長化をしておらず、2号機に切り替わるはずが切り替わらず、証券会社からの注文処理(トランザクション)が届いており、今更なしにしたら、証券会社側の対応が大変ということで、1日休場にしたようです。

対応策としては、待機系への切り替え(クラスタシステム)が正常に動かなかった原因究明と対応以外にも、1号機のメモリ故障を冗長化するというのが考えられます。
また、証券会社は東証へ送ったトランザクションのロールバック(取消し)対応についてもシステム対応すべきだと思いました。

↓コメントはツイッターからどうぞ ※忙しいと申し訳ありませんが、コメント返信出来ない事があります。
ツイッターアイコン1

↓応援クリックをして頂けたら感謝です。


↓拍手には特に意味はないのですが、ブログ内容の良し悪しパロメータとして使っています(´・ω・`)