Chaos Engineeringという考え方 / A concept of Chaos Engineering
by
Mahito
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
Transform your business, transcend expectations with our technologically advanced solutions. Copyright © NTT Communications Corporation. All rights reserved. Mahito Ogura (2019/11/11) @Mahito Chaos Engineering という考え方
Slide 2
Slide 2 text
Copyright © NTT Communications Corporation. All rights reserved. 2 技術開発部 業務:クラウド関連の技術検証など ● ● ● ● 業務:その他 ● エンジニア採用のお手伝い ● エンジニア向けのイベント開催 ● はたらく環境の改善
Slide 3
Slide 3 text
Copyright © NTT Communications Corporation. All rights reserved. 3 本日のお話 前半では の基本的な知識や考え方を 後半では の考え方の変化を、 に登壇した企業が語った内容を併せてお話します
Slide 4
Slide 4 text
Copyright © NTT Communications Corporation. All rights reserved. 4 システムに対し意図的に障害を起こすことで、 障害時のシステムの振る舞いを把握するアプローチ 意図的に引き起こされた障害により問題が生じた際は、 問題を治すことでシステムをより強固なものにすることができる( ) カオスエンジニアリング ≒ 疫学 予防医学 カオスエンジニアリングとは
Slide 5
Slide 5 text
Copyright © NTT Communications Corporation. All rights reserved. 5 英和辞典: はね返り、とび返り、弾力、弾性、 元気の 回復力 英英辞典: 意訳:難しい状況や出来事のあとに、より良くなるための能力
Slide 6
Slide 6 text
Copyright © NTT Communications Corporation. All rights reserved. 6 システムの状態は関連するシステムの数に比例して指数関数的に増大する すべての状態を把握するのは不可能 システムに意図的に障害を起こすことで開発 運用が意図しない障害を起こす → 障害による影響を把握 → 修正することでよりシステムを安定したものに なぜカオスエンジニアリングなのか?
Slide 7
Slide 7 text
Copyright © NTT Communications Corporation. All rights reserved. 7 参考: と の
Slide 8
Slide 8 text
Copyright © NTT Communications Corporation. All rights reserved. “The best way to avoid failure is to fail constantly.” Netflix TechBlog : https://medium.com/netflix-techblog/5-lessons-weve-learned-using-aws-1f2a28588e4c - Netflix
Slide 9
Slide 9 text
Copyright © NTT Communications Corporation. All rights reserved. 9 今年 月にサンフランシスコで開催 発表は で視聴可能 [1]:https://chaosconf2019.splashthat.com/ [2]:https://www.youtube.com/playlist?list=PLLIx5ktghjqIbPU1G2a3ssud26tiGlFUE
Slide 10
Slide 10 text
Copyright © NTT Communications Corporation. All rights reserved. 10 今回のテーマは
Slide 11
Slide 11 text
Copyright © NTT Communications Corporation. All rights reserved. 11 カオスエンジニアリングと は重複する部分が多い ではカオスエンジニアリングの実現に を利用 : 故障時に正しく動くことを確認する手段 障害時の状態をテストするためのアプローチ - 新しい情報を作り出すためのアプローチ カオスエンジニアリング ≒ 障害試験?
Slide 12
Slide 12 text
Copyright © NTT Communications Corporation. All rights reserved. カオスエンジニアリングは ○ :新しい情報を作り出すためのアプローチ △ : の確認や証明するアプローチ
Slide 13
Slide 13 text
Copyright © NTT Communications Corporation. All rights reserved. カオスエンジニアリングは ○ :新しい情報を作り出すためのアプローチ ☓ : の確認や証明するアプローチ 新しい情報を作り出すとは?
Slide 14
Slide 14 text
Copyright © NTT Communications Corporation. All rights reserved. 14 余談:最近社内で読書会やってます https://www.oreilly.co.jp/books/9784873115894/
Slide 15
Slide 15 text
Copyright © NTT Communications Corporation. All rights reserved. 15 Francisco Presencia FandosによるPixabayからの画像 アンチパターン 章:砂の城
Slide 16
Slide 16 text
Copyright © NTT Communications Corporation. All rights reserved. 16 Francisco Presencia FandosによるPixabayからの画像 アンチパターン 「想定不足」
Slide 17
Slide 17 text
Copyright © NTT Communications Corporation. All rights reserved. 17 Francisco Presencia FandosによるPixabayからの画像 どれだけ盤石な基盤を築けるかは、あなたがどれだけの インシデントを想定しているかが鍵なのです。 アンチパターン 章「砂の城」より
Slide 18
Slide 18 text
Copyright © NTT Communications Corporation. All rights reserved. 18 Francisco Presencia FandosによるPixabayからの画像 問題: ● 何が起きるかという想定がされていないこと ● 想定への対策が十分に検討されていないこと 発売当時( 年)だと ● コンサルや専門家を雇う ● 自分たちで考える 現在だと という選択肢もある
Slide 19
Slide 19 text
Copyright © NTT Communications Corporation. All rights reserved. カオスエンジニアリングは 想定外( )を知るための手法
Slide 20
Slide 20 text
Copyright © NTT Communications Corporation. All rights reserved. 20 ● 問題として起きていないが、 解決方法が明確なもの ● すぐに にできるもの ● 問題と解決方法を知っている ● 完全に理解した ● 何が起きるのか知らない ● 起きてから対応が必要 ● 問題として知っているが、 解決策がわからない ● 仮設を立て、テストと実験を繰り返し チームで解決すべき問題 データ 経験 知識 理 解 度
Slide 21
Slide 21 text
Copyright © NTT Communications Corporation. All rights reserved. 21 https://speakerdeck.com/chaosconf/a-roadmap-towards-chaos-engineering?slide=14
Slide 22
Slide 22 text
Copyright © NTT Communications Corporation. All rights reserved. 22 [1]: https://www.amazon.co.jp/dp/4764903296 [2]: https://www.amazon.co.jp/dp/4274217884/ 「テスト」の古典的な定義を引用するなら、「ソフトウェア・テストの 技法 第 版 」 が上げられるでしょう。 テストとは、エラーを見つけるつもりでプログラムを 実行する過程である。 ソフトウェアテストの世界における本来のテストとは、認知の外を 探求する、いわば創造的破壊行為です。 テスト駆動開発 付録 訳者解説 テスト駆動開発の現在 より
Slide 23
Slide 23 text
Copyright © NTT Communications Corporation. All rights reserved. 23 ● 問題として起きていないが、 解決方法が明確なもの ● すぐに にできるもの ● 問題と解決方法を知っている ● 完全に理解した ● 何が起きるのか知らない ● 起きてから対応が必要 ● 問題として知っているが、 解決策がわからない ● 仮設を立て、テストと実験を繰り返し チームで解決すべき問題 データ 経験 知識 理 解 度
Slide 24
Slide 24 text
Copyright © NTT Communications Corporation. All rights reserved. 24 ● 問題として起きていないが、 解決方法が明確なもの ● すぐに にできるもの ● 問題と解決方法を知っている ● 完全に理解した ● 何が起きるのか知らない ● 起きてから対応が必要 ● 問題として知っているが、 解決策がわからない ● 仮設を立て、テストと実験を繰り返し チームで解決すべき問題 データ 経験 知識 理 解 度
Slide 25
Slide 25 text
Copyright © NTT Communications Corporation. All rights reserved. 25 Unknown Knowns ● 問題として起きていないが、 解決方法が明確なもの ● すぐにKKにできるもの Known Knowns ● 問題と解決方法を知っている ● 完全に理解した Unknown Unknowns ● 何が起きるのか知らない ● 起きてから対応が必要 Known Unknowns ● 問題として知っているが、 解決策がわからない ● 仮設を立て、テストと実験を繰り返し チームで解決すべき問題 データ 経験 知識 理 解 度 Failure Testing Fault Injection Chaos Engineering Chaos Engineering カオスエンジニアリングで未知の問題を知り 解決することで なシステムを作る!
Slide 26
Slide 26 text
Copyright © NTT Communications Corporation. All rights reserved. 26 システムに関係するありとあらゆる ものが障害を起こす原因になる 耐障害性を謳う分散システムも壊れること はある ありとあらゆるものは障害を起こす Application Message Queue Database OS Hardware Network Data Center Filesystem 本当は恐ろしい分散システムの話
Slide 27
Slide 27 text
Copyright © NTT Communications Corporation. All rights reserved. 27 https://speakerdeck.com/chaosconf/humans-are-fallible?slide=4
Slide 28
Slide 28 text
Copyright © NTT Communications Corporation. All rights reserved. 28 https://speakerdeck.com/chaosconf/humans-are-fallible?slide=4 間違えを起こす人間が作るから システムに間違いはつきもの!
Slide 29
Slide 29 text
Copyright © NTT Communications Corporation. All rights reserved. 29 前半まとめ カオスエンジニアリングは ○ :新しい情報を作り出すためのアプローチ △ : の確認や証明するアプローチ
Slide 30
Slide 30 text
Copyright © NTT Communications Corporation. All rights reserved. 30 後半は について紹介
Slide 31
Slide 31 text
Copyright © NTT Communications Corporation. All rights reserved. 31 英語版 https://principlesofchaos.org/?lang=ENcontent
Slide 32
Slide 32 text
Copyright © NTT Communications Corporation. All rights reserved. 32 日本語版 https://principlesofchaos.org/?lang=JAcontent
Slide 33
Slide 33 text
Copyright © NTT Communications Corporation. All rights reserved. 33 序文から 分散 の文字が消えた https://github.com/chaos-eng/chaos-eng.github.io/issues/22
Slide 34
Slide 34 text
Copyright © NTT Communications Corporation. All rights reserved. 34 序文から 分散 の文字が消えた https://github.com/chaos-eng/chaos-eng.github.io/pull/23/files
Slide 35
Slide 35 text
Copyright © NTT Communications Corporation. All rights reserved. 35 分散だけでなく への適用事例 https://speakerdeck.com/chaosconf/think-big-chaos-testing-a-monolith
Slide 36
Slide 36 text
Copyright © NTT Communications Corporation. All rights reserved. 36 https://speakerdeck.com/chaosconf/think-big-chaos-testing-a-monolith?slide=36
Slide 37
Slide 37 text
Copyright © NTT Communications Corporation. All rights reserved. 37 https://speakerdeck.com/chaosconf/think-big-chaos-testing-a-monolith?slide=39
Slide 38
Slide 38 text
Copyright © NTT Communications Corporation. All rights reserved. 38 https://speakerdeck.com/chaosconf/think-big-chaos-testing-a-monolith?slide=91
Slide 39
Slide 39 text
Copyright © NTT Communications Corporation. All rights reserved. 39 他の発表でも障害から学ぼうという話が [1]: https://speakerdeck.com/chaosconf/forming-failure-hypotheses?slide=31 [2]: https://speakerdeck.com/chaosconf/hot-recipes-for-building-chaos-experiments?slide=12 [3]: https://blog.newrelic.com/engineering/how-to-run-a-game-day/
Slide 40
Slide 40 text
Copyright © NTT Communications Corporation. All rights reserved. 40 https://speakerdeck.com/chaosconf/think-big-chaos-testing-a-monolith?slide=117
Slide 41
Slide 41 text
Copyright © NTT Communications Corporation. All rights reserved. 41 https://speakerdeck.com/chaosconf/think-big-chaos-testing-a-monolith?slide=117
Slide 42
Slide 42 text
Copyright © NTT Communications Corporation. All rights reserved. 42 何が起きるか知っていますか? ▪ もしくは が障害 ▪ の が消える ▪ サービス間のレイテンシが増大 ▪ 対向サービスから例外が返ってくる ▪ サーバ間の時刻がずれている ▪ エラー ▪ コアが張り付く ▪ の障害
Slide 43
Slide 43 text
Copyright © NTT Communications Corporation. All rights reserved. 43 上に のカタログが公開されている https://github.com/open-chaos/experiment-catalog
Slide 44
Slide 44 text
Copyright © NTT Communications Corporation. All rights reserved. 44 さらに
Slide 45
Slide 45 text
Copyright © NTT Communications Corporation. All rights reserved. 45 資料:https://speakerdeck.com/chaosconf/keynote-chaos-engineering-for-people-systems 動画:https://youtu.be/sn6wokyCZSA
Slide 46
Slide 46 text
Copyright © NTT Communications Corporation. All rights reserved. 46 資料:https://speakerdeck.com/chaosconf/keynote-chaos-engineering-for-people-systems 動画:https://youtu.be/sn6wokyCZSA 企業を分散システムとして捉え を導入 ▪ ▪ ▪ ▪ 一番複雑なのはソフトウェアやハードウェアではなく人間 人間もシステムの一部として の対象になる
Slide 47
Slide 47 text
Copyright © NTT Communications Corporation. All rights reserved. まとめ
Slide 48
Slide 48 text
Copyright © NTT Communications Corporation. All rights reserved. カオスエンジニアリングは - 新しい情報を作り出すためのアプローチ - 学びの場、ナレッジを共有する方法 - だけでなく人間も含んだ広い意味でのシステムに適用可能
Slide 49
Slide 49 text
Presentation by NTT Communications