OutSystems Platform Serverのアーキテクチャ

OutSystems Platform ServerはOutSystems Platformの主要部分であり、組織の標準のウェブアプリケーションサーバスタックを一連のサービスで補完するサーバーコンポーネントです。


OutSystems Platformは、専有技術によるランタイムエンジンは使用しません。すべてのアプリケーションは、標準の.NETおよびJavaを利用します。

OutSystems Platform Serverはそれを可能にするサーバであり、アプリケーションの生成、最適化、コンパイル、および標準ウェブアプリケーションサーバへのデプロイに必要な処理を行います。
また、その中には、次の様な一連の特殊サービスがあります。

  • コードジェネレーター
    IDEでモデル作成されたアプリケーションから、ネイティブの.NETまたはJavaを生成します。
    これにより、パフォーマンスが最適化され、標準テクノロジー上で実行可能で堅牢なアプリケーションを生成することができます。
  • デプロイサービス
    このサービスは、生成された.NETまたはJavaアプリケーションを標準ウェブアプリケーションサーバ上にデプロイします。
    これにより、アプリケーションは一貫してサーバーファームの各フロントエンドサーバーにインストールされます。
  • アプリケーションサービス
    このサービスは、スケジュール設定されたバッチジョブの実行を管理し、エラー、監査、およびパフォーマンス指標などのイベントを保存するために非同期のログサービスを提供します。

コードジェネレーター

このコンパイラは、IDEで作成されたアプリケーションモデルから、アプリケーションサーバへのデプロイ準備が完了した状態のネイティブの.NETまたはJavaアプリケーションを生成します。

コードジェネレータは、アプリケーションモデルを取得後、次の処理を行います。

  • アプリケーションモデルに対して大規模なグラフ解析を実行します。
    このグラフは、外部の依存関係をチェックし、アプリケーションを最適化するために使われます。
  • コードの生成時に実行可能な最適化のためのチェックを行います。
    例えば、アプリケーション中にデータベースからデータを取り出すクエリがあるにもかかわらず、そのクエリの結果がアプリケーションの中で決して使われないという場合、オプティマイザはそのクエリが削除されるようにフラグを設定します。
  • 外部サービスに対して行った変更からアプリケーションを切り離すために、連携プロキシを生成します。
  • アプリケーションスタックのすべてのレイヤーに対するネイティブコードを生成します(SQL、C#、Java、HTML5、CSS、およびJavaScript)。
  • アプリケーションにセッション管理、認証、および構成の機能をバンドルします。
  • ログおよびモニタリングの機能をアプリケーションに追加します。
    これにより、開発者は、エラー、監査、およびパフォーマンス指標の実行時チェックを行うことができます。
  • データベースモデルをアップグレードし、アプリケーションをデプロイするためのビルド用スクリプトを生成します。

デプロイサービス

デプロイサービスは、生成された.NETまたはJavaアプリケーションをアプリケーションサーバ上にデプロイします。
これにより、アプリケーションは一貫して組織のサーバファームの各フロントエンドサーバにインストールされます。

デプロイコンポーネントには2つの種類があります。
デプロイサービスは、.NETまたはJavaアプリケーションを特定のフロントエンドサーバにデプロイします。
デプロイコントローラーは、すべてのフロントエンドサーバに対するデプロイ処理を、以下のようにして連携させます。

  • デプロイコントローラーは、コードジェネレーターを使ってアプリケーションモデルを.NETまたはJavaにコンパイルします。
  • アプリケーションがコンパイルされると、デプロイコントローラーはコードを各フロントエンドサーバ上のデプロイサービスに送信します。次に、デプロイコントローラーは、アプリケーションが正しくインストールされるようにデプロイを監視します。
  • すべてのデプロイが成功した場合、デプロイコントローラーは、作成したデータモデルに合うようにランタイムデータベースを更新します。成功しなかった場合、デプロイはキャンセルされ、変更前の古いバージョンのアプリケーションが実行を続けます。

アプリケーションサービス

OutSystems Platform Serverには、実行時にアプリケーションを管理するためのサービスも備わっています。このサービスには、次の2種類があります。

  • スケジューラーサービス
    このサービスは、スケジュール設定されたタスクの実行を管理します。
  • ログサービス
    このサービスは、アプリケーションのエラー、監査、およびパフォーマンス関連のイベントを管理します。

スケジューラーサービス

OutSystems Platform Serverは、アプリケーションの中でスケジュール設定されたバッチジョブを実行する機能をサポートしています。実行時には、保留されている次のジョブをスケジューラーサービスがメタデータ・データベースから見つけ出し、それを実行します。

バッチのタスクは、水平スケーラビリティが実現されるように設計されており、そのためすべてのフロントエンドサーバにより分散されます。

ログサービス

アプリケーションは、エラーログ、監査ログ、およびパフォーマンスログが作成されるように自動的に設定されています。実行時には、これらの数値が非同期に取得されるので、常に一連の数値を収集しながらも、アプリケーションのパフォーマンスを損なうことはありません。

ログサービスは低い優先度で実行されるため、アプリケーションの通常の処理と競合することはありません。実行時に、アプリケーションがエラー、監査、あるいはパフォーマンスに関連するイベントを生成した場合は、次のように処理されます。

  • イベントは、フロントエンドサーバ上の標準メッセージキューに書き込まれます。
  • フロントエンドサーバ上で実行されているログサービスは、非同期にメッセージキューからイベントを読み出し、ログデータベースに追加します。
  • 続いて、イベントは監視コンソールにおいてエラー、監査、またはパフォーマンスに関するデータの表示に利用されます。既存のAPIを使ってイベントを外部システムに送信することもできます。