Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Chaos Night #1 複雑なシステムへようこそ
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Meiko Hori
July 20, 2022
Technology
380
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Chaos Night #1 複雑なシステムへようこそ
Meiko Hori
July 20, 2022
More Decks by Meiko Hori
See All by Meiko Hori
Ops Guidesから読み解くインシデントレスポンスにおけるカスタマーリエゾンの役割
meih
0
130
What I do when I meet and talk with customers
meih
0
55
中の人が語るテスト自動化SaaSのCS - カスタマーサポート、そしてサクセスへ - STAC 2020
meih
1
3.7k
Other Decks in Technology
See All in Technology
クレデンシャル流出 ― 攻撃 3 時間 vs 復旧 10 時間。この非対称性にどう備えるか
kazzpapa3
3
620
Fabricをフル活用する AI Agent Hub -製造業特化AIエージェントの設計
iotcomjpadmin
0
160
水を運ぶ人としてのリーダーシップ
izumii19
4
1.1k
「軸足」は 固定しなくていい - 熱量と強みで描く、しなやかなキャリアの形
kakehashi
PRO
1
290
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
0
110
製造現場での生成AIの活用、およびエージェントAIの実装のあり方、AVEVAの取り組み
iotcomjpadmin
0
180
Flow 不死:AI 時代 DevOps 的不變本質
cheng_wei_chen
2
550
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
300
UIパーツの設計を「型」から読み解く 〜TSKaigiのセッションから得た学び〜
yud0uhu
0
110
Why is RC4 still being used?
tamaiyutaro
0
150
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
270
CVE-2026-20833_脆弱性対応とAES 化について
jukishiya
0
170
Featured
See All Featured
Optimizing for Happiness
mojombo
378
71k
Site-Speed That Sticks
csswizardry
13
1.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Deep Space Network (abreviated)
tonyrice
0
210
A better future with KSS
kneath
240
18k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
210
Side Projects
sachag
455
43k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
The untapped power of vector embeddings
frankvandijk
2
1.8k
Transcript
オープニングトーク: 複雑なシステムへようこそ July 20th, 2022 Meiko Hori Chaos Night #1
自己紹介 Meiko Hori 堀 明子 Customer Reliability Engineer @ Autify •
略歴 ◦ SIerに十数年所属。客先常駐 SES暮らし ▪ Webアプリ開発/システム運用/プロジェクトリーダー ◦ 2020年8月よりAutifyに参画 ◦ 書籍「カオスエンジニアリング」共訳 • 趣味 ◦ 絵と音楽(作る/歌う/聴く) ◦ 旅と食(北アフリカから中米まで)
Autifyとわたしのお仕事 Webアプリケーションの自動テスト Autify for Web 14日間無料トライアル受付中 https://autify.com/ja/trial ネイティブアプリケーションの自動テスト Autify for
Mobile デモリクエスト受付中 https://autify.com/ja/mobile
Autifyとわたしのお仕事 Contract Data Support Data Company Data Analytics Customer Success
Platform お客様の状況把握 Prod DB お客様 プロダクト お客様の活用支援 CSM カスタマーサクセスチーム 「お客様の支援を支援する」データ基盤 を作ってます。詳細はブログへ https://blog.autify.com/ja/autify-cs-to ol-and-activities-2 CRE
本日のテーマ 複雑なシステムと、それに対する学びを深めるアプローチとしての カオスエンジニアリング
事前アンケートの結果 あなたにとってカオスエンジニアリングとはどのようなものか、一番近 いものをお選びください。 「まだよくわからないが気 になる」+「実践してみたい が何からやればよいかわ からない」の合計 = 83.3%
複雑なシステム vs シンプルなシステム • システムへの入力に対し、予測が容易な出力が返ってくる • 構成要素に依存関係が少ない シンプルなシステム System 入力
出力 User Owner
複雑なシステム vs シンプルなシステム • 複数の構成要素が互いに依存しあっている • システムへの入力に対し、返ってくる出力の予測が難しい 複雑なシステム Service A
入力 出力 User Owner X Service B Service C External system E Data store D Owner Z Owner Y
複雑なシステム vs シンプルなシステム • 各人がシステムに対して描くメンタルモデルが異なる • 個別の各構成要素の振る舞いは理解していても、全体としてどの ような振る舞いをするかを誰も把握しきれない 複雑なシステム Service
A 入力 出力 User Owner X Service B Service C External system E Data store D Owner Z Owner Y New joiner N ?
どんなことが起こりうる? • 外部システムの予期せぬ振る舞いにより、それに依存する要素が 期待通りの動作をしなくなった ◦ Hyrumの法則 ある程度以上のAPIのユーザーがいれば、契約で約束されたこと はもはや力を持ちません。観測されるシステムのあらゆる振る舞 いに対し、他者が依存するようになるのです。 •
呼び出し元側へ想定外のエラーコードが返却された結果、ユーザー にとって不可解な画面が表示された • 特定の条件下でリトライロジックが機能しなかった などなど 複雑なシステムでは、これらが積み重なった結果思い がけない大きな障害に繋がる場合がある
どんなことが起こりうる? • 外部システムの予期せぬ振る舞いにより、それに依存する要素が 期待通りの動作をしなくなった ◦ 例:Hyrumの法則 ある程度以上のAPIのユーザーがいれば、契約で約束されたこと はもはや力を持ちません。観測されるシステムのあらゆる振る舞 いに対し、他者が依存するようになるのです。 •
呼び出し元側に想定外のエラーコードが返却された結果、ユー ザーにとって不可解な画面が表示された • 特定の条件下でリトライロジックが機能しなかった などなど どうやって 「予期せぬ」「想定外の」「特定の条件下」 を見つけよう? 🤔
素朴な疑問 そもそも複雑性を排除して、もっとシステムをシンプルにできた ら、未知の事象も減らせるのではないか? もっと入念にテストしたら、複雑な依存関係に起因する予期せ ぬ障害を防げるのではないか?
実験 vs テスト テスト • システムについて既に知られた特性が、期待通りであることを確認する • 主に、検証を行いたい対象が明らかになっているものに効果的 実験 •
仮説を立て、その仮説の反証を試みる ◦ 反証されなかった場合は、仮説の信用度が上がる ◦ 反証された場合は、新たなシステムの特性に関する学びが得られる • システムの 未知の特性 を見つけるのに効果的 カオスエンジニアリングの アプローチは主に実験寄り
ベリフィケーション(検証)vs バリデーション(妥当性確認) バリデーション(妥当性確認) • 個々の要素が期待通りに実装されていることの検証に重きを置く • 水道水の妥当性を確認するには ◦ 水道の配管や浄化、給水のシステムなど、水が届けられる過程にある全ての要 素が期待通りの状態であるかを検査する
ベリフィケーション(検証) • ビジネスケースと 総合的な出力 に重きを置く • 水道水を検証するには ◦ 蛇口から出てくる水(出力)が正常かどうか水質検査する カオスエンジニアリングの アプローチは主に検証、 ベリフィケーション寄り
カオスエンジニアリングによる未知への対処 問題が発生するよりも前に、システム全体としての振る 舞いを検証できるような実験を考えよう! 複雑なシステムでは、構成要素の相互作用から予測困 難な未知の事象が発生しうる
カオス実験の進めかた カオスエンジニアリングの原則にのっとると ... 1. システムの「定常状態」を定める:正常な振る舞いを示す測定可能な出力を使用 2. 定義した「定常状態」に関する仮説を立てる:制御グループ(対照群)と実験グループのいず れにおいても継続すると想定 3. 実験グループに対し、実世界の事象(イベント)を反映する変数を導入する
4. 制御グループと実験グループの間に定常状態に関する差異を調べ、仮説の反証を試みる a. 仮説が反証されなければ、仮説の確からしさが上昇する → 自信の向上 b. 仮説が反証されれば、新たな発見が得られる → 未知だったシステムの特性が 既知に!
カオス実験の進めかた カオスエンジニアリングの原則にのっとると ... 1. システムの「定常状態」を定める:正常な振る舞いを示す測定可能な出力を使用 2. 定義した「定常状態」に関する仮説を立てる:制御グループ(対照群)と実験グループのいず れにおいても継続すると想定 3. 実験グループに対し、実世界の事象(イベント)を反映する変数
を導入する 4. 制御グループと実験グループの間に定常状態に関する差異を調べ、仮説の反証を試みる a. 仮説が反証されなければ、仮説の確からしさが上昇する → 自信の向上 b. 仮説が反証されれば、新たな発見が得られる → 未知だったシステムの特性が 既知に 「定常状態」とは? 出力を測定する仕組み は備わっている? 変数には何を入れれば よい?
実験をしようと思った時点で、考えることがいっぱい システムの出力として観測できるもので、エンドユーザーに提供して いるビジネス価値に沿った内容で表現できると理想的 (Netflixの場 合は、秒間ストリーミング開始件数:Streams Per Secondのような メトリクスを利用している) 定常状態がメトリクスの形で表現されるのであれば、継続的に取得 できる可観測性のインフラを整えることから
「定常状態」とは? 出力を測定する仕組み は備わっている? 変数には何を入れれば よい? すでに具体的な懸念が仮説に表現されているのであれば、そこから 始めるとよい。一般的な実験としてはレイテンシの注入やプロセスの 終了など、多様なものをサポートするツールがある 一律に適用可能な解はない。チームで議論をするところからはじめよう
まとめ システムの複雑性は、システムの提供する価値に応じて必然的に増加する システムの未知の特性を発見するためには、テストよりも実験が効果的 システムが総合的に期待通りに稼働しているかを見るためには、バリデーション (妥当性確認)よりもベリフィケーション(検証)が効果的 カオスエンジニアリングは、実験とベリフィケーション(検証)に重きを置いて、複雑 なシステムの未知の特性を発見し、プロアクティブに対処可能としていく上で有用な 手法 効果的なカオス実験は一日にしてならず。実験の準備を行う過程へ一歩踏み出し て、チームで考えはじめた時点から価値が生まれる
おまけ 実験はコストがかかりすぎたり、十分な価値をもたらすと見なされず、日の目を見な いこともよくあります。ある程度の期間何かを試し、受け入れた後すぐに放棄してし まっても構いません。(中略)新たなアイディアを持って試す時間をとった時、あなた は着実に正しい方向に向かっています。 - Andy Fleener, 「カオスエンジニアリング」第10章より
参考資料 • Principles of Chaos Engineering(カオスエンジニアリングの原則) ◦ https://principlesofchaos.org/ • Getting
Started with Chaos Engineering • Nora Jones, Casey Rosenthal & James Wickett • GOTO 2020 ◦ https://www.youtube.com/watch?v=vkxVaqS7q2Q • Rethinking How the Industry Approaches Chaos Engineering ◦ https://www.infoq.com/presentations/rethinking-chaos-engineering/ • カオスエンジニアリング – 回復力のあるシステムの実践 ◦ https://www.oreilly.co.jp/books/9784873119885/
ご清聴ありがとうございました! 引き続き、皆様の発表をお楽しみください🎙