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
Satoru Takeuchi
PRO
June 09, 2024
Technology
3
130
小さな疑問を大事にすると成長に繋がる
以下動画のテキストです
https://youtu.be/g0OOIDM23oI
Satoru Takeuchi
PRO
June 09, 2024
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
俺とVSCode Python Debugger Extension
sat
PRO
1
140
コード再利用のしくみ ライブラリ
sat
PRO
3
38
AWKへの愛を語る
sat
PRO
3
500
syncコマンドのデータ同期 完了待ちやエラー検出
sat
PRO
0
46
動作中のLinux環境の全メモリを見る
sat
PRO
1
66
Linuxの時間を10秒止める
sat
PRO
2
190
プロセスへのメモリ割り当て4 - 実際に使うときにメモリを獲得するデマンドページング(実践編)
sat
PRO
1
95
プロセスへのメモリ割り当て(3) 実際に使うときにメモリを獲得するデマンドページング
sat
PRO
1
62
プロセスへのメモリ割り当て(1) mmap
sat
PRO
2
120
Other Decks in Technology
See All in Technology
Azure AI servicesと歯のおはなし/AzureTravelers_Fukuoka2024_baba
nina01
1
110
いまいまMySQL2024 @ OSC Nagaoka
sakaik
3
270
From LibreOffice to « La Suite » : providing civil servants with Free Software sovereign tools
bluehats
0
120
太田博三(@usagisan2020)
otanet
0
140
CData Virtuality を活かせるキーシナリオと製品デモ
cdataj
0
430
なぜ Rack を理解すべきかプレトーク / Why should you understand Rack - Pre-talk
hogelog
0
220
Delta Commit…の最近...
akuwano
2
110
寒冷地稲作の歴史にみるコミュニティ
miu_crescent
2
130
Cosmos DB で持続可能な RAG を実現しよう!~ AOAI Dev Day ふりかえりを添えて / Sustainable RAG with Cosmos DB with recap AOAI Dev Day
miyake
0
170
The People First Approach to Engineering Success - DevNot 2024
zikriyeurkmez
0
220
最新のWasm事情
askua
5
2.5k
20241015 Toranomon Tech Hub#1 Service Catalog使ってみた
hiashisan
0
210
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
43
6.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Adopting Sorbet at Scale
ufuk
73
9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
40
2.1k
Unsuck your backbone
ammeep
668
57k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
26
4.1k
Done Done
chrislema
181
16k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
4 Signs Your Business is Dying
shpigford
180
21k
How to Think Like a Performance Engineer
csswizardry
18
1k
Optimizing for Happiness
mojombo
375
69k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
7.6k
Transcript
小さな疑問を大事にすると 成長に繋がる Jun. 9th, 2024 Satoru Takeuchi X: satoru_takeuchi 1
はじめに • はなすこと ◦ ソフトウェア技術者として成長する考え方の一つを紹介 ◦ 参考書をじっくり見る、大きなソフトウェアを作るといった大がかりなことではない ◦ 日々のちょっとしたことが後で役立つことを過去の経験をもとに紹介 •
主なターゲット ◦ 技術者として成長したいが、うまくいかないと思っている人 ◦ それでいて、なんとなく日々を過ごしてしまっている人 2
基本的な考え方 • やること ◦ 日々の小さな疑問が生まれたときに、そのままにせず調べる • 効果 ◦ 調べたこと自体で知識が増える ◦
達成感が得られる ◦ その後思わぬところで役立つこともある 3
概念図 もとの状態 4 既存知識
概念図 もとの状態 好奇心が湧く 5 既存知識 ここがわからん… 既存知識
概念図 もとの状態 調べて理解 好奇心が湧く 6 既存知識 新たな 知識 ここがわからん… 既存知識
既存知識 完全理解!
概念図 もとの状態 調べて理解 好奇心が湧く 別の時に… 7 既存知識 新たな 知識 ここがわからん…
既存知識 既存知識 完全理解! 新たな 知識 既存知識 ここがわからん… 別の機会に 得た知識
概念図 もとの状態 調べて理解 好奇心が湧く 別の時に… 8 役立った! 既存知識 新たな 知識
ここがわからん… 既存知識 既存知識 完全理解! 新たな 知識 既存知識 ここがわからん… 新たな 知識 既存知識 新たな知識 別の機会に 得た知識 完全理解!
実例 • 疑問 ◦ lsblkというブロックデバイスをリストするコマンドの仕組みが気になった • 調査結果 ◦ lsblkの仕組みが明らかになった •
数か月後 ◦ lsblkの実行結果を利用する別コマンドの挙動で困ることがあった ◦ 過去の知見を生かして対処できた 9
疑問に至るまでの流れ • 背景 ◦ 自分は業務でRookというCeph(分散ストレージ)を管理するツールのメンテナをしている ▪ https://github.com/rook/rook ◦ RookはCephが使うOSDというデータ構造をブロックデバイス上に作る ▪
1. lsblkコマンドを実行してデバイスのタイプ (e.g. disk、part)を調べる ▪ 2. Cephがサポートしているタイプであれば、 OSDを作る • 疑問 ◦ lsblkコマンドはTYPEフィールドの値をどこから持ってきているのか ? 10
調査した 1. 気になるから調べてみよう(ここ重要) 2. ソース見ればわかるやろ a. 見るべきところは数十行なので 30分くらいで読み終えられた 3. 完全理解してスッキリ
• 📝 lsblkの挙動を詳しく説明している過去動画 ◦ lsblkのtypeフィールドのしくみ ◦ https://youtu.be/x_QSV1tM3qY 11
それから数か月後… • ブロックデバイスのI/O障害をエミュレーションするという発表をした ◦ これは仕事じゃなくて趣味 ◦ blkidのソースを見たことは忘れていた ◦ 📝 発表資料
▪ device mapperによるディスクI/O障害のエミュレーション ▪ https://speakerdeck.com/sat/ozhang-hai-noemiyuresiyon • 発表後にLTをしたくなった ◦ I/O障害のエミューレーションが実際に役に立つことを紹介したい ! ▪ 発表は機能紹介だけに留まっていて、実例が無かった ◦ イベント中にライブで LT資料を作ることにした ▪ Cephのデータの一部を壊しても、元の状態に復旧できることを示そうとした 12
問題発生 • おさらい: RookはCephが使うOSDというデータ構造をブロックデバイス上に作る 1. lsblkコマンドを実行してデバイスのタイプ(e.g. ディスク、パーティション)を得る 2. Cephがサポートしているタイプであれば、OSDを作る •
I/O障害エミュレーション機能を使うと、ブロックデバイスのタイプが、Cephによって サポートされないものになってしまう 13
解決策 • デバイスマッパー設定時にパラメタをうまく設定すると、I/O障害を発生させる対象 のブロックデバイスのタイプを任意のものにできる ◦ lsblkのソースを読んでなければわからない実装依存のハック ◦ 実運用ならやらないが、今回はサンプルのデモなので OKと判断 •
パラメタを設定してブロックデバイスのタイプをCephがサポートするものに見せか けたところ、うまく動いた ◦ スカッとした&「あのときのことがこんな形で役に立つとは」と感動 • 📝 技術的な話 ◦ 分散ストレージはすごいぞ ◦ https://speakerdeck.com/sat/fen-san-sutorezihasugoizo-4af53638-99ea-416b-9841-66ccbc7e4 5cd 14
まとめ • 日々生まれる小さな疑問を放置せずに調べてみることで新しいことがわかる ◦ 疑問は小さければ小さいほど楽 ◦ やってるうちに一筋縄ではいかないとわかったら中断するのも手 • これを繰り返せば技術者としての引き出しの数はどんどん増えていく ◦
調べた当時は小さなことがわかるだけでも、将来につながる • 書籍などで体系的に学ぶのが苦手な人にはとくにお勧め • 注意 ◦ 常に成長し続けなくてはならないわけではない ◦ ずっと成長成長言ってると疲弊してしまうのでほどほどに 15