ここに記載されていること一覧

  • 分散トレーシングとは
  • Zipkinとは
  • gRPCにzipkinを導入
  • ZipkinのUI

分散トレーシングとは

マイクロサービスで、従来のアプリケーションアーキテクチャと異なり、1つのアプリケーションをビジネス機能に沿って、複数の小さなサービスに分けて構成している。

小さくサービスを分け、疎に結合しているからこそ、問題点への改善、新機能の追加を迅速に行うことが可能です。

しかしながら、小さくサービスを分けて運用することにより、アプリケーションのリクエストはエンドツーエンドで把握しないとならない問題点が浮き彫りになります。

分散トレーシングは、分散されたシステム内のリクエストを追跡し、内容を可視化することにより問題解決を簡単にかつ迅速にするための技術です。

サービス間の依存関係やサービス単位のレイテンシを可視化することによって、僕らエンジニアの問題解決の手助けをするシステムとなっています。

Zipkinとは

Zipkinは、GoogleのDapperを参考に、Twitter社によって開発されたOSSです。

レイテンシ問題のトラブルシューティングに必要なデータを収集するAPIと、そのデータを可視化や、システムの依存関係を参照するためのUIを提供します。

アーキテクチャ構成

Zipkinのアーキテクチャ構成ですが、公式サイトから引用します。

Zipkin architecture

参考文献: Architecture - OpenZipkin

Zipkinでは大きく5つのコンポーネントに分けられています。

Reporter, Collector, Storage, API, UI

ついでに、Jaegerのアーキテクチャ構成も載せておきます。

参考文献: Architecture - OpenZipkin

gRPCにZipkinを導入

今回はGoで実装されているAPIに対して、Zipkinを導入していきます。

openzipkin / zipkin-go | GitHubを参考に導入すれば良さそうです。

gRPCだと、grpcのハンドラに対してトレースするように追記すれば終了です。

参考文献: gRPCでのZipkin導入

import (
	"google.golang.org/grpc"
	zipkingrpc "github.com/openzipkin/zipkin-go/middleware/grpc"
)

server = grpc.NewServer(grpc.StatsHandler(zipkingrpc.NewServerHandler(tracer)))

ZipkinのUI

画像の一部をモザイク処理しようとしたのですが、最近の技術で解析されるレベルになってきたので、黒塗りしてます。 参考文献: 写真のモザイクを除去して“ほぼ”復元させるAIが登場

絞り込み検索をすることにより、見たい処理を検索することが可能です。

find trace

各プロセスの処理時間、レイテンシが確認できます。

process latency

各サービスが、どれくらい通信しているかが可視化できるのはいいですね。

Zipkin grpah

参考文献

OpenZipkin

zipkin - GoDoc

GitHub - openzipkin/zipkin-go

分散トレーシングシステムのZipkinを使ってみた話

LINEのマイクロサービス環境における分散トレーシング

クックパッドと分散トレーシング

合わせて読みたい

楽天 インターンに参加しました

サイバーエージェント インターンに参加しました

マネーフォワードのインターンでコンテナイメージ脆弱性検査

About the author

モバイルネットワークについて研究をしている。現在、ネットワークが抱えている問題を解決するための技術を研究室独自で開発中。 高校からの親友と2021年に起業することを決めている。また、2021年に自身の会社を立ち上げる予定である。