2. システム構成

2.1. 標準構成

モバイルバックエンド基盤のシステム全体の構成は以下のようになります。 本構成は論理構成であり、1つのサーバに複数のサーバを搭載しても構いません。

_images/system.png

赤色になっているサーバが、モバイルバックエンド基盤で提供するサーバになります。

2.1.1. ロードバランサ

クライアントからのリクエストはロードバランサで受け付け、後段のサーバに分散します。 なお、HTTPS(TLS) の終端はロードバランサで行うことを推奨します。

2.1.2. API サーバ / デベロッパーコンソールサーバ

モバイルバックエンド基盤の中心となるサーバです。

API サーバは REST API リクエストを受付け、応答するサーバです。 デベロッパーコンソールサーバは、管理用の機能/UIを提供するサーバです。

本文書は、この API サーバ / デベロッパーサーバの利用手順について述べます。

2.1.3. MongoDB

モバイルバックエンド基盤では、データベースに MongoDB を使用します。

各種データや管理情報はほぼすべて MongoDB に保存されます。

2.1.4. SSE Push サーバ

SSE Push 機能を提供するサーバです。 SSE Push サーバの利用手順については、SSE Push サーバ利用手順書 を参照してください。

2.1.5. Cloud Functions サーバ

Cloud Functions 機能を提供するサーバです。

Cloud Functions サーバの利用手順については、Cloud Functions サーバ利用手順書 を参照してください。

2.1.6. RabbitMQ Server

RabbitMQ Server は、API サーバ - SSE Push サーバ、および API サーバ - Cloud Functions サーバ間の通信を行うためのサーバです。

2.1.7. fluentd server

各サーバが出力するログは fluentd で収集し、MongoDB に格納します。 (fluentd を使用せず、各サーバ上にファイルで格納するようにすることも可能です)

2.2. 最小構成

上記のうち、モバイルバックエンド基盤で利用が必須となるのは API サーバ / デベロッパーコンソールサーバ / MongoDB の3つです。

  • SSE Push を使用しない場合は、SSE Push サーバは省略可能です。
  • Cloud Functions を使用しない場合は、Cloud Functions サーバは省略可能です。
  • SSE Push / Cloud Functions いずれも使用しない場合は、RabbitMQ Server は省略可能です。
  • ロギングを MongoDB に行わない場合は、fluentd サーバは省略可能です。

2.3. 起動・終了順序

サーバの起動順序には以下の依存関係があります。

対象サーバ 依存するサーバ
fluentd サーバ MongoDB サーバ
Cloud Functions サーバマネージャ RabbitMQ サーバ
SSE Push サーバ RabbitMQ サーバ
API/デベロッパーコンソールサーバ MongoDB サーバ

注意

依存するサーバが起動していない状態では、当該サーバの起動(再起動を含む)は失敗しますので、注意してください。 なお、依存するサーバを再起動させることは問題ありません。

推奨するサーバの起動順序は以下のとおりです(停止は逆順)。

  • MongoDB ⇒ fluentd, RabbitMQ ⇒ Cloud Functions, API/デベロッパーコンソールサーバ, SSE Push サーバ