Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ゼロトラブルへの道
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Daisuke Yamazaki
December 19, 2022
Technology
9k
23
Share
ゼロトラブルへの道
ゼロトラブルへの道
システムトラブルをゼロにし、ビジネスを加速させる方法
Daisuke Yamazaki
December 19, 2022
More Decks by Daisuke Yamazaki
See All by Daisuke Yamazaki
RWC2019 rubyによる超大量データ配信
yamaz
1
200
学び実践してきたこと
yamaz
1
360
スケールアウト再考
yamaz
1
360
RTB 30 min
yamaz
0
120
RailsとCで広告システムを作って起業した話
yamaz
1
340
robust logprocessing
yamaz
1
98
adserver 30min
yamaz
0
120
Other Decks in Technology
See All in Technology
AIにより大幅に強化された AWS Transform Customを触ってみる
0air
0
310
ASTのGitHub CopilotとCopilot CLIの現在地をお話しします/How AST Operates GitHub Copilot and Copilot CLI
aeonpeople
1
120
Podcast配信で広がったアウトプットの輪~70人と音声発信してきた7年間~/outputconf_01
fortegp05
0
230
レガシーシステムをどう次世代に受け継ぐか
tachiiri
0
260
【AWS】CloudTrail LakeとCloudWatch Logs Insightsの使い分け方針
tsurunosd
0
130
"まず試す"ためのDatabricks Apps活用法 / Databricks Apps for Early Experiments and Validation
nttcom
1
170
解剖"React Native"
hacusk
0
110
Cortex Code君、今日から内製化支援担当ね。
coco_se
0
270
OCI技術資料 : ロード・バランサ 概要 - FLB・NLB共通
ocise
4
27k
マルチモーダル非構造データとの闘い
shibuiwilliam
1
180
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
77k
AWS DevOps Agent or Kiro の使いどころを考える_20260402
masakiokuda
0
170
Featured
See All Featured
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
340
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
500
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
110
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
330
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
43k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
170
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
800
Transcript
ゼロトラブルへの道 システムトラブルをゼロにし、 ビジネスを加速させる方法 TOCQ: 山崎大輔(@yamaz)
こういうこと、あるあるです • 勢いよくクラウド上に作られたアプリがある • テストやCI/CDはあんまり整備されてない • コードの質もイマイチで結構デグレする • だけどビジネスはそこそこ回ってる •
トラブルに時間取られて開発速度低下(ビジネス速度も低下) • トラブル起因で顧客をライバルに取られる • 対策はやってるものの、モグラたたき感が拭えない 2
システムのクオリティは超大事 1. クオリティが低いとトラブル対応のため、エンジニアはもと より関係各所の⼯数が無駄に発⽣(意味のない⼯数) 2. クオリティの低さは意味のないチャーン(解約)を産む 多額のマーケ費⽤をかけて育てたユーザをライバルにタダで取られる 3. システムのクオリティを低いと開発速度が下がる よって成⻑期においてはシステムクオリティは機能追加より⼤事
になりえる 3
逆にシステムのクオリティが高いと 1. トラブルがないため、エンジニアはもとより関係各所の⼯数 がかからない(コストが低くなる) 2. 安定性はマーケ施策ともなりえる ライバルが多額のマーケ費⽤をかけて育てたユーザを奪えるチャンス 3. 気分良く開発できて開発速度が下がらない (開発速度が上がるわけではないのに注意!)
4
ミスやトラブルに対する考え⽅ 5
その前に ハインリッヒの法則 6
ハインリッヒの法則を3行で 1. 1つの重⼤事故の裏には29の軽微な事故があり、その裏には 300の異常が存在するという事故発⽣に関する経験則 2. だから異常を⾒逃さず対処することが⼤事 3. 対策に際しては安全⼯学の考え⽅が⼤事 7
1つの重⼤事故の裏には29の軽微な事故があり、 その裏には300の異常が存在する 同じ⼈間の起こした同じ種類の330件の災害のうち,300件は無 傷で,29件は軽い傷害を伴い,1件は報告を要する重い傷害を 伴っていることが判明した。このことは5000件以上について調 べた研究により追認されている (Wikipedia: ハインリッヒの法則より) →300の異常を⾒逃してると⼤事故が起きるということ 8
ミスやトラブルに対する考え⽅ 1. ミスやトラブルは確率的に起きるものと考える 2. 不安定な仕組みの上に安定した仕組みを構築することは可能だ と考える 3. ミスは許容する.ただし最初の一回だけ 4. 根性論は禁止です
順番に説明していきます 9
1. ミスやトラブルは確率的に 起きると考える → トラブルはありとあらゆる隙間をぬっておきるので、原因を漏れな く潰すというやり方は限界があると考える トラブルの発生回数 = 機能数*アクセス数*ユーザ数*データ量*発生確率 →事業がうまくいくほど辛くなる
(事業がうまくいかないと別の意味でもっと辛い) 10
トラブルの発生増加は複雑化の兆候 トラブルの発生回数 = 機能数*アクセス数*ユーザ数*データ量*発生確率 売上 複雑性 ⼀般の⼈が考える複雑性の増加 (⼀次関数) 実際の複雑性の 増加(n次関数)
11
トラブルの発生増加は複雑化の兆候 複雑性増加に対してエンジニアの単調増加(一次関数)では 対抗できなくなる→開発がどんどん遅くなる真の理由 →複雑性が一定以上になると個人の頑張りではどうにもならなくなる 売上 複雑性 ⼀般の⼈が考える複雑性の増加 実際の複雑性の 増加(n次関数) 12
2. 不安定な仕組みの上に安定した仕 組みを構築することは可能だと考える RAIDやロードバランサーと同じ考え方。 パーツが不安定であっても、システム全体の安定性を諦 める必要はない 13
3. ミスは許容する。ただし最初の一回だ け どんなに馬鹿げた理由であっても、 そんなことを許したシステムのせいと考える →ただし必ず対策を要求し、全く同じ理由による再発は許容しない (トラブル報告自体をしないことはもっと許容しない) 14
3. ミスは許容する。ただし最初の一回だ け (補足) 1. たくさんアウトプットをする人は確率的にトラブルを踏みがちなので、責めるのではなく、た またまトラブルを踏んだ人と考える 2. そうでないとトラブルを起こさないよう、何もしないという行為が個人の最適解になってしまう (それは困るでしょ?)
3. なのでむしろ今トラブルが発見できて良かったと考える 今後会社が成長するなら今回のトラブルは最も規模が小さいはず →もっとでかいトラブルになる前に発見できてよかったと常に考える(歯を食いしばりなが ら) 4. 犯人捜しに意味はない 15
4.根性論は禁止です 「以後気をつけます」とか「死ぬ気で頑張ります」は基本ナシ 理由:個人の英雄的努力を永遠に期待することになり、 頑張りきれなくなったら破綻するから 頑張りはとても貴重な資源で無限には供給されない 16
対策の考え方 17
対策の考え方 トラブルが外部に出たら事故扱い。対策には2種類ある • 発生対策: トラブルが発生しないようにするための対策 (そもそもそんなトラブルが起きえないようにする) • 流出対策: トラブルが発生した際に外部に出ないための対策 (そのトラブルが万一おきても大丈夫なようにする)
→流出対策が超大事。なのにあんまり実施されてない! 再発防止に際してこの2種類の対策を徹底することでトラブルは激減(!!!)します 18
対策の考え方 例)工場の2階から工具を落とし、頭にあたる事故が頻発するという トラブルの対策を考える • ✖ダメな方法 • 工具を落とさないように気をつける(根性論禁止) • 〇より良い方法 •
落としても大丈夫なように工具に紐を付けておく (発生対策:そのトラブルが起きえないようにする) • 落としても大丈夫なように工場内ではヘルメットを着用 (流出対策:そのトラブルが万一おきても大丈夫なようにする) 19
対策は流出対策の方が 圧倒的に大事!! なぜか?? • 発生対策: トラブルが発生しないようにするための対策 • 流出対策: トラブルが発生した際に外部に出ないための対策 トラブルはありとあらゆる隙間を縫って確率的に発生する
→よってすべての発生原因を事前に潰すことはできない →よって流出対策がとても大事となる でもあんまり重視されてない(´・ω・`) 20
本当にトラブルをなくすために • 対策は必ず発生対策と流出対策の両面で • トラブルは絶対にゼロにできると心から信じ、社内に発信し続ける • 軽微以上のトラブル対応の優先度を最大にする (優先度最大というのは文字通りの意味で、対応者が他のことやってるのならその開発自体を止める) • QAがあぶり出してくれた不具合もトラブル扱いとして対処
• ヒヤリハットは必ず報告(対応は必要そうなら行う。全部は対処しない) ↑上記は前職で実際にやってたことです 21
対策がしんどくなりすぎないために 22
対策のための開発はしんどくなりがち • 直しにくいトラブルの存在 • 検知が改善するとヒヤリハットの発見精度があがり、対策のバックロ グが積み上がりすぎる • 積み上がりすぎたバックログの優先度付けがしんどい 23
対策のための開発がしんどくなりすぎ ないためのいくつかの方法 • 直しにくいトラブルは頑張りすぎず、でも検知だけはより速く・より高 精度でできるように (ユーザに気づかれなければギリセーフ) • 検知が積み上がっていくとそれはテストのように機能するようになる ので、未来的に楽になると考える •
積み上がりすぎた対策のバックログは、今となってはそこまで重要で はなかったと考え、定期的に一旦全部捨て、今から起きたトラブルに 対して積み上げなおす 24
いくつか雑多なメモ 1. 機能追加なしであっても、単に売れるだけでシステムは痛みはじめる 2. エンジニアであってもこの構造は気づきにくい(のでケアが必要) 3. 機能追加は売上に常にポジティブなので選択されがちだが、マイナ スの積み上げも同時に行われてることに気づきづらい 4. なので守りの開発も重視しないといけない
5. 設計をちゃんとしてないと、因数分解しても成果が出ない 6. エンジニアは尻を叩かれても、個人だとどうにもならないと負の学習 をしてしまいがち 25
最後に 正しい知識を持ってゼロトラブルな状況を作り、 システムでビジネスを加速させていきましょう! 追加の質問などあれば Twitter: @yamaz Web: tocq.com まで 26