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