見出し画像

現役システムエンジニアが東証システム障害を解説してみた

東京証券取引所で、大規模なシステム障害が発生し、終日株式売買が停止した事件が話題になりました。

この記事では、現役システムエンジニアが、ITに詳しくない方でもわかりやすく東証システム障害ついて解説してみます。

東証が開いた会見を紐解いて、システム障害の内容を理解します。

1.東京証券取引所とは

画像2

東京証券取引所とは、株式などの売買取引を行うための日本最大の施設です。

昔は、立ち会い取引といい、人と人が直接コミュニケーションして株式などの売買取引を行っていました。しかし、株式などの売買取引件数の増大や高速化が求められ、1999年には売買が完全にシステム化されました。


2.arrowheadとは

スクリーンショット 2020-10-03 0.22.09

arrowheadとは、東京証券取引所が運営する株式などを売買するためのコンピュータシステムです。アローヘッドと読みます。

arrowheadは、富士通社がシステム開発を担当した株式等売買システムです。


3.2020年東証システム障害の記者会見

画像4

2020年10月1日、東京証券取引所のarrowheadで大規模なシステム障害発生し、終日株式売買が停止する事態になりました。株式の売買が終日停止するのは、1999年以降、arrowheadが稼働してから初めてのことです。(一時的な停止や半日の停止は過去にも複数回、発生しています)

同日、東京証券取引所は記者会見を開き、謝罪とシステム障害の原因などを説明しました。この記事では、東証の記者会見での発言を紐解いて、システム障害の概要を理解していきます。

(1)記者会見資料

スクリーンショット 2020-10-02 22.42.46

出典:日本取引所グループ(JPX)サイトより

ITに明るくない方は、思わず目をふさぎたくなるようなパワーポイント資料に感じることでしょう。東証CIOの横山氏が、これを噛み砕いて会見で説明をしていましたので、これ以降、横山氏の発言を分析して理解を深めていきます。

(2)東証CIO 常務執行役員 横山氏の説明

横山氏:経緯でございますが、本日 7 時 04 分に、資料にございますが、arrowhead は大きく注文売買系のサーバのつながりと運用系のネットワークに分かれているのですが、この運用系のネットワークのほうの共有ディスク装置 1 号機のメモリ故障が発生いたしました。
出典:日本取引所グループ(JPX)サイトより 以下同様

(A)サーバとは

画像5

サーバとは、システムの機能を提供する高性能なコンピュータです。

一般的なパソコンと比べて、高速に処理できたり、多少のことではフリーズしたりしないよう、しっかり作られた大型の装置です。

arrowheadは、約350台ものサーバが稼働する非常に大規模なシステムです。

(B)ネットワークとは

画像6

ネットワークとは、複数のコンピュータを接続する仕掛けです。

身近な例では、スマートフォンやパソコンも、他のコンピュータに接続できることで、便利に使うことができます。例えば、google検索をするとき、あなたのスマートフォンやパソコンから、google社のサーバに接続することで実現しています。これは、ネットワークがあるおかげで、遠く離れたgoogle社のシステムへ接続できるのです。

arrowheadは、約350台ものサーバや証券会社のシステムなど、たくさんのコンピュータが複雑に接続するネットワークを持っています。

(C)共有ディスク装置とは

画像7

共有ディスク装置とは、大量のデータを記憶する高性能な装置です。

arrowheadのような大規模システムでは、大量のデータを高速に読み書きでき、かつデータが消失しないようにしておく必要があります。これを実現するために共有ディスク装置を使います。共有ディスク装置は、複数のサーバから大量のデータを高速かつ安全に読み書きするための仕掛けを提供します。

例えば、普通のパソコンは、データを記憶するための部品が1つだけ搭載されていることがほとんどです。具体的な部品の種類としては、ハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)が有名です。このため、HDDやSSDが故障してしまうと、せっかく保存していた大切なデータが失われてしまうことがあります。

一方、共有ディスク装置は、大量のデータを安全に記憶するため、ひとつの装置にたくさんのHDDやSDDを搭載しています。また、たくさんのHDDやSSDを制御するための専用機構(コントローラ)が内蔵されています。

共有ディスク装置のコントローラは、複数のサーバからデータの読み書きのリクエストを受付して、HDDやSSDからデータを取り出し、素早く安全にサーバへ受け渡す役目を果たしています。

さらに、共有ディスク装置は、たくさんのHDDやSSDを搭載しているため、仮に1つや2つのHDD・SSDが故障したとしても、残りのHDD・SSDで助け合うことでデータの消失を防ぐことができます。この制御も共有ディスク装置のコントローラが担います。

上記のように、共有ディスクのコントローラは、こうした複雑な制御を高速かつ安全にこなす必要があります。この複雑な制御を実現するために、共有ディスク装置には、HDDやSSDとは別に、メモリ装置(一時的にデータを保持しておくための作業場所)を内蔵しています。

・・・

(A)(B)(C)の説明を踏まえて、横山氏の発言を整理すると「arrowheadの共有ディスク装置に内蔵されたメモリ部品が故障して、複数のサーバに異常が発生してしまった」という主旨の説明であることがわかります。

※「注文売買系」「運用系」の用語は、東証システム特有の用語なので説明は割愛します。システム障害の概要理解には不必要な用語なので、よくわからなくても大丈夫です。

横山氏:本来であれば、これは 1 号機、2 号機と両現用で運行しておりますので、いわゆるフェイルオーバーという形で切り替わるはずでしたが、こちらに切り替わりが正常に行われないという事象が発生しました。

(D)両現用とは

画像8

両現用とは、同じ装置を複数用意しておいて、そのすべてを常に同時に動かすことでシステムを停止しにくくするシステム設計です。

今回故障のあったarrowheadの共有ディスク装置は、同じ装置が2台用意されており、常に両方とも動いている状態です。もし片方の共有ディスク装置に故障が発生してしまっても、もう片方の健全な装置を引き続き使えば、システム全体としては、停止することなく稼働できるようにしています。

(E)フェイルオーバーとは

画像9

フェイルオーバーとは、装置などに異常が発生したとき、別の健全な装置へ、その役目を自動的に切り換える機能です。

今回故障のあったarrowheadの共有ディスク装置は、1号機に故障が発生しましたが、その場合は、1号機の役目を2号機へ自動的に切替する仕組みになっていました。

・・・

(D)(E)の説明を踏まえて、横山氏の発言を整理すると共有ディスク装置は、故障が発生しても大丈夫なように2台用意していたにも関わらず、1号機が故障したのに自動的に2号機へうまく切り替わらなかった」という主旨の説明であることがわかります。

横山氏:その結果として起きた事象でございますが、右上にございます情報配信ゲートウェイ、これは相場情報を相場ユーザーに配信するためのサーバでございますが、こちらのほうの配信処理に異常が発生しました。また右下のほうにございますが、これは取引所側で売買監視をしている売買監視サーバ、監視端末、監視処理のほうに処理異常が発生しました。このふたつの事象が、もともとの共有ディス ク装置の機器故障およびうまくフェイルオーバーできなかったことの結果事象として発生しました。

ここの発言は、東証システム特有の用語ですが、「共有ディスク装置のフェイルオーバーに失敗したせいで、株式相場を外部へお知らせできなくなったり、売買の監視ができなくなったりしてしまった」という主旨の説明になっています。

横山氏:結果事象に沿い申し上げますと、右上の情報配信ゲートウェイから、いわゆる相場情報が配信できなくなったということでございまして、売買停止をせざるを得ないという判断のもと、 証券会社からの注文経路、すなわち参加者ゲートウェイというところの左側に遮断と書いてございますが、この部位と情報配信ゲートウェイ、相場ユーザーのほうに情報が出ていく部位でございますが、こちらを前場開始前に遮断をいたしまして、売買を停止するという処理を行ったところでございます。

(F)ゲートウェイとは

画像10

ゲートウェイとは、データをやり取りする際に、その中継の役目を担う装置(サーバ)です。

野球を例にすると、「ホームラン一歩手前」の特大ヒットがきたら、外野手からは遠くていきなり塁へ送球できないので、別の人が一旦受け取り、中継して塁に送球することがよくあります。

これと同じように、コンピュータの世界でも、いきなり直接データを渡せないので、一旦ゲートウェイに中継してもらってデータを渡す、ということがよくあります。

具体的には、ゲートウェイは、受け取ったデータを解釈しやすいデータ形式に編集してデータを送出します。

・・・

(F)の説明を踏まえて、横山氏の発言を整理すると「証券会社からの注文を受け付ける部分(参加者ゲートウェイ)と相場情報を配信する部分(情報配信ゲートウェイ)のネットワークを切断して、arrowheadでの売買を停止したという主旨の説明であることがわかります。

横山氏:共有ディスク装置がうまく切り替わらないことについては、 本来自動で切り替わるところを強制的に切断して、共有ディスク装置2号機のみで稼働できるという状態ではありましたものの、全体の状況を見ますと、売買を再開するためには、システム再起動を行う必要があるという判断をしまして、全体システム再起動を行った場合には (中略) 投資家や市場参加者に相当の混乱が生じることが想定され、また、市場参加者等との話の中で、顧客対応、円滑な売買の実施の困難さということで、終日売買停止に至ったというところでございます。

ここまで、頑張って読んでくれた方は、もしかすると、解説なしで理解できてしまった方もおられるかもしれません。その方はおめでとうございます。
一応解説しておくと「本当だったら、健全な共有ディスク装置2号機に自動切替するはずだったが、そうならなかったので、仕方なく手動で2号機に切替した。これには成功し、共有ディスク装置自体は単独で見れば復旧した。しかし、arrowheadシステム全体で見ると、一度arrowheadをまるごと最初から立ち上げ直す必要があることがわかった。arrowheadをまるごと再起動すると、arrowheadに接続する証券会社のシステムや投資家に迷惑がかかるので、復旧はあきらめて終日売買停止させた」という主旨の説明であることがわかります。

横山氏:明日の市場再開に向けてというところですが、本日中に共有ディスク装置の故障したメモリについての交換をいたしまして、全体システム再立ち上げ、そして、1 号機、2 号機で正常に稼働していることの確認を実施し、明日正常に市場を再開するための準備を進めるという予定であります。

「故障部品の交換とarrowhead全体の再起動は完了できたので、明日(10月2日)はいつもどおり稼働させる」という主旨の説明です。

横山氏:また、これは非常にレアなケースではありましたけれども、 共有ディスク装置のメモリなどの機器故障の切り替えが正常に行われないということがないように、同故障発生時には、速やかに本日行ったような遮断処理と、2号機ないしは 2 号機から 1 号機への切り替えというものが速やかに行われ、売買に影響がないような態勢、これは人的に監視をし、強制的に切断をするという態勢でございますけれども、こちらの態勢は当分の間敷きまして、本日のような事象が起きないようにしていきたいと考えています。私からの説明は以上です。

「共有ディスク装置が故障したのに自動切替ができない事象は、非常にまれなことではあるが、実際に今日起きてしまったので、明日以降も起きるかもしれない。このため、ちゃんと原因がわかるまでの当面の間、人がしっかり監視して、今日のようなことが発生したら、すぐさま手動で切替するように態勢を整えておく」という主旨の説明です。


4.問題点

4.1.フェイルオーバーができなかった

会見で東証CIOの横山氏も明言していますが、共有ディスク装置が故障したにも関わらず、自動的に切替されなかったことが問題です。

フェイルオーバーが成功していれば、終日売買停止という事態にはならなかったでしょう。

なぜ、フェイルオーバーできなかったのかの原因は、記事執筆時点で明らかになっていませんが、考えられる原因は2つあります。

(推定原因1)共有ディスク装置1号機が死にきれなかった

共有ディスク装置が完全に故障したわけではなく中途半端に故障していた場合、システムが共有ディスク装置1号機を故障と検知できなかった可能性があります。

システムは、システムの状態が健全であることを定期にチェックする仕組みがあります。専門用語で「死活監視」「ヘルスチェック」などと呼びます。

死活監視のやり方は2方向あります。ひとつは、

共有ディスク装置1号機くん「ごめん・・・。ぼく、もう死にそうなので、あとはよろしくお願いします・・・」

のように、故障した装置が、異常をシステムに通知する方向です。もうひとつはその逆で

共有ディスク装置2号機くん「おい、1号機、大丈夫か・・・!?うむ、ダメそうだな、あとはオレに任せておけ!」

のように、健全な装置が、異常に気が付く方向です。

さらに、この組み合わせで、どちらも相互にやるケースもあります。

死活監視で、故障を検知しなければ、そもそもシステムは自動切替をしようとすらしないので、このような障害に発展する可能性があります。

(推定原因2)自動切替を担うプログラムに不具合があった

死活監視でシステムは故障を検知し、自動切替の発動はしたものの、切替プログラムに不具合があり、うまく切替ができなかった可能性があります。

東証CIOの横山氏は、会見の中で「arrowheadが稼働する前にフェイルオーバーのテストは実施済でそのときは問題なかった」旨の発言をしています。このため、極めてまれな特定の条件を満たす場合に限って、自動切替がうまく作動できないバグが内在していた可能性があります。

稼働前テストでは、実際に装置をぶっ壊して確認するわけにはいかないケースも多くあります。このため、今回のように手動切替ができたことをもって、テスト合格とした可能性もあると考えられます。

5.現役システムエンジニアの筆者が感じたこと

5.1.システム障害が与える社会的影響の重さ

筆者も、重要システムの開発・運用に携わる身として、引き締まる事件でした。日常のちょっと気の緩みや慢心・過信、スキル不足が起因して、少しのミスが大きなシステム障害に発展するリスクがあります。

ITエンジニアは全員、システム障害など起こしたくて起こしているのではないのです。それでも起きてしまう障害については、必死に復旧し、点検し、再発防止を積み重ねて、安定稼働を誓うのです。

5.2.システム品質へのこだわりと限界

今回の事件では、このような障害が発生することが事前に想定できていなかったことが、被害を拡大している要因であることは間違いありません。

だったら「事前に想定してなかったのが悪いのではないか」ということになりますが、ここはかなり心苦しいですが、正直なところ限界があると考えます。

システム開発・運用は、限られたコスト・人員の中で行う必要がある、という「リソースの制約」が必ずついて回ります。何万何億とあるすべてのシステム障害パターンを事前に洗い出し、それに対するすべての対応策を完璧に整備することは、無限にリソースがあれば話は別ですが、基本的には不可能です。ましてや、arrowheadのような多額のコストを投じて開発した大規模システムであっても、このような事態に発展するわけですから、きりがないわけです。

このため、現場のITエンジニアたちは、発生確率の高い障害や、障害が発生したときの影響度の大きい想定事象をある程度、選別して、対応策を練っておくで、少しでも安定した稼働ができるように備えることになります。

・・・

最近は、金融システムやクラウドサービスのシステム不具合や不正利用に関するニュースによく触れます。いまや、システム化は当たり前の時代。利便性やコスト、政治的理由などに左右されず、高品質なシステム開発を素直にできる環境・社会情勢になることを願うばかりです。

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
note.user.nickname || note.user.urlname

最後まで読んでいただきありがとうございます!うれしいです!

ありがとうございます!うれしいです!
25
大手SIerで働く現役システムエンジニア◯顧客先常駐SE◯PMP・応用情報技術者◯趣味:飲食店めぐり・ピアノ演奏・ゴルフ・散歩・ゲーム(Cities:Skylines)・プログラミング(C言語・VBA)◯奥さまと2人暮らし◯高度情報処理勉強中