SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2023 Summer セッションレポート(AD)

障害発生時の回復力をチームで高めるためには?リクルートに学ぶ、カオスエンジニアリングの取り組み

【D-8】リクルートのデータ組織におけるカオスエンジニアリングによる安定運用の取り組み

  • このエントリーをはてなブックマークに追加

カオスエンジニアリングで、障害時の回復性を担保に挑戦

 障害が発生しないことは良いことだが、その一方で、新しい問題も起こったという。「障害対応の実務経験の機会が減少し、いざ障害が発生した際の障害調査に手間取ったり、障害対応に時間がかかったりするなど、障害時の回復性が担保しにくい状態になったのです」(鶴谷氏)

 パブリッククラウドサービスの障害や担当メンバーの急な入れ替えなど、予期せぬ事象にも対応できる回復性をどのように担保するかが課題になったという。鶴谷氏たちが回復性を担保するために2023年より開始したのが、カオスエンジニアリング的な取り組み「障害対応訓練」である。カオスエンジニアリングとは、意図的に障害を発生させることで、実際に障害が発生した際に的確な対応ができるような訓練を行うエンジニアリング手法だ。

 具体的な取り組み内容について、芳賀氏が紹介した。芳賀氏はリクルートに新卒で入社し、以降、データサイエンティストとしてSUUMOレコメンドシステムのモデル開発を担当。現在はデータエンジニアとしてリコメンドシステムのリアーキテクチャやサービスマネジメント能力向上のための施策を担当している。

株式会社リクルートプロダクト開発統括室データ推進室住まいデータエンジニアリンググループGM 芳賀 宣仁氏
株式会社リクルート プロダクト開発統括室 データ推進室 住まいデータエンジニアリンググループ GM 芳賀宣仁氏

 「今回の取り組みでは、障害対応時に対応する人のプロセスの理解や手動でのシステム復旧能力の向上、平時においてはそもそも障害を起こさないための自動復旧可能なシステム設計能力を付けられることを目的としました」(芳賀氏)

取り組みの流れ
「障害対応訓練」取り組みの流れ

 訓練の事前準備で最初に行ったのは、障害分析およびシナリオ選定。障害シナリオ作成の指針を立てると共に、これまでの障害を分析し、実際に訓練ができるようシナリオ選定を実施するというもの。芳賀氏は、2つの重点ポイントを定めシナリオを作成したそうだ。

 ポイントの1つ目は実際の障害を参考にすること。「一度経験した障害は、Confluence(コンフルエンス)などの社内wikiツールにまとめていると思われるが、実際に対応できるかどうかは別問題であるため」と芳賀氏は指摘する。また経験したことのある障害をチーム全員で対応できるようにすることで、属人化の排除にもつなげることができる。もちろん、実際の障害を参考にする際には、ビジネスインパクトの大きさや頻度、自動復旧の難しさなども考慮に入れたという。

 もう1つのポイントは、手順書の有無を考慮することだ。「障害対応で利用する手順書の内、使われていない手順書があったため、それらの手順を確認できるようなシナリオを作成することにしました」(芳賀氏)

 SUUMOレコメンドシステムはリコメンドAPI基盤、リアルタイムログ処理基盤、バッチ処理基盤という3つのコンポーネントで構成されているが、いずれも依存関係にあるため、今回の訓練では3つの基盤すべてをスコープとして実施することになったという。

 障害分析については、過去3年の障害をシステム(対象システム、障害分類、障害概要、対象AWSサービス)、頻度・検知・影響(影響・発生頻度、ビジネス影響、システム影響、検知方法、検知スピード)、対応方法(一次対応方法、対応手順有無、対応スピード)の観点で整理。「特に件数が多かったインフラ障害やデータ障害に対応できるようにするため、最終的に7個のシナリオに絞りました」(芳賀氏)

 さらに7つのシナリオ候補を、「手順書では復旧が難しいタイプの障害」と「手順書で復旧ができるタイプの障害」の2つのタイプに分類。前者はカオスエンジニアリングでカバーされる範囲であるため、事前準備の中で、実際に障害を注入し、システムが想定通りの挙動をするのか確かめ、復旧方法の検討を行う。後者はまさに障害対応訓練でカバーされる範囲の障害。実際の障害対応訓練の中で、対応手順を確認することになる。

障害分析と7つのシナリオ
障害分析と7つのシナリオ

 訓練準備のポイントとして芳賀氏が挙げたのは、①訓練の仕立てを考える、②環境を構築する、③事前実験および最終的なシナリオを確定すること。「訓練当日はチームを2つに分けて、競い合う形式で訓練を行うことにしました」と芳賀氏は言う。また訓練の参加者はインフラメンバーを中心とし、アプリ開発メンバーにはQA対応など、サポート要員として参加してもらったという。

 カオスエンジニアリングのセオリーでは、本番環境でやるべきと言われているが、2チームが独立して障害対応にあたれるよう、本番同等の環境を2つ、開発環境に用意。「APIリクエストは本番相当のリクエストを再現、バッチ処理も本番同等の時間、データで実行されるよう設定しました」(芳賀氏)

訓練のための環境
訓練のための環境

 事前実験では、AWS Fault Injection Simulator(FIS)を利用して障害を注入したところ、APIが一部想定外の挙動を示したという。「回復性の検証をするカオス実験を前に挟むことで、人の対応能力だけではなく、システムの改善ポイントも一緒に発見することができました」(芳賀氏)

次のページ
障害対応訓練で得られた知見と今後の課題

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Developers Summit 2023 Summer セッションレポート連載記事一覧

もっと読む

この記事の著者

中村 仁美(ナカムラ ヒトミ)

 大阪府出身。教育大学卒。大学時代は臨床心理学を専攻。大手化学メーカー、日経BP社、ITに特化したコンテンツサービス&プロモーション会社を経て、2002年、フリーランス編集&ライターとして独立。現在はIT、キャリアというテーマを中心に活動中。IT記者会所属。趣味は読書、ドライブ、城探訪(日本の城)。...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

川又 眞(カワマタ シン)

インタビュー、ポートレート、商品撮影写真をWeb雑誌中心に活動。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

提供:株式会社リクルート

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/18223 2024/01/12 14:27

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング