全2439文字
PR

障害発生時の対応をあらかじめ準備しておくことが大切だ。それにはイベントストーミングが活用できる。TISと楽天の事例を見てみよう。

 止まらないシステムを作るには、障害発生ポイントの洗い出しが欠かせない。障害が発生しそうな箇所が分かれば、訓練によってあらかじめ対策が打てるようになる。マイクロサービスアーキテクチャーでは障害は必ず発生するものと考えなければならない。このような考え方はセキュリティー対策やBCP(事業継続計画)と同様である。

 最近のセキュリティー対策は攻撃を水際で防ぐことよりも、いかに被害を最小限にとどめて事業を継続できるかに重点が置かれる。そのためにはサイバー攻撃訓練が欠かせない。同じことが分散システムの障害対策にも当てはまる。

障害イベントを洗い出す

 TISが社内で取り組もうとしているのが、「イベントストーミング」による障害発生箇所の洗い出しだ。イベントストーミングとは、壁一面に広げたロール紙にシステムで起きるイベント(商品を検索など)を付箋紙で貼り付けながら時系列で表現していく(図1)。

図1●イベントストーミングの様子
図1●イベントストーミングの様子
(出所:TIS)
[画像のクリックで拡大表示]

 そしてイベントの前後に発生するイベントを貼り付けていく。例えば、商品の検索の前にはアカウント作成といったイベントが想定できる。検索後には商品をカゴに入れたというイベントが考えられるだろう。

 イベントを洗い出せたらイベントで起こり得る障害を貼り付けていく。商品の検索ならば、商品マスターにアクセスできないといった障害がある。このようにして、システムで発生しそうな障害を洗い出していく。

 同社の前出祐吾テクノロジー&イノベーション本部テクノロジー&エンジニアリングセンター主査はイベントストーミングの活用で大切なのは「エンジニアだけでなくビジネス関係者も一緒に行うこと」と説明する。障害の中には、発生するとビジネスに影響するものがある。エンジニアだけではこのようなイベントの重要性に気づくのが難しいからだ。

 前出主査は「今後、イベントストーミングの活用を検討していきたい」と話す。

本番環境で運用を確認

 障害発生時の対応に有効なのが、自動復旧の仕組みが正しく動くかどうかを本番環境で試す運用手法である。本番環境のシステムをわざとダウンさせたり、通信遅延を発生させたりして、システムの信頼性を確かめる。

 楽天市場では年数回の定期メンテナンス時に本番環境で負荷テストを行い、正しく復旧できるか、サービス停止時の対応に間違いがないかなどを確認している。

 楽天の橋詰尚毅クラウドプラットフォーム部スタックワイドリライアビリティ課SREグループマネージャーは「重要なコンポーネントを中心に通信レスポンスを低下させたり、データベースをダウンさせたりして、訓練している」という。

 ただし限られた時間内で訓練しなければならないため、「シナリオの作成には3カ月以上の期間を要し、綿密に作る」(橋詰グループマネージャー)という。