intdashサーバー全体像
intdashサーバーは、以下のコンポーネントにより構成されています(ロードバランサーを除く)。
各コンポーネントの役割は以下の通りです。
-
nginx
- クライアント(エッジ)からのHTTPリクエスト、およびintdashサーバー内の他のコンポーネントからのHTTPリクエストを処理します。
- ウェブブラウザーから未認証の状態でアクセスがあった場合は、認証のためにログインページへの遷移を行います。
-
intdash-api
- intdashサーバーのコアであるWeb APIサーバーです。時系列データやエッジの情報(リソース)を提供します。
- intdash-apiが提供する情報の一部は、実際には別コンポーネント(micro-auth、micro-measurement、micro-config、micro-broker)が処理しています。
-
micro-auth
- エッジに関する情報およびその認証認可を担当するサービスです。
-
micro-measurement
- 計測(時系列データ)に関する情報を担当するサービスです。
-
micro-config
- 主にモバイルアプリケーション用の設定情報を担当するサービスです。
-
micro-broker
- 計測データのリアルタイム処理を担うマイクロサービスです。
-
micro-media
- H.264動画をウェブブラウザ―用に変換して配信するサービスです。
-
NATS(intdash-apiをスケールアウトさせた場合のみ)
- intdash-apiを複数のインスタンスに分散させた場合、それらの間のリアルタイムデータの受け渡しに使われるPub/Subサービスです。
-
InfluxDB
- 時系列データを保持するデータベースです。
-
PostgreSQL
- 時系列データ以外のデータを保持するデータベースです。
-
Redis(InfluxDBをスケールアウトさせた場合のみ)
- InfluxDBをスケールアウトさせシャーディングを行う場合に、シャーディングに必要なメタデータを保持します。
-
S3 bucket
- micro-mediaによりウェブブラウザ―用に変換された動画データを格納する、Amazon S3バケットです。
-
Web App (SPA)
- ウェブアプリケーションの静的ファイルを配信します。
-
Web App (SSR+SPA)
- ウェブアプリケーションのサーバーサイドレンダリングを担当します。
各アプリケーションが使用するポート番号
intdashサーバーを構成する各アプリケーションが使用するポート番号は以下の通りです。
上の図におけるコンポーネント名 | アプリケーション名 | ポート番号(デフォルト) |
---|---|---|
nginx | nginx | 80, 443 |
PostgreSQL | postgresql | 5432 |
InfluxDB | influxdb | 8086 |
Redis | redis-server | 6379 |
intdash-api | intdashd | 8097, 8179 |
intdash-api | traefik | 8080, 18080 |
micro-auth | authd | 8094 |
micro-measurement | measurementd | 8095 |
micro-config | configd | 8096 |
micro-broker | brokerd | 8180, 8178 |
micro-media | mediad | 8085 |
NATS | gnatsd | 4222 |
Web App | web-oauth2 | 13003 |
Web App | web-me | 13000 |
Web App | web-edges | 13001 |
Web App | web-measurements | 13004 |
Web App | web-admin | 13006 |
Web App | web-media | 13007 |
Web App | web-project | 13008 |