1 of 11

GoでTraceableなWrapperを生成する

OpenCensus/OpenTelemetry meetup vol.2 LT

2 of 11

お詫び

だいぶGoに寄った話です

3 of 11

自己紹介

garsue (がーすー)

MF KESSAI株式会社でバックエンドの開発やってます。

I use OpenCensus with Go and Stackdriver!!!

4 of 11

span仕込んでますか

ぼくはやってません

5 of 11

公式のラッパーやG社製SDKに甘やかされてる

ochttpやGCPの各種クライアントライブラリは使うだけ。

基本何も考えなくてもトレースされる。楽ちん!!!

6 of 11

マイクロサービスじゃなくてもトレースしたい

レイヤードアーキテクチャ、クリーンアーキテクチャなど、アプリケーション内部でレイヤーが別れていたりする。

各レイヤーのトレースをとれるようにしたい。

でも各レイヤーの出入り口に手でトレース仕込みたくない。

7 of 11

🤔

context.Contextを引数に取るExportされた関数・メソッドを、

ctx, span := trace.StartSpan(ctx, "...")�defer span.End()

をくっつけて呼び出すようなラッパーがあればよさそう??

8 of 11

つくってみた

https://github.com/garsue/otwgen

spanを仕込みたいパッケージを指定して、ラッパーが定義されたコードを生成するツール。

9 of 11

雑なサンプル

https://github.com/garsue/otwgen/tree/master/example

go generateでwrapperが作られるよ。

10 of 11

雑感

なんかそれっぽいものはできたけど使い物になるかは謎。�(=使ってない)

Span名とかTagとか入れたくなったら結局手で書くほうが早い。

11 of 11

Have a good Observability