パフォーマンスに苦労している並列処理システムを改善するために Stackdriver Traceを導入して動作の可視化を行った結果、 ボトルネックの存在が判明してパフォーマンスを改善できた事例について紹介します。
この事例でStackdriver Traceを選定した過程や OpenTelemetry へコントリビュートした経緯についても共有します。
また、新規開発のGraphQLサーバへ導入して REST APIサーバと通信をまたいだ可視化を行った事例についても紹介します。
View Slide
or " "
logger.info("hogehoge")
※
OpenCensus OpenTelemetry
compile 'io.opencensus:opencensus-api:0.16.0'compile 'io.opencensus:opencensus-exporter-trace-Stackdriver:0.16.0'runtime 'io.opencensus:opencensus-impl:0.16.0'
class Foo {private static final Tracer tracer = Tracing.getTracer();public static void main(String ...args) {try {setupOpenCensusAndStackdriverExporter();} catch (IOException e) {return;}yourMethod()}void yourMethod() {try (Scope ss = tracer.spanBuilder("yourMethod").startScopedSpan()) {//Span span = tracer.getCurrentSpan();span.addAnnotation("name_of_tag", "foobarbaz");}}}
public static void main(String ...args) {try {//setupOpenCensusAndStackdriverExporter();} catch (IOException e) {return;}}
void yourMethod() {// span// try-with-resources closetry (Scope ss = tracer.spanBuilder("do_something").startScopedSpan()) {//////// SpanSpan span = tracer.getCurrentSpan();//span.addAnnotation("name_of_tag", "foobarbaz");}}
@Configuration
compile 'com.m3.tracing:spring-boot:1.0.1'M3_TRACER_FQCNcom.m3.tracing.tracer.opencensus.M3OpenCensusTracer
public static void main(String ...args) {try {//initTracingSdk();} catch (IOException e) {return;}}
@Serviceclass Foo {private final M3Tracer tracer;// Constructor Injection (DI)public Foo(M3Tracer tracer) {this.tracer = tracer;}void yourMethod() {try (TraceSpan span = tracer.startSpan("do_something")) {//span.set("name_of_tag", "foobarbaz");}}}
void yourMethod() {// span// try-with-resources closetry (TraceSpan span = tracer.startSpan("do_something")) {////////span.set("name_of_tag", "foobarbaz");}}