本ワークショップについて#
- ボトルネックを含むデモアプリケーションへのプロファイリングツールの導入と計測
- pprof と runtime/trace を導入して得られた知見の言語化と、参加者間での共有
- (時間が余った場合)Flight Recorder(Go 1.25.0以降)について、業務コードやOSSへの適用方法に関するディスカッション
ワークショップのゴール#
このワークショップを終えたとき、以下の3項目が満たされた状態を目指します:
- Go における診断方法と関連する基礎知識を説明できる
- Go におけるプロファイリングとトレーシングを目的とした計装方法とツールの利活用を経験する
- プロファイリングとトレーシングの特性を説明できる
タイムテーブル(120分)#
| 時間 | 内容 | 形式 |
|---|---|---|
| 15分 | イントロダクション ・ワークショップの目的と進め方 ・環境確認 ・Goの診断方法の概要 | 講義 |
| 40分 | Part 1: Profiling ・Profilingの基礎(10分) ・実践:CPU/Heap/Goroutineプロファイリング(20分) ・言語化・ディスカッション(10分) | 講義 + 実践 + 共有 |
| 40分 | Part 2: Tracing ・Tracingの基礎(10分) ・実践:タイムライン分析・Task/Region(20分) ・言語化・ディスカッション(10分) | 講義 + 実践 + 共有 |
| 15分 | 比較と本番運用のTips ・ProfilingとTracingの使い分け ・本番環境での計装・継続的改善 | 講義 |
| 10分 | 終わりに ・全体の振り返り・今後の学び方 ・質疑応答 | まとめ |
ワークショップの進め方について#
本ワークショップでは、時間の関係上、一部のコンテンツをスキップします。 しかし、このワークショップの資料は終了後も公開し続ける予定なので、適宜フォローアップしてください。
また、できるだけ出典や参考文献を載せていますので、興味を持った分野やトピックがあれば以下のことも試してみてください:
- 📖 より深く掘り下げて学んでみる
- ✍️ ブログ記事にまとめてみる
- 🗣️ 社内で知識を共有してみる
- 🚀 自分のプロジェクトで試してみる
アイスブレイク#
発言は、一言目が最もしづらいと思っています。ワークショップを始める前に、少しだけ話す練習をしましょう。
30秒程度で、以下を共有してみてください:
- 名前/ハンドルネーム
- Go歴(どのくらい触っているか)
- 普段やっていること(どんな開発をしているか)
- 興味分野(このワークショップで特に知りたいこと)
長く話しすぎると時間がかかるので、人数に応じて形式をよしなに決めます。
それでは、一緒に学んでいきましょう!
参考資料#
公式ドキュメント#
- Go Diagnostics - Goの診断手法の総合ガイド
- Profiling Go Programs - プロファイリング入門
- Execution Tracer - トレーシング入門
推奨動画#
- Dave Cheney - Two Go Programs, Three Different Profiling Techniques (2019)
- Felix Geisendörfer - The Busy Developer’s Guide to Go Profiling, Tracing and Observability (2021)