Submit Search
Upload
アンチフラジャイルの世界
•
12 likes
•
5,156 views
Yoshitaka Kawashima
Follow
NoOps Meetup Tokyo #8での発表資料です。
Read less
Read more
Software
Report
Share
Report
Share
1 of 41
Download now
Download to read offline
Recommended
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
私にとってのテスト
私にとってのテスト
Takuto Wada
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
なぜデータモデリングが重要なのか?
なぜデータモデリングが重要なのか?
Yoshitaka Kawashima
ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
Yoshitaka Kawashima
Recommended
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
私にとってのテスト
私にとってのテスト
Takuto Wada
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
なぜデータモデリングが重要なのか?
なぜデータモデリングが重要なのか?
Yoshitaka Kawashima
ブルックスのいう銀の弾丸とは何か?
ブルックスのいう銀の弾丸とは何か?
Yoshitaka Kawashima
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
データベース設計徹底指南
データベース設計徹底指南
Mikiya Okuno
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
Koichiro Matsuoka
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
Yoshitaka Kawashima
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
増田 亨
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
概念モデリング再入門 + DDD
概念モデリング再入門 + DDD
Hiroshima JUG
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話
NipponAlgorithm
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
Yusuke Suzuki
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
2022_sakura-yube_ddd.pdf
2022_sakura-yube_ddd.pdf
toshiki kawai
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
増田 亨
ドメインモデルの育て方
ドメインモデルの育て方
増田 亨
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Are Design Patterns Dead?
Are Design Patterns Dead?
Yoshitaka Kawashima
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
More Related Content
What's hot
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
データベース設計徹底指南
データベース設計徹底指南
Mikiya Okuno
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
Koichiro Matsuoka
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
Yoshitaka Kawashima
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
増田 亨
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
概念モデリング再入門 + DDD
概念モデリング再入門 + DDD
Hiroshima JUG
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話
NipponAlgorithm
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
Yusuke Suzuki
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
2022_sakura-yube_ddd.pdf
2022_sakura-yube_ddd.pdf
toshiki kawai
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
増田 亨
ドメインモデルの育て方
ドメインモデルの育て方
増田 亨
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
What's hot
(20)
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
データベース設計徹底指南
データベース設計徹底指南
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
概念モデリング再入門 + DDD
概念モデリング再入門 + DDD
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
2022_sakura-yube_ddd.pdf
2022_sakura-yube_ddd.pdf
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
ドメインモデルの育て方
ドメインモデルの育て方
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
More from Yoshitaka Kawashima
Are Design Patterns Dead?
Are Design Patterns Dead?
Yoshitaka Kawashima
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
Tackling Complexity
Tackling Complexity
Yoshitaka Kawashima
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣
Yoshitaka Kawashima
本番障害に至る病
本番障害に至る病
Yoshitaka Kawashima
システムダウンのひみつ
システムダウンのひみつ
Yoshitaka Kawashima
Mavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima
Atomic Architecture
Atomic Architecture
Yoshitaka Kawashima
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較
Yoshitaka Kawashima
How to find tech books
How to find tech books
Yoshitaka Kawashima
Antifragile Java - Java Day Tokyo 2017 D1-E1
Antifragile Java - Java Day Tokyo 2017 D1-E1
Yoshitaka Kawashima
たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力
Yoshitaka Kawashima
SIerにとっての越境 @ DevLOVE 199
SIerにとっての越境 @ DevLOVE 199
Yoshitaka Kawashima
Antifragile Clojure
Antifragile Clojure
Yoshitaka Kawashima
Boilerplate vs Magic
Boilerplate vs Magic
Yoshitaka Kawashima
既婚プログラマの時間捻出術
既婚プログラマの時間捻出術
Yoshitaka Kawashima
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Yoshitaka Kawashima
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
Yoshitaka Kawashima
More from Yoshitaka Kawashima
(20)
Are Design Patterns Dead?
Are Design Patterns Dead?
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Tackling Complexity
Tackling Complexity
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
ソフトウェア設計における 意思決定とそのレビューの秘訣
ソフトウェア設計における 意思決定とそのレビューの秘訣
本番障害に至る病
本番障害に至る病
システムダウンのひみつ
システムダウンのひみつ
Mavenの真実とウソ
Mavenの真実とウソ
Atomic Architecture
Atomic Architecture
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
ウォーターフォールとアジャイルのフェアな比較
ウォーターフォールとアジャイルのフェアな比較
How to find tech books
How to find tech books
Antifragile Java - Java Day Tokyo 2017 D1-E1
Antifragile Java - Java Day Tokyo 2017 D1-E1
たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力
SIerにとっての越境 @ DevLOVE 199
SIerにとっての越境 @ DevLOVE 199
Antifragile Clojure
Antifragile Clojure
Boilerplate vs Magic
Boilerplate vs Magic
既婚プログラマの時間捻出術
既婚プログラマの時間捻出術
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
アンチフラジャイルの世界
1.
アンチフラジャイルの世界 kawasima NoOps Meetup Tokyo
#8
2.
「わからない」にはレベルがある 今日覚えて帰ること①
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.
今日覚えて帰ること② 「複雑」には2種類ある 分からないことが分かっている 分からないことが分からない
5.
「複雑」と「複雑系」は違う Complex Chaotic 今日覚えて帰ること③
6.
どのレベルにあるのかによって 取るべき戦術が異なる
7.
Simple / Obvious 手順書のある安定したシステムの運用作業 状況を把握し、既知のベストプラクティスを適用する
8.
Complicated 状況を把握し、複数のソリューションから 最善なものを適用する デザインパターンやフレームワークを使った開発
9.
Complex 状況を調査し、進むべき道を決め、軌道修正しながら進む ターゲットが時間と共に動くサービス開発
10.
Chaoticな状況の生存戦略
11.
Fragileの対義語が無いので造られた Fragile Antifragile Robust 取り扱い注意 どうぞ落っことして みてください 取り扱いに注意するな という意味ではない
12.
13.
Antifragileが載っている書籍
14.
世の中の出来事の非対称性七面鳥のおじさんへの信頼度 t 毎日エサを与えられ、 信頼度は日々蓄積されていく が…
15.
予測が出来ない大きな変動 (Black Swan) リーマンショックや日本のバブル崩壊、3.11 後になってみれば予測可能だった気がする(後知恵バイアス) 実際、予測は役には立たない。 ありそうもないことを 人は過小評価しがち
16.
Black Swanへの態度 Black Swanが起きたとき、反省すべきは… 事象そのものを 予測できなかったこと FragileやAntifragileを 理解していなかったこと 予測ミスによる損失を最小化し、利得を最大化する方法を考えよう
17.
Benefit Change Cost Antifragile Resilient Robust Fragile https://developers.redhat.com/blog/2016/07/20/from-fragile-to-antifragile-software/
18.
Cynefinフレームワークとの対応 Fragile Robust Resilient Antifragile 変動は想定せず(しなくてもよ く)、ベストプラクティスを 粛々と実行する。 変動を予測し、それに耐えうる ように最適なソリューションを 適用する。 変動を予測し、それにシステム が適応できるように設計する。 変動は予測せず、発生したとき の対処(あわよくば大きなゲイ ンを得る方法)を検討する。 Chaotic Complex Complicated Simple /
Obvious
19.
Simple/ObviousがChaoticに変わるケース ユーザが急増したときに、どういうBlack Swanが起こる (ユーザは正規のユーザだけとは限らない) ユーザは、ひどいもんだ。 ユーザがいなければ、システムはもっとうまく動くのに。 『Release It!』4章
安定性のアンチパターンより あなたのシステムが安定運用できているのは、 少ない行儀の良いユーザのおかげかもしれない…
20.
ソフトウェアの世界への適用
21.
Tinkering AdobeのKickboxやGoogleの20%ルール https://news.mynavi.jp/article/20151019-am201506/
22.
Fault Injection (in Production) 1.定常状態における振る舞いの仮説を立てる 2.実世界の事象は多様である 3.本番環境で検証を実行する 4.継続的に実行する検証の自動化 5.影響範囲を局所化する Chaos
Engineeringの5原則 https://principlesofchaos.org/?lang=JAcontent
23.
自動バグフィクス https://www.comp.nus.edu.sg/~abhik/pdf/cacm19.pdf
24.
例) DeepFix http://www.iisc-seal.net/deepfix Deep Learningを利用した、パッチの自動生成
25.
Auto Tuning https://qiita.com/kawasima/items/5d8a8a9b84aae6d7de71
26.
Property Based Testing Example
Based Testing ● 入力: 具体的な値 ● Assertion: 決まりがない (…ので、マッチポンプテストに陥りがち) Property Based Testing ● 入力: スペックにしたがい自動生成 ● Assertion: 期待したふるまいか?を検証
27.
例) Web APIのProperty
Based Testing https://qiita.com/kawasima/items/25836e443e8822e89b24 Clojure specのJavaScript移植
28.
例) Web APIのProperty
Based Testing 定義したSpecに沿って、パラメータを生成しAPIを自動で叩く。 Spec外の値も生成できると、Antifragileに近づく (まだこれから)
29.
Noise除去 データに触れれば触れるほど、「信号」と呼ばれる貴重な情報よりも、 ノイズに触れる可能性は不釣り合いに高まっていく。 https://medium.com/netflix-techblog/scryer-netflixs-predictive-auto-scaling-engine-part-2-bb9c4f9b9385 「静観」をシステムが判断したい…
30.
Antifragile System を支える技術
31.
Microservices Antifragileのためとしては、以下2点 障害の局所化 Tinkeringの環境
32.
亀裂の伝播を防ぐ 1.タイムアウト 2.サーキットブレイカー 3.隔壁 ・・・ 必要なすべては、 Release It!の中に
33.
DevOps Culture Automation Measurement Sharing 重なりは多い DevOps Antifragile 失敗を前提とした案件
34.
Road to DevOps
& Antifragile ① DevとOpsを分離する ② Opsを無人化する ③ OpsのAntifragile化
35.
DevとOpsの分離 ITILやSOX法への対応のためには、開発者が 本番環境に気軽にアクセスできることはまかりならない 開発環境 本番環境 運用チーム開発チーム アクセスは互いに 制限される
36.
Opsの無人化 Devが本番環境にログインしない 開発環境 本番環境 運用チーム開発チーム デプロイ対象の提供 本番のメトリクス 発生障害情報の連携
37.
OpsのAntifragile化 開発環境 本番環境 運用チーム開発チーム Tinkering /
FIT 本番環境にストレスを加えて強くする
38.
Wrap up
39.
置かれた状況がどこかを知ることが最重要 仮説検証 Simple / Obvious ComplectComplex Chaotic Tinkering Fault
Injection 専門家のアサイン ルール作り / 訓練 Agile パターンランゲージ グッドプラクティスが分かっていることや事前調査 もできないことを仮説検証しないために… 今日覚えて帰ること④
40.
複雑さの推移 何があたるかサッパリ Complicated Chaotic Chaotic Complicated Simple / Obvious 勝ち方を見つける Complex 事業の安定収益化 Business
Side System Side t
41.
λove chaos
Download now