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

Más contenido relacionado

La actualidad más candente

まじめに!できる!LT
まじめに!できる!LT まじめに!できる!LT
まじめに!できる!LT Akabane Hiroyuki
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかAtsushi Nakada
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話Yoshitaka Kawashima
 
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込むYoshiki Hayama
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugItsuki Kuroda
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターンSoudai Sone
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)Yoshitaka Kawashima
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南Mikiya Okuno
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 
オーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiAオーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiAOre Product
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)mosa siru
 
型安全性入門
型安全性入門型安全性入門
型安全性入門Akinori Abe
 
イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知るShuhei Fujita
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていることonozaty
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)Yoshitaka Kawashima
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 

La actualidad más candente (20)

まじめに!できる!LT
まじめに!できる!LT まじめに!できる!LT
まじめに!できる!LT
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
 
MLOps入門
MLOps入門MLOps入門
MLOps入門
 
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
オーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiAオーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiA
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
Tackling Complexity
Tackling ComplexityTackling Complexity
Tackling Complexity
 
型安全性入門
型安全性入門型安全性入門
型安全性入門
 
イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知る
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 

Más de Yoshitaka Kawashima

ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?Yoshitaka Kawashima
 
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』Yoshitaka Kawashima
 
ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣Yoshitaka Kawashima
 
システムダウンのひみつ
システムダウンのひみつシステムダウンのひみつ
システムダウンのひみつYoshitaka Kawashima
 
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 FallYoshitaka Kawashima
 
ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較Yoshitaka Kawashima
 
Antifragile Java - Java Day Tokyo 2017 D1-E1
Antifragile Java - Java Day Tokyo 2017 D1-E1Antifragile Java - Java Day Tokyo 2017 D1-E1
Antifragile Java - Java Day Tokyo 2017 D1-E1Yoshitaka Kawashima
 
たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力Yoshitaka Kawashima
 
SIerにとっての越境 @ DevLOVE 199
SIerにとっての越境 @ DevLOVE 199SIerにとっての越境 @ DevLOVE 199
SIerにとっての越境 @ DevLOVE 199Yoshitaka Kawashima
 
なぜデータモデリングが重要なのか?
なぜデータモデリングが重要なのか?なぜデータモデリングが重要なのか?
なぜデータモデリングが重要なのか?Yoshitaka Kawashima
 
既婚プログラマの時間捻出術
既婚プログラマの時間捻出術既婚プログラマの時間捻出術
既婚プログラマの時間捻出術Yoshitaka Kawashima
 
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのかJavaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのかYoshitaka Kawashima
 
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発Yoshitaka Kawashima
 

Más de Yoshitaka Kawashima (20)

ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
 
Are Design Patterns Dead?
Are Design Patterns Dead?Are Design Patterns Dead?
Are Design Patterns Dead?
 
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
 
ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣
 
本番障害に至る病
本番障害に至る病本番障害に至る病
本番障害に至る病
 
システムダウンのひみつ
システムダウンのひみつシステムダウンのひみつ
システムダウンのひみつ
 
Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
Atomic Architecture
Atomic ArchitectureAtomic Architecture
Atomic Architecture
 
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
 
ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較
 
How to find tech books
How to find tech booksHow to find tech books
How to find tech books
 
Antifragile Java - Java Day Tokyo 2017 D1-E1
Antifragile Java - Java Day Tokyo 2017 D1-E1Antifragile Java - Java Day Tokyo 2017 D1-E1
Antifragile Java - Java Day Tokyo 2017 D1-E1
 
たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力
 
SIerにとっての越境 @ DevLOVE 199
SIerにとっての越境 @ DevLOVE 199SIerにとっての越境 @ DevLOVE 199
SIerにとっての越境 @ DevLOVE 199
 
なぜデータモデリングが重要なのか?
なぜデータモデリングが重要なのか?なぜデータモデリングが重要なのか?
なぜデータモデリングが重要なのか?
 
Antifragile Clojure
Antifragile ClojureAntifragile Clojure
Antifragile Clojure
 
Boilerplate vs Magic
Boilerplate vs MagicBoilerplate vs Magic
Boilerplate vs Magic
 
既婚プログラマの時間捻出術
既婚プログラマの時間捻出術既婚プログラマの時間捻出術
既婚プログラマの時間捻出術
 
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのかJavaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
 
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
 

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