Skip to main content

アーキテクチャ

OutSystems

OutSystemsのアーキテクチャ

アプリケーションのエンドユーザー、アプリケーションを作成する開発者、またはアプリケーションを管理する運用チームには見えないものの、OutSystemsの基礎となるアーキテクチャは、多くのメリットをもたらします。

OutSystemsのアーキテクチャは、アプリケーションのパフォーマンスやセキュリティの最大化、継続的なデリバリープロセスのオープン化、また、当社の継続的なイノベーションの促進といった観点から、完全な透明性を提供します。さらに、標準アーキテクチャを採用することで、専有ソリューションによるロックインを回避しています。

Platform Server

OutSystems Platform ServerはOutSystemsの中核をなすものです。Platform Serverは、一連のサービスによって標準のWebアプリケーションサーバースタックを補完するサーバーコンポーネントです。

OutSystemsでは、専有的なランタイムエンジンを使用しません。すべてのアプリケーションは、標準アーキテクチャやフレームワークに依存しています。 

OutSystems Platform Serverにより、これが可能になります。アプリケーションを標準のWebアプリケーションサーバーに生成、最適化、コンパイル、デプロイするために必要なすべての手順を処理し、特殊なサービスを内部に備えています。

  • コードジェネレータ: モデル化されたアプリケーションをビジュアルエディタに取り込み、パフォーマンスのために保護および最適化され、標準テクノロジーによって稼働する標準アプリケーションを生成、コンパイル、アセンブルします。

  • デプロイサービス: 作成したアプリケーションを標準のWebアプリケーションサーバーにデプロイし、アプリケーションが整合性を持ってサーバーファーム/クラウドインフラの各フロントエンドにインストールされるようにします。

  • アプリケーションサービス: スケジュール設定されたバッチジョブの実行を管理し、エラー、監査、パフォーマンスメトリックなどのイベントを保存する非同期ロギングサービスを提供します。

コードジェネレータ

このコンパイラは、ビジュアルエディタで開発されたアプリケーションモデルを取り込み、すべてのネイティブアプリケーションコンポーネントを生成し、アプリケーションサーバーにすぐにデプロイできるようにします。

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

  • アプリケーションモデルの詳細なグラフ分析を実行。このグラフは、外部の依存関係をチェックし、アプリケーションを最適化するために使用されます。

  • コードを生成するときに実行できる最適化をチェック。たとえば、アプリケーション内にデータベースからデータを取得するクエリがある場合でも、そのクエリの結果がアプリケーションで使用されない場合、オプティマイザはそのクエリを削除するようにフラグを立てます。

  • 外部サービスに加えた変更からアプリケーションを分離するために連携プロキシを生成。

  • アプリケーションスタックのすべてのレイヤーに対してネイティブコードを生成(データベースを操作するSQL、バックエンドのビジネスロジックサービス、フロントエンドのJavaScriptコンポーネント)。

  • アプリケーションにセッション管理、認証、構成をバンドル。

  • アプリケーションにロギングおよび監視機能を追加。これにより、開発者は実行時にエラーや監査、パフォーマンスメトリックをチェックできます。

  • ビルド用スクリプトを生成し、データベースモデルをアップグレードしてアプリケーションをデプロイ。

デプロイサービス

デプロイサービスは、作成したアプリケーションコンポーネントをアプリケーションサーバーにデプロイし、アプリケーションが整合性を持ってサーバーファームの各フロントエンドサーバーにインストールされるようにします。

デプロイコンポーネントには2つの種類があります。デプロイサービスは、特定のフロントエンドに.NETアプリケーションをデプロイします。デプロイコントローラは、以下のようにすべてのフロントエンドサーバー間のデプロイを調整します。

  • デプロイコントローラは、OutSystemsコードジェネレータを使用してアプリケーションモデルをコンパイルします。

  • アプリケーションをコンパイルすると、各フロントエンドサーバー上のデプロイサービスにコードが送信されます。次に、デプロイコントローラはデプロイを監視し、アプリケーションが正常にインストールされるようにします。

  • すべてのデプロイが完了すると、デプロイコントローラは、作成したデータモデルと一致するようにランタイムデータベースを更新します。完了しなかった場合、デプロイはキャンセルされ、アプリケーションの古いバージョンが変更されることなく引き続き実行されます。

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

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

  • スケジューラサービス: このサービスは、スケジュール設定されたタスクの実行を管理します。

  • ログサービス: このサービスは、アプリケーションのエラー、監査、およびパフォーマンスイベントを管理します。

スケジューラサービス

OutSystems Platform Serverは、アプリケーションでスケジュール設定されたバッチジョブの実行をサポートします。実行時に、スケジューリングサービスは、メタデータデータベースから次の保留中のジョブを取得し、実行します。

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

ログサービス

アプリケーションは、エラー、監査、およびパフォーマンスログを作成するよう自動的に構成されます。実行時にこれらのメトリックは非同期で取得されるため、メトリックが絶えず作成されている間も、アプリケーションのパフォーマンスが損なわれません。

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

  • イベントがフロントエンドサーバーの標準メッセージキューに書き込まれます。

  • フロントエンドサーバーで実行されているログサービスは、メッセージキューからイベントを非同期で取得し、ログデータベースに追加します。

  • イベントは、監視コンソールによって、エラー、監査、またはパフォーマンスのデータを表示する際に活用できます。また、利用可能なAPIを使用して外部システムに送信することもできます。