Upgrade to Pro — share decks privately, control downloads, hide ads and more …

皆がすなるカオスエンジアリングといふものを、ネットワークオペレーションでもしてみむとてするなり

tjmtrhs
March 11, 2024

 皆がすなるカオスエンジアリングといふものを、ネットワークオペレーションでもしてみむとてするなり

カオスエンジアリングは、システムを中心としたプロダクト開発における障害対策の一手法で、 本番環境へ故意に問題を発生させて復旧までのプロセスを検証するものです。

そんなカオスエンジアリングを、ネットワークオペレーションにも導入した我々の取り組みを紹介します。 しかし対象システムがクラウド基盤上に展開するアプリである場合と、実体のルータで構成されるネットワークでは大きな差があり、我々がその差をどう考えて工夫したのか共有します。

学べること
* 少しずつ始めるカオスエンジアリングのユースケース
* 一見単純そうな、ネットワークの障害試験の難しさ事情

tjmtrhs

March 11, 2024
Tweet

More Decks by tjmtrhs

Other Decks in Technology

Transcript

  1. © NTT Communications Corporation All Rights Reserved. 2 まとめ と

    議論したいこと ネットワークオペレーションでカオスエンジアリングをやってみた  だいたいできるし、改善も進む  実施間隔が長いことが大きな課題 皆さんはどんなシステムのカオスエンジアリングやってますか? 我々の良い取り組みをより良くするには何が必要そうですか?
  2. © NTT Communications Corporation All Rights Reserved. 3 カオスエンジアリングとは(雑な想像) Webサービスでやる例を良く聞くけど

     システムを  意図的に壊して  自動的に直ることを確かめる ・・・って本当? システム ヤーッ!!
  3. © NTT Communications Corporation All Rights Reserved. 4 カオスエンジアリングとは(定義) 

    システムが不安定な状態に陥ったときの訓練方法の一つ  (分散)システムの脆弱性を明らかにする手法 カオスエンジニアリングは、システムが本番環境における不安定な状態 に耐える能力へ自信を持つためにシステム上で実験を行う訓練方法です。 (中略) 分散システムの不確実性を具体的に扱うために、カオスエンジニアリン グはシステムの脆弱性を明らかにするための検証の促進と考えることが できます。 “カオスエンジニアリングの原則” https://principlesofchaos.org/ja/
  4. © NTT Communications Corporation All Rights Reserved. 5 カオスエンジアリングとは(雑ではあるが修正) 

    任意のシステムの  Webサービスに限らない  一部を意図的に不安定にして  壊すのが目的ではない  挙動を観察する  直るかどうかの0/1だけではない システム ヤーッ!!
  5. © NTT Communications Corporation All Rights Reserved. 6 カオスエンジアリング “ツール”

    とは  一意な定義は無さそう  カオスエンジアリング実施の際に「一部を意図的に不安定に」など 必要な動作を実行してくれるプログラム といった意味  public cloudや、k8sを対象にしたOSSも多数存在  カオスエンジアリング「そのもの」以外にも活用されている カオスエンジニアリングツールを使用することで、 現実のネットワーク環境では発生頻度の低い障害事例や、 まだ発生したことのない障害事例についても、 デジタルツイン環境で発生させてデータを収集する “障害に強いロバストネットワーク実現のためのNW-AI自己進化フレームワーク” https://journal.ntt.co.jp/article/23448
  6. © NTT Communications Corporation All Rights Reserved. 7 「オンプレネットワーク運用」も「システム」 

    ネットワーク自体が各機器が自律分散的に動く「分散システム」  ルータには経路情報、Firewallにはセッション情報などのステート  経路途中の機器の整合性が保たれてE2Eの通信が可能  冗長構成や非常用経路などを正しく作動させる運用も「システム」  XXが起こったら◦◦をする、などの決まった動作もシステム  これらのシステムが様々な状況に耐えられるか検証したい システム
  7. © NTT Communications Corporation All Rights Reserved. 8 「オンプレネットワーク運用」でのカオスエンジアリング 

    カオスエンジアリングを始めるときに 考えることが多い  どの範囲で実施しようか  どうやって不安定な状態にしようか  利用者への連絡はどうしようか  オンプレネットワークはさらに腰が重い  実施が物理的な場所に縛られるのがつらい  どのくらいの間隔で実施するのか 今日は 我々がどのように 実施したか、 一例を紹介します
  8. © NTT Communications Corporation All Rights Reserved. 9 カオスエンジアリングにおける原則 の実施状況

    a. 定常状態における振る舞いの仮説を立てる  できた b. 実世界の事象は多様である  一部できた c. 本番環境で検証を実行する  できた d. 継続的に実行する検証の自動化  できてない e. 影響範囲を局所化する  一部できた “カオスエンジニアリングの原則” https://principlesofchaos.org/ja/
  9. © NTT Communications Corporation All Rights Reserved. 10 対象のネットワークオペレーション 

    規模  国内10+拠点、ルータ20+台、スイッチ(物理)200+台  運用に関わる人60+人(ほぼ全員が兼任)  ユーザはコム社各部署で、日に数件リクエストが来る  運用  リクエスト対応(定常)  増築・減築  障害対応 各種設定 モニタリング
  10. © NTT Communications Corporation All Rights Reserved. 11 カオスエンジアリングの流れ 1.

    役割分担を決める 2. 問題作成と問題チェック 3. 実施 4. 想定された対応内容と実際の対応を元に振り返る 5. 改善チケット作成
  11. © NTT Communications Corporation All Rights Reserved. 12 カオスエンジアリングの流れ (1)

    役割分担: 問題作成者  問題作成者  物理機器を含む環境を不安定にするにはツールが使えなさそうで手動実行する  下記3つを含む「問題」を作成する • 引き起こす障害手順 • 想定する影響範囲 • 想定するワークアラウンド対応方法 a. 定常状態にお ける振る舞いの 仮説を立てる
  12. © NTT Communications Corporation All Rights Reserved. 13 カオスエンジアリングの流れ (1)

    役割分担: 監督官  監督官  作成された「問題」が復旧不可能な事態を引き起こさないかチェックする • 構成上どうしても単一障害点は存在するため  「問題」の実施上、必要であれば各所に事前連絡する • 対外回線など、通信相手も監視している場合があるため ※相手は「システム」に含まないとした=この部分の問題には気づけない  振り返りを通じて改善チケットを作成する e. 影響範囲を 局所化する
  13. © NTT Communications Corporation All Rights Reserved. 15 カオスエンジアリングの流れ (2)

    問題作成~チェック  実行された問題の例1 b.実世界の事象 は多様である
  14. © NTT Communications Corporation All Rights Reserved. 16 カオスエンジアリングの流れ (2)

    問題作成~チェック  実行された問題の例2 b.実世界の事象 は多様である
  15. © NTT Communications Corporation All Rights Reserved. 17 カオスエンジアリングの流れ (3)

    実施  実施中は問題作成者と監督官がslackの別chで実況中継 c.本番環境で検 証を実行する
  16. © NTT Communications Corporation All Rights Reserved. 18 カオスエンジアリングの流れ (4)

    振り返り  関わった全員で振り返る  想定通りだったこと、想定と違ったこと  対応の良かった点、悪かった点  振り返りで出た話題の例 a. 定常状態にお ける振る舞いの 仮説を立てる
  17. © NTT Communications Corporation All Rights Reserved. 19 カオスエンジアリングの流れ (5)

    改善チケット  具体的な作業に落とし込んで対応  機器・設計の改修  対応フローなど人間を含んだシステム  実際に作られたチケット
  18. © NTT Communications Corporation All Rights Reserved. 20 実施にかかった時間 2022/11

    12 2023/01 02 03 04 05 06 07 08 構想 問題作成 開始 準備 完了 実施 振り返り カオスエンジアリング 発見された課題の改善 構想 問題作成 開始 準備 完了 実施 振り返り サイクルが長い
  19. © NTT Communications Corporation All Rights Reserved. 21 なぜサイクルが長くなるのか 

    障害要因をなくしてから再実行したくなる  自分で直すのに限界があり メーカエスカレすると長期戦に  実働時間に比べて「調整時間」が長い  そもそも試験を早くやるモチベが無い(労働の報酬が労働)  メンバの内的動機付けに頼るのは限界がある
  20. © NTT Communications Corporation All Rights Reserved. 22 何故手作業なのか、これからの課題 

    ネットワークの「多様」な状態をなかなか自動化できない  Routing-Engine/Line-Cardは突然応答無くなる  レーザの劣化などでflapするインターフェース  問題作成時間、実施時間そのものよりも調整に時間がかかっている  人間が実施時期を決めるのが良くない  機械に決めてもらおう
  21. © NTT Communications Corporation All Rights Reserved. 23 まとめ と

    議論したいこと ネットワークオペレーションでカオスエンジアリングをやってみた  だいたいできるし、改善も進む  実施間隔が長いことが大きな課題 皆さんはどんなシステムのカオスエンジアリングやってますか? 我々の良い取り組みをより良くするには何が必要そうですか?