GoでTraceableなWrapperを生成する
OpenCensus/OpenTelemetry meetup vol.2 LT
お詫び
だいぶGoに寄った話です
自己紹介
garsue (がーすー)
MF KESSAI株式会社でバックエンドの開発やってます。
I use OpenCensus with Go and Stackdriver!!!
span仕込んでますか
ぼくはやってません
公式のラッパーやG社製SDKに甘やかされてる
ochttpやGCPの各種クライアントライブラリは使うだけ。
基本何も考えなくてもトレースされる。楽ちん!!!
マイクロサービスじゃなくてもトレースしたい
レイヤードアーキテクチャ、クリーンアーキテクチャなど、アプリケーション内部でレイヤーが別れていたりする。
各レイヤーのトレースをとれるようにしたい。
でも各レイヤーの出入り口に手でトレース仕込みたくない。
🤔
context.Contextを引数に取るExportされた関数・メソッドを、
ctx, span := trace.StartSpan(ctx, "...")�defer span.End()
をくっつけて呼び出すようなラッパーがあればよさそう??
つくってみた
https://github.com/garsue/otwgen
spanを仕込みたいパッケージを指定して、ラッパーが定義されたコードを生成するツール。
雑なサンプル
https://github.com/garsue/otwgen/tree/master/example
go generateでwrapperが作られるよ。
雑感
なんかそれっぽいものはできたけど使い物になるかは謎。�(=使ってない)
Span名とかTagとか入れたくなったら結局手で書くほうが早い。
Have a good Observability