Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

アンチフラジャイルの世界

1.832 Aufrufe

Veröffentlicht am

NoOps Meetup Tokyo #8での発表資料です。

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

アンチフラジャイルの世界

  1. 1. アンチフラジャイルの世界 kawasima NoOps Meetup Tokyo #8
  2. 2. 「わからない」にはレベルがある 今日覚えて帰ること①
  3. 3. Cynefin Framework Chaotic Complex Complicated Simple / Obvious Disorder 問題に対する解: 1つは既知 (最良かどうかは分からない) 問題と解の因果関係: あり 問題の解き方: 把握-分析-対処 問題に対する解: 1つで既知 問題と解の因果関係: あり 問題の解き方: 把握-分類-対処 問題に対する解: 未知 問題と解の因果関係: あり 問題の解き方: 調査-把握-対処 問題に対する解: 未知 (問題も不明) 問題と解の因果関係: なし 問題の解き方: アクション-把 握-対処 解決策を得るための方向にはパ ターンがある 既知の解法から選択して適用す る (Good Practice) 既知の解法を適用する (Best Practice)行動を起こして、Complexな状 態に移行させる。 分からないことが分からない 分からないことがない 分からないことが分かっている 何もわからない http://www.mext.go.jp/b_menu/shingi/gijyutu/gijyutu7/011/siryo/__icsFiles/afieldfile/2014/12/16/1353933_4.pdf
  4. 4. 今日覚えて帰ること② 「複雑」には2種類ある 分からないことが分かっている 分からないことが分からない
  5. 5. 「複雑」と「複雑系」は違う Complex Chaotic 今日覚えて帰ること③
  6. 6. どのレベルにあるのかによって 取るべき戦術が異なる
  7. 7. Simple / Obvious 手順書のある安定したシステムの運用作業 状況を把握し、既知のベストプラクティスを適用する
  8. 8. Complicated 状況を把握し、複数のソリューションから 最善なものを適用する デザインパターンやフレームワークを使った開発
  9. 9. Complex 状況を調査し、進むべき道を決め、軌道修正しながら進む ターゲットが時間と共に動くサービス開発
  10. 10. Chaoticな状況の生存戦略
  11. 11. Fragileの対義語が無いので造られた Fragile Antifragile Robust 取り扱い注意 どうぞ落っことして みてください 取り扱いに注意するな という意味ではない
  12. 12. Antifragileが載っている書籍
  13. 13. 世の中の出来事の非対称性七面鳥のおじさんへの信頼度 t 毎日エサを与えられ、 信頼度は日々蓄積されていく が…
  14. 14. 予測が出来ない大きな変動 (Black Swan) リーマンショックや日本のバブル崩壊、3.11 後になってみれば予測可能だった気がする(後知恵バイアス) 実際、予測は役には立たない。 ありそうもないことを 人は過小評価しがち
  15. 15. Black Swanへの態度 Black Swanが起きたとき、反省すべきは… 事象そのものを 予測できなかったこと FragileやAntifragileを 理解していなかったこと 予測ミスによる損失を最小化し、利得を最大化する方法を考えよう
  16. 16. Benefit Change Cost Antifragile Resilient Robust Fragile https://developers.redhat.com/blog/2016/07/20/from-fragile-to-antifragile-software/
  17. 17. Cynefinフレームワークとの対応 Fragile Robust Resilient Antifragile 変動は想定せず(しなくてもよ く)、ベストプラクティスを 粛々と実行する。 変動を予測し、それに耐えうる ように最適なソリューションを 適用する。 変動を予測し、それにシステム が適応できるように設計する。 変動は予測せず、発生したとき の対処(あわよくば大きなゲイ ンを得る方法)を検討する。 Chaotic Complex Complicated Simple / Obvious
  18. 18. Simple/ObviousがChaoticに変わるケース ユーザが急増したときに、どういうBlack Swanが起こる (ユーザは正規のユーザだけとは限らない) ユーザは、ひどいもんだ。 ユーザがいなければ、システムはもっとうまく動くのに。 『Release It!』4章 安定性のアンチパターンより あなたのシステムが安定運用できているのは、 少ない行儀の良いユーザのおかげかもしれない…
  19. 19. ソフトウェアの世界への適用
  20. 20. Tinkering AdobeのKickboxやGoogleの20%ルール https://news.mynavi.jp/article/20151019-am201506/
  21. 21. Fault Injection (in Production) 1.定常状態における振る舞いの仮説を立てる 2.実世界の事象は多様である 3.本番環境で検証を実行する 4.継続的に実行する検証の自動化 5.影響範囲を局所化する Chaos Engineeringの5原則 https://principlesofchaos.org/?lang=JAcontent
  22. 22. 自動バグフィクス https://www.comp.nus.edu.sg/~abhik/pdf/cacm19.pdf
  23. 23. 例) DeepFix http://www.iisc-seal.net/deepfix Deep Learningを利用した、パッチの自動生成
  24. 24. Auto Tuning https://qiita.com/kawasima/items/5d8a8a9b84aae6d7de71
  25. 25. Property Based Testing Example Based Testing ● 入力: 具体的な値 ● Assertion: 決まりがない (…ので、マッチポンプテストに陥りがち) Property Based Testing ● 入力: スペックにしたがい自動生成 ● Assertion: 期待したふるまいか?を検証
  26. 26. 例) Web APIのProperty Based Testing https://qiita.com/kawasima/items/25836e443e8822e89b24 Clojure specのJavaScript移植
  27. 27. 例) Web APIのProperty Based Testing 定義したSpecに沿って、パラメータを生成しAPIを自動で叩く。 Spec外の値も生成できると、Antifragileに近づく (まだこれから)
  28. 28. Noise除去 データに触れれば触れるほど、「信号」と呼ばれる貴重な情報よりも、 ノイズに触れる可能性は不釣り合いに高まっていく。 https://medium.com/netflix-techblog/scryer-netflixs-predictive-auto-scaling-engine-part-2-bb9c4f9b9385 「静観」をシステムが判断したい…
  29. 29. Antifragile System を支える技術
  30. 30. Microservices Antifragileのためとしては、以下2点 障害の局所化 Tinkeringの環境
  31. 31. 亀裂の伝播を防ぐ 1.タイムアウト 2.サーキットブレイカー 3.隔壁 ・・・ 必要なすべては、 Release It!の中に
  32. 32. DevOps Culture Automation Measurement Sharing 重なりは多い DevOps Antifragile 失敗を前提とした案件
  33. 33. Road to DevOps & Antifragile ① DevとOpsを分離する ② Opsを無人化する ③ OpsのAntifragile化
  34. 34. DevとOpsの分離 ITILやSOX法への対応のためには、開発者が 本番環境に気軽にアクセスできることはまかりならない 開発環境 本番環境 運用チーム開発チーム アクセスは互いに 制限される
  35. 35. Opsの無人化 Devが本番環境にログインしない 開発環境 本番環境 運用チーム開発チーム デプロイ対象の提供 本番のメトリクス 発生障害情報の連携
  36. 36. OpsのAntifragile化 開発環境 本番環境 運用チーム開発チーム Tinkering / FIT 本番環境にストレスを加えて強くする
  37. 37. Wrap up
  38. 38. 置かれた状況がどこかを知ることが最重要 仮説検証 Simple / Obvious ComplectComplex Chaotic Tinkering Fault Injection 専門家のアサイン ルール作り / 訓練 Agile パターンランゲージ グッドプラクティスが分かっていることや事前調査 もできないことを仮説検証しないために… 今日覚えて帰ること④
  39. 39. 複雑さの推移 何があたるかサッパリ Complicated Chaotic Chaotic Complicated Simple / Obvious 勝ち方を見つける Complex 事業の安定収益化 Business Side System Side t
  40. 40. λove chaos

×