SMF のアーキテクチャ

サーバアーキテクチャ

SMFのサーバシステムは機能毎にいくつかのサーバとして分かれて動作します。 以下にそれらの関連図を示します。

../_images/server_arch.png

SMFでの動作に最低限必要となるサーバはARMS Proxyサーバ、RSとデータベースサーバです。

各サーバの概要

システムを構成する各サーバの簡単な概要を説明します。 さらに具体的な構成などは各々の章をご覧ください。

RS (Resource Server)

ARMS Proxyサーバ、Heartbeatサーバ、データベースサーバと通信を行うことによってサービスアダプタの状態やシステムの状態を一元管理するサーバです。 このSDKを用いて作成されたユーザインターフェイスもこのサーバで提供されます。

データベースサーバ

RSが扱うデータモデルをリレーショナルデータベースに保存し、管理するサーバです。

ARMS Proxyサーバ

各サービスアダプタの認証や通信内容の暗号化・復号化を行いサービスアダプタとサーバ間で安全に通信を行うためのサーバです。 RSとサービスアダプタ間の通信の中継を行います。 他にもARMSプロトコルとRSとの通信で利用する内部プロトコルを相互変換するプロトコルアダプタとしての役割や サービスアダプタへの操作を定期的に実行し結果を保持する役割も持ちます。

Heartbeatサーバ

サービスアダプタとサーバシステムとの接続性を監視するサーバです。 最新の監視状態を保持し、その監視状態が変化したときにRSへ通知します。 サービスアダプタのリソース使用量をグラフ化する機能もあります。

サーバ間インターフェイス (SDK内部インターフェイス)

SDKに含まれるサーバ間の通信インターフェイスを解説します。 これらの通信は暗号化や認証が行われなく、頻繁に情報のやり取りが起こります。 そのため同じ閉じたネットワークセグメント上などの安定性・信頼性があるところで運用されることを前提としています。

RS-ARMS Proxyインターフェイス
HTTPを使ったXML-RPCでARMSプロトコルの処理に必要な情報を双方向でやり取りを行います。 サービスアダプタからのシステムへのアクセスがあった場合やRSがサービスアダプタにアクセスする場合にそれぞれARMS Proxyサーバ、RSからの接続が起こります。 またそれとは別にARMS Proxyから定期的にRSへの接続が起こります。これについては後述します。 仕様の詳細は公開されていません。
RS-データベースインターフェイス
リレーショナルデータベースが標準で提供するプロトコルを用いてRSとデータベース間で情報をやり取りします。 RSが他のコンポーネントに提供するインターフェイスが利用された場合にRSからデータベースに対して接続します。
RS-Heartbeatインターフェイス
監視対象や監視状態の変化に関する情報をやり取りするためにHeartbeatサーバから定期的に接続が起こります。 HTTPによるXML-RPCを利用しています。 仕様の詳細については別紙を参照してください。

外部インターフェイス (SDK提供インターフェイス)

ARMSプロトコルエンドポイント(SA-ARMS Proxy)
ARMSプロトコルのサーバ側エンドポイントをARMS Proxyが提供します。 現在のところ XML+HTTPS型の実装のみサポートをしています。 ARMSプロトコルの詳細は別紙を参照してください。
Generic RS-API (RS)
Javaのライブラリとしてシステム/サービスアダプタ管理UIや業務系システムとの連携部分を構築するためのAPIを提供します。 RSの一部としての動作となります。
XML-RPC RS-API (RS)
独自の監視サーバとRSを連携させるためのJavaのクラスによるXML-RPCハンドラを提供します。 前述のRS - ARMS Proxyサーバ、RS - Heartbeatサーバ間インターフェイスもこの部分に含まれます。 RSの中心部分としての動作となります
Heartbeatグラフインターフェイス (Heartbeat)
Heartbeatサーバによって収集されたサービスアダプタの動作統計をCGIによるグラフとして提供します。 Heartbeatサーバの一部としての提供されます。 CGIのアクセスにはハッシュコードを含んだURLが必要です。
Heartbeatパケット受信インターフェイス (SA-Heartbeat)
Heartbeatパケットをサービスアダプタから受け取るためのインターフェイスを提供します。 このインターフェイスで受けた情報を元にグラフの描画に必要な情報の保持や定期的にRSへの監視通知を行います。