|
| 1 | +--- |
| 2 | +title: デモのアーキテクチャ |
| 3 | +linkTitle: アーキテクチャ |
| 4 | +aliases: [current_architecture] |
| 5 | +body_class: otel-mermaid-max-width |
| 6 | +default_lang_commit: 1e69c8f94a605ce5624c6b6657080d98f633ac7b |
| 7 | +--- |
| 8 | + |
| 9 | +**OpenTelemetryデモ** は、異なるプログラミング言語で書かれた複数のマイクロサービスから構成されており、gRPCとHTTPを使って相互に通信を行います。 |
| 10 | +さらに、負荷生成ツールが含まれており、[Locust](https://locust.io/)というツールを使用して、ユーザートラフィックを模擬的に生成します。 |
| 11 | + |
| 12 | +```mermaid |
| 13 | +graph TD |
| 14 | +subgraph サービス図 |
| 15 | +accountingservice(会計サービス):::dotnet |
| 16 | +adservice(広告サービス):::java |
| 17 | +cache[(キャッシュ<br/>(Valkey))] |
| 18 | +cartservice(カートサービス):::dotnet |
| 19 | +checkoutservice(決済サービス):::golang |
| 20 | +currencyservice(通貨サービス):::cpp |
| 21 | +emailservice(メールサービス):::ruby |
| 22 | +flagd(Flagd):::golang |
| 23 | +flagdui(Flagd-ui):::typescript |
| 24 | +frauddetectionservice(不正検知サービス):::kotlin |
| 25 | +frontend(フロントエンド):::typescript |
| 26 | +frontendproxy(フロントエンドプロキシ <br/>(Envoy)):::cpp |
| 27 | +imageprovider(画像プロバイダー <br/>(nginx)):::cpp |
| 28 | +loadgenerator([負荷生成ツール]):::python |
| 29 | +paymentservice(支払いサービス):::javascript |
| 30 | +productcatalogservice(商品カタログサービス):::golang |
| 31 | +quoteservice(見積サービス):::php |
| 32 | +recommendationservice(レコメンデーションサービス):::python |
| 33 | +shippingservice(配送サービス):::rust |
| 34 | +queue[(キュー<br/>(Kafka))]:::java |
| 35 | +
|
| 36 | +adservice ---->|gRPC| flagd |
| 37 | +
|
| 38 | +checkoutservice -->|gRPC| cartservice |
| 39 | +checkoutservice --->|TCP| queue |
| 40 | +cartservice --> cache |
| 41 | +cartservice -->|gRPC| flagd |
| 42 | +
|
| 43 | +checkoutservice -->|gRPC| shippingservice |
| 44 | +checkoutservice -->|gRPC| paymentservice |
| 45 | +checkoutservice --->|HTTP| emailservice |
| 46 | +checkoutservice -->|gRPC| currencyservice |
| 47 | +checkoutservice -->|gRPC| productcatalogservice |
| 48 | +
|
| 49 | +frauddetectionservice -->|gRPC| flagd |
| 50 | +
|
| 51 | +frontend -->|gRPC| adservice |
| 52 | +frontend -->|gRPC| cartservice |
| 53 | +frontend -->|gRPC| checkoutservice |
| 54 | +frontend ---->|gRPC| currencyservice |
| 55 | +frontend ---->|gRPC| recommendationservice |
| 56 | +frontend -->|gRPC| productcatalogservice |
| 57 | +
|
| 58 | +frontendproxy -->|gRPC| flagd |
| 59 | +frontendproxy -->|HTTP| frontend |
| 60 | +frontendproxy -->|HTTP| flagdui |
| 61 | +frontendproxy -->|HTTP| imageprovider |
| 62 | +
|
| 63 | +Internet -->|HTTP| frontendproxy |
| 64 | +
|
| 65 | +loadgenerator -->|HTTP| frontendproxy |
| 66 | +
|
| 67 | +paymentservice -->|gRPC| flagd |
| 68 | +
|
| 69 | +queue -->|TCP| accountingservice |
| 70 | +queue -->|TCP| frauddetectionservice |
| 71 | +
|
| 72 | +recommendationservice -->|gRPC| productcatalogservice |
| 73 | +recommendationservice -->|gRPC| flagd |
| 74 | +
|
| 75 | +shippingservice -->|HTTP| quoteservice |
| 76 | +end |
| 77 | +
|
| 78 | +classDef dotnet fill:#178600,color:white; |
| 79 | +classDef cpp fill:#f34b7d,color:white; |
| 80 | +classDef golang fill:#00add8,color:black; |
| 81 | +classDef java fill:#b07219,color:white; |
| 82 | +classDef javascript fill:#f1e05a,color:black; |
| 83 | +classDef kotlin fill:#560ba1,color:white; |
| 84 | +classDef php fill:#4f5d95,color:white; |
| 85 | +classDef python fill:#3572A5,color:white; |
| 86 | +classDef ruby fill:#701516,color:white; |
| 87 | +classDef rust fill:#dea584,color:black; |
| 88 | +classDef typescript fill:#e98516,color:black; |
| 89 | +``` |
| 90 | + |
| 91 | +```mermaid |
| 92 | +graph TD |
| 93 | +subgraph サービスの凡例 |
| 94 | + dotnetsvc(.NET):::dotnet |
| 95 | + cppsvc(C++):::cpp |
| 96 | + golangsvc(Go):::golang |
| 97 | + javasvc(Java):::java |
| 98 | + javascriptsvc(JavaScript):::javascript |
| 99 | + kotlinsvc(Kotlin):::kotlin |
| 100 | + phpsvc(PHP):::php |
| 101 | + pythonsvc(Python):::python |
| 102 | + rubysvc(Ruby):::ruby |
| 103 | + rustsvc(Rust):::rust |
| 104 | + typescriptsvc(TypeScript):::typescript |
| 105 | +end |
| 106 | +
|
| 107 | +classDef dotnet fill:#178600,color:white; |
| 108 | +classDef cpp fill:#f34b7d,color:white; |
| 109 | +classDef golang fill:#00add8,color:black; |
| 110 | +classDef java fill:#b07219,color:white; |
| 111 | +classDef javascript fill:#f1e05a,color:black; |
| 112 | +classDef kotlin fill:#560ba1,color:white; |
| 113 | +classDef php fill:#4f5d95,color:white; |
| 114 | +classDef python fill:#3572A5,color:white; |
| 115 | +classDef ruby fill:#701516,color:white; |
| 116 | +classDef rust fill:#dea584,color:black; |
| 117 | +classDef typescript fill:#e98516,color:black; |
| 118 | +``` |
| 119 | + |
| 120 | +デモアプリケーションの[メトリック](/docs/demo/telemetry-features/metric-coverage/) と [トレース](/docs/demo/telemetry-features/trace-coverage/) の計装の現状については、リンクをご確認ください。 |
| 121 | + |
| 122 | +コレクターの設定は [otelcol-config.yml](https://github.com/open-telemetry/opentelemetry-demo/blob/main/src/otelcollector/otelcol-config.yml) で行われており、代替のエクスポーターをここで設定することができます。 |
| 123 | + |
| 124 | +```mermaid |
| 125 | +graph TB |
| 126 | +subgraph tdf[テレメトリーデータフロー] |
| 127 | + subgraph subgraph_padding [ ] |
| 128 | + style subgraph_padding fill:none,stroke:none; |
| 129 | + %% タイトルの重複を防ぐためのパディング |
| 130 | + subgraph od[OpenTelemetryデモ] |
| 131 | + ms(マイクロサービス) |
| 132 | + end |
| 133 | +
|
| 134 | + ms -.->|"OTLP<br/>gRPC"| oc-grpc |
| 135 | + ms -.->|"OTLP<br/>HTTP POST"| oc-http |
| 136 | +
|
| 137 | + subgraph oc[OTelコレクター] |
| 138 | + style oc fill:#97aef3,color:black; |
| 139 | + oc-grpc[/"OTLPレシーバー<br/>リッスン先:<br/>grpc://localhost:4317"/] |
| 140 | + oc-http[/"OTLPレシーバー<br/>リッスン先:<br/>localhost:4318<br/>"/] |
| 141 | + oc-proc(プロセッサー) |
| 142 | + oc-prom[/"OTLP HTTPエクスポーター"/] |
| 143 | + oc-otlp[/"OTLPエクスポーター"/] |
| 144 | +
|
| 145 | + oc-grpc --> oc-proc |
| 146 | + oc-http --> oc-proc |
| 147 | +
|
| 148 | + oc-proc --> oc-prom |
| 149 | + oc-proc --> oc-otlp |
| 150 | + end |
| 151 | +
|
| 152 | + oc-prom -->|"localhost:9090/api/v1/otlp"| pr-sc |
| 153 | + oc-otlp -->|gRPC| ja-col |
| 154 | +
|
| 155 | + subgraph pr[Prometheus] |
| 156 | + style pr fill:#e75128,color:black; |
| 157 | + pr-sc[/"Prometheus OTLP書き込みレシーバー"/] |
| 158 | + pr-tsdb[(Prometheus TSDB)] |
| 159 | + pr-http[/"Prometheus HTTP<br/>リッスン先:<br/>localhost:9090"/] |
| 160 | +
|
| 161 | + pr-sc --> pr-tsdb |
| 162 | + pr-tsdb --> pr-http |
| 163 | + end |
| 164 | +
|
| 165 | + pr-b{{"ブラウザ<br/>Prometheus UI"}} |
| 166 | + pr-http ---->|"localhost:9090/graph"| pr-b |
| 167 | +
|
| 168 | + subgraph ja[Jaeger] |
| 169 | + style ja fill:#60d0e4,color:black; |
| 170 | + ja-col[/"Jaegerコレクター<br/>リッスン先:<br/>grpc://jaeger:4317"/] |
| 171 | + ja-db[(Jaeger DB)] |
| 172 | + ja-http[/"Jaeger HTTP<br/>リッスン先:<br/>localhost:16686"/] |
| 173 | +
|
| 174 | + ja-col --> ja-db |
| 175 | + ja-db --> ja-http |
| 176 | + end |
| 177 | +
|
| 178 | + subgraph gr[Grafana] |
| 179 | + style gr fill:#f8b91e,color:black; |
| 180 | + gr-srv["Grafanaサーバー"] |
| 181 | + gr-http[/"Grafana HTTP<br/>リッスン先:<br/>localhost:3000"/] |
| 182 | +
|
| 183 | + gr-srv --> gr-http |
| 184 | + end |
| 185 | +
|
| 186 | + pr-http --> |"localhost:9090/api"| gr-srv |
| 187 | + ja-http --> |"localhost:16686/api"| gr-srv |
| 188 | +
|
| 189 | + ja-b{{"ブラウザ<br/>Jaeger UI"}} |
| 190 | + ja-http ---->|"localhost:16686/search"| ja-b |
| 191 | +
|
| 192 | + gr-b{{"ブラウザ<br/>Grafana UI"}} |
| 193 | + gr-http -->|"localhost:3000/dashboard"| gr-b |
| 194 | + end |
| 195 | +end |
| 196 | +``` |
| 197 | + |
| 198 | +Protocol Bufferの定義は /pb/ ディレクトリにあります。 |
0 commit comments