2020年5月19日ダウンタイムの検証結果について

原文:Postmortem: Downtime, 19 May 2020

5月19日、BitMEXの取引エンジンにおいて予期せぬサーバーの再起動の結果、日本時間21:00から22:40の間に予定外のダウンタイムが発生することとなりました。調査の詳細を共有する前に、今回に出来事に影響を受けたすべての方々に改めてお詫びを申し上げます。このようなイベントがお客様に与える影響は非常に大きいことを十分に理解しております。このブログ記事では、今後のダウンタイムのリスクを最小限に抑えるために、可能な限りのことを行っていることを確認するため、当社が継続して行っている手順を概説しています。また、ユーザーがダウンタイムイベントに関連するリスクをどのように管理することができるかについても、いくつかのガイダンスを提供しています。

また、今回のイベント中にお客様の資金が危険にさらされたり、取引所がオフラインの間に清算が行われたりすることはなく、保留中ならびに新規のお客様の出金依頼はすべてオンラインに戻ってから90分以内に処理されたことを改めてお伝えします。

以下は何が起こったか、当社がどのように対応したかの要約です。

  1. 21:00 JST 取引エンジンのサーバーが予期せず再起動しオフラインに
  2. 21:01 JST  当社のエンジニアリングおよびDevOpsチームが、インシデント対応を開始
  3. 21:13 JST 当社のお客様は https://status.bitmex.com とBitMEXの公式 Telegramチャンネルでライブアラートを受信。その後、一連の更新メッセージが出来事の発生中にすべてのプラットフォームで発行
  4. 21:20 JST 取引エンジンのサービスが部分的に復旧し、当社のチームが業務再開に必要な次のステップを開始
  5. 21:38 JST 取引エンジンサーバーが突然再起動したため、当社のチームは取引エンジンをスタンバイサーバーに移行するための別の復旧手順を開始
  6. 21:41 JST 当社のクラウドプロバイダーは、両方のサーバーの再起動が基礎となるハードウェアの問題に関連していることを確認
  7. 22:04 JST 取引エンジンのサービスが正常に復旧
  8. 22:23 JST 取引プラットフォームは「市場は一時停止し、キャンセルのみのモード」でオンラインに戻り、22:40 JSTにすべての取引業務の再開に関する通知が顧客に送信
  9. 22:40 JST 取引が正常に再開
  10. 出金は23:00 JSTと24:00 JSTに処理

またこのようなことが起こる可能性はありますか?

BitMEXは24時間365日取引所を運営しており、完璧な稼働時間と中断のないサービスを提供するよう努めていますが、残念ながら、他の取引所と同様、これを保証することはできません。システムの安定性を検討する際には、内部プロセス、およびサードパーティプロバイダーの使用の両方に注目しながら、ダウンタイムのリスクを最小限に抑えるための措置を講じています。当社では、サービス稼働時間の完全な透明性を、当社のステータスページを介して提供しており、前年の情報が利用可能です。

BitMEXはプラットフォームの安定性を確保するために何をしているのでしょうか?

2017年から2019年の間、当社のエンジニアリングリソースのほとんどは、取引所のスケーリングに向けて割り当てられました[1][2]。これは、極端なボラティリティがあった時期の絶え間ない需要の増加を管理し、すべての顧客に最高品質のサービスを提供するために必要でした。2019年後半から、当社のエンジニアリングリソースは、プラットフォームのキャパシティの維持と継続的な増加を行いながら、高可用性とプラットフォームの復元力を確保することにさらに注力しています。

この二つの焦点を念頭に置いて、当社のエンジニアは多くのアーキテクチャ改善を設計し、実装してきました。これらの改善により、ソフトウェア/ハードウェアの障害がプラットフォームに与える影響が大幅に減少し、同等のフェイルオーバーを完了するのに必要な時間が短縮されました。最終的な目標は、単一のアベイラビリティゾーンに影響を与えるイベントを処理する際のダウンタイムをほぼゼロに近づけ、リージョンのアベイラビリティゾーンのダウンタイムを1時間未満にすることです。

アーキテクチャー作業と並行して、非本番環境で週毎に停止のシミュレーションを行い、手順の正確性の検証と実行の精度向上を行い、自動化を進めてきました。最近の目に見えるインフラの変更は、3月13日のサービス低下に直接対応して5月14日に行われました。数週間にわたる設計セッション、クラウドプロバイダーとの協議、本番さながらの負荷テストを経て、当社のチームはプライマリユーザーデータベースの背後にあるテクノロジーを入れ替えました。これにより、取引を中断することなく、復旧時間を4倍短縮し、今後数ヶ月間で15倍に拡張する機会を得ることができました。同様に、当社のエンジニアは週に数回、取引エンジンサービスのアップデートを行い、情報をすべて開示しながらパフォーマンスの改善と新機能を提供しています。

最後に、復旧力と災害復旧への継続的な取り組みを強化するために、また、クラス最高の取引プラットフォームを提供するという当社のコミットメントの一環として、当社は積極的にチームを成長させてきましたが、今後も継続してまいります。挑戦したい方、必要なスキルをお持ちの方は、当社の求人情報を是非ご覧ください。

BitMEX は、プラットフォームの再開プロセスを改善するために何をしていますか?

以前のダウンタイムイベントとお客様からのフィードバックを検討した結果、予定外のイベントの後に取引プラットフォームを再開するための手順を修正し、キャンセルオンリーモードのプロトコルを更新しました(以前は定期メンテナンス後にこのモードが使用されていました)。5月19日のイベント後、プラットフォームのフル機能を再開するまでの17分間に、38,437件の注文キャンセル指示がありました。これにより、以前の予定外のイベントと比較して、ユーザーエクスペリエンスが大幅に改善されたと考えています。今後も、このプロセスに関するお客様の声をレビューし、必要に応じて改善し、新しい手順についての最新情報を提供していきます。

ダウンタイムに関連するリスクから身を守るにはどうすればいいですか?

BitMEX取引プラットフォームには、多くの洗練されたツールや設定が用意されており、ダウンタイムイベントによるリスクをトレーダーがコントロールできるようになっています。

当社のAPIを使用するトレーダーには、「Dead Man’s Switch」機能を提供しており、取引所に到達できない場合に注文をキャンセルするためのタイムアウトを設定することができます。実装の詳細とタイムアウトの設定例については、こちらのドキュメントをご覧ください。

また、BitMEXプラットフォームのもう一つの便利な機能として、逆指値注文のトリガー価格をLast Price、Mark Price、またはIndex Priceについて参照するように設定できる機能があります。取引所がダウンタイムイベントの後に再開されると、Last Price(BitMEXにおける直近取引価格)が大幅に変動することがあります。Last Priceの劇的な変動によって逆指値注文がトリガーされるのを避けるために、トレーダーはLast Priceではなく、マーク価格またはインデックス価格を基準にして逆指値注文をトリガーするように設定することができます。

これらは、当社のトレーダーがリスクをコントロールし、ダウンタイムの影響を軽減することを可能にするBitMEXプラットフォームの2つの機能の一例に過ぎません。当社のサポートチームは、プラットフォーム上のこれら(およびその他の)リスク管理ツールについての詳細な情報を提供することができます。

結論

暗号通貨業界は、短期間で長い道のりを歩んできました。当社への期待が高まっていることを認識しており、当社はプラットフォームの復旧力をさらに向上させるために24時間365日体制で取り組んでいます。このブログ記事では、このダウンタイムの出来事と、プラットフォームの安定性と全体的な取引体験を向上させるための具体的かつ緊急の措置について、すべてのお客様に明確な説明を提供できればと考えています。

ご不明な点がございましたら、サポートまでご連絡ください。