SlideShare a Scribd company logo
アンチフラジャイルの世界
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

More Related Content

PDF
イミュータブルデータモデルの極意
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
PDF
Where狙いのキー、order by狙いのキー
PDF
強いて言えば「集約どう実装するのかな、を考える」な話
PDF
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
PDF
暗号技術の実装と数学
PDF
ソーシャルゲームのためのデータベース設計
PDF
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
イミュータブルデータモデルの極意
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Where狙いのキー、order by狙いのキー
強いて言えば「集約どう実装するのかな、を考える」な話
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
暗号技術の実装と数学
ソーシャルゲームのためのデータベース設計
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜

What's hot (20)

PDF
ストリーム処理を支えるキューイングシステムの選び方
PDF
異次元のグラフデータベースNeo4j
PDF
Dockerイメージ管理の内部構造
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
PPTX
LINEのMySQL運用について 修正版
PDF
シリコンバレーの「何が」凄いのか
PPTX
Istioサービスメッシュ入門
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PDF
フロー効率性とリソース効率性について #xpjug
PPTX
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
PDF
イマドキのExcelスクショの撮り方
PDF
データベース設計徹底指南
PDF
ソフトウェアにおける 複雑さとは何なのか?
PPTX
Azure Search 大全
PPTX
グラフデータベース入門
PDF
Linux女子部 systemd徹底入門
PDF
テスト文字列に「うんこ」と入れるな
PDF
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
ストリーム処理を支えるキューイングシステムの選び方
異次元のグラフデータベースNeo4j
Dockerイメージ管理の内部構造
コンテナの作り方「Dockerは裏方で何をしているのか?」
LINEのMySQL運用について 修正版
シリコンバレーの「何が」凄いのか
Istioサービスメッシュ入門
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
フロー効率性とリソース効率性について #xpjug
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
イマドキのExcelスクショの撮り方
データベース設計徹底指南
ソフトウェアにおける 複雑さとは何なのか?
Azure Search 大全
グラフデータベース入門
Linux女子部 systemd徹底入門
テスト文字列に「うんこ」と入れるな
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
Ad

More from Yoshitaka Kawashima (20)

PDF
Grokking Simplicity探訪
PDF
ブルックスのいう銀の弾丸とは何か?
PDF
Are Design Patterns Dead?
PDF
Tackling Complexity
PDF
ソフトウェア開発における『知の高速道路』
PDF
ソフトウェア設計における 意思決定とそのレビューの秘訣
PDF
本番障害に至る病
PDF
システムダウンのひみつ
PDF
Mavenの真実とウソ
PDF
Atomic Architecture
PDF
それはYAGNIか? それとも思考停止か?
PDF
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
PDF
ウォーターフォールとアジャイルのフェアな比較
PDF
How to find tech books
PDF
Antifragile Java - Java Day Tokyo 2017 D1-E1
PDF
たとえ日本人同士でも必要な異文化理解力
PDF
SIerにとっての越境 @ DevLOVE 199
PDF
なぜデータモデリングが重要なのか?
PDF
Antifragile Clojure
PDF
Boilerplate vs Magic
Grokking Simplicity探訪
ブルックスのいう銀の弾丸とは何か?
Are Design Patterns Dead?
Tackling Complexity
ソフトウェア開発における『知の高速道路』
ソフトウェア設計における 意思決定とそのレビューの秘訣
本番障害に至る病
システムダウンのひみつ
Mavenの真実とウソ
Atomic Architecture
それはYAGNIか? それとも思考停止か?
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
ウォーターフォールとアジャイルのフェアな比較
How to find tech books
Antifragile Java - Java Day Tokyo 2017 D1-E1
たとえ日本人同士でも必要な異文化理解力
SIerにとっての越境 @ DevLOVE 199
なぜデータモデリングが重要なのか?
Antifragile Clojure
Boilerplate vs Magic
Ad

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