コラム

ランタイムアーキテクチャ

2023/06/08

1 Mendixランタイムとは何ですか?それは主要なアーキテクチャの原則をどのようにサポートしますか?

Mendixランタイムは、クラウドネイティブアーキテクチャのコンテキスト内でアプリケーションを実行します。このセクションでは、Mendixランタイムのコアコンポーネントとその関連機能について説明します。また、ランタイム実行のいくつかの重要な側面についても詳しく見ていきます。

1.1 モデルの実行を担当するコンポーネントはどれですか?

Mendixランタイムはアプリのモデルを解釈して実行します。ランタイムには、業界をリードするJavaおよびScalaテクノロジーを使用したTwelve-Factor App互換の設計があります。

1.2 Mendixはモデルをどのように実行しますか?

Mendixランタイムはモデルを直接実行します。つまり、モデルは文字通りアプリケーションであり、仲介ではありません。視覚的にモデル化されたデザインが実際にコード(Javaや.NETなど)を生成するアプローチとは対照的に、Mendixモデルの解釈アプローチには、以下に説明する多くの固有の特性と利点があります。

1.2.1 変更管理

アプリケーションの変更に、より簡単に対応できます。さらに、モデルはアプリケーションであるため、Mendixはアプリケーションとモデルの互換性を保護します。

1.2.2 カスタム拡張

生成されたコードへのカスタムコードの挿入とは対照的に、モデルはカスタムコードを認識し、それを整合性チェックに含めるため、カスタムコードによるモデルの拡張はよりエレガントに制御されます。 Mendixのモデル解釈アプローチは、モデルの変更がカスタムコード拡張と競合するというコード生成の基本的なラウンドトラップ問題を解決します。さらに、生成されたコードにカスタムの変更がないことは、モデルに影響を与えずにプラットフォームの技術アーキテクチャを最新化できることを意味します。これは、技術革新の恩恵を受けることがより簡単で安価であることを意味します。

1.2.3 モニタリング

ランタイムでのアプリケーションの動作の監視と分析は、事前に監視パラメータを定義するのではなく、より動的かつ柔軟に設定できます。

1.2.4 デバッグ

開発者は、生成されたコードがビジュアルモデルとどのように関連しているかを理解する必要がないため、問題のデバッグと解決が容易になります。デバッグと問題解決は、生成されたコードではなく、モデルに対して行われます。

1.2.5 Mendixはステートレスアーキテクチャをどのように実装していますか?

スケーラビリティ、パフォーマンス、高可用性を確保するために、Mendixはステートレスランタイムを実装しました。つまり、使用可能なすべてのランタイムインスタンスは、以前の要求または後続の要求に関係なく、ユーザー要求を処理できます。

これを実現するために、ランタイムインスタンスはユーザーリクエストの期間中の状態を持ちます。要求の終了時に、コミットされたすべての状態がデータベースに保存されます。コミットされていないすべての状態は、クライアントが必要とする他のすべてのデータと共にクライアントに返されます。

追加情報については、クラスター化されたMendixランタイムMendix Studio Pro Guideでご確認できます。

1.2.6 Mendixランタイムのコンポーネントは何ですか?

ランタイムは、次の 2 つの主要コンポーネントで構成されています。

  • クライアント – Web クライアントとモバイル クライアント
  • ランタイムサーバー – サーバー側のロジックを処理するスケーラブルなランタイム

2.1 サーバーのアーキテクチャ

Mendixサーバーアーキテクチャは、ロジックの実行、データの管理、クライアントとの通信、セキュリティの実装を行う複数のコンポーネントで構成されています。以下の図は、すべてのコンポーネントの概要を示しており、その後にそれらの役割の簡単な説明が続きます。

Mendixランタイムは、次のコンポーネントで構成されています。

  • プラットフォームコア–アプリケーションの正しい起動とシャットダウン、および必要なライブラリと拡張機能の読み込みを担当します。
  • オブジェクトキャッシュ–オブジェクトの作成と削除を処理します。
    セッションマネージャー–ユーザーセッションの作成とログアウトまたは破棄されたセッションのクリーンアップを管理します。
  • HTTPサーバー– Webおよびモバイルクライアントからの要求を処理し、サービス要求を処理するためにMendixランタイムに含まれています。
  • マイクロフローエンジン–マイクロフローとマイクロフローアクティビティを実行します。
  • データレイヤー–アプリケーションデータベースからオブジェクトを永続化して取得します。 データの永続化に必要なデータベース構造の作成と更新も行います。
    データレイヤーは多数の異なるデータベースをサポートし、データは一般的なデータモデル設計のベストプラクティスを使用して保存されます。
  • 統合レイヤー– Webサービス、REST API、アプリサービス、ODataの着信および発信サービス要求を処理します。
  • クライアントAPI – Webおよびモバイルクライアントとの通信を担当します。 APIは、データの取得、データ変更の永続化、およびマイクロフローロジックの実行に使用されます。
  • 構成API –このJSON APIは、開発者ポータルとコンテナービルドパックがランタイムを構成するために使用します。
  • 監視API –このJSON APIは、開発者ポータルとコンテナビルドパックが監視指標を取得するために使用します。
  • カスタムAPI –このJava APIは、Mendixランタイムを拡張するために使用されます(たとえば、microflowアクティビティまたはエンティティリスナーを使用して)。

2.2 クライアントのアーキテクチャ

Mendixクライアントはユーザーインタラクションを担当し、UIウィジェットレイヤー、オフラインロジックを実行するロジックレイヤー、オフラインストレージ用のデータレイヤーで構成されます。この図は概要を示しています。

Mendixクライアントは、次のコンポーネントで構成されています。

  • 通信レイヤー–セキュアなJSON over HTTPプロトコルを使用しながら、Mendixランタイムサーバーとメタデータ、セッション管理、データを交換します。
  • データ層–フロントエンドで使用されるデータを管理します。 React Fluxパターンに基づいて、状態を処理し、変更をUIコンポーネントにプッシュします。
  • ロジックレイヤー– Mendixナノフローを使用して、データ検証とより複雑なロジックを処理します。
  • UIコンポーネント層–ウィジェットのライフサイクルとウィジェット間の通信を管理し、すぐに使えるウィジェットを提供します
2.2.1 モバイルクライアント

モバイルアプリケーションは同じHTML5、CSS、およびReactベースのクライアントアーキテクチャを使用しますが、Apache Cordovaを使用してデプロイされます。このフレームワークにより、最先端のWebテクノロジーを使用して構築されたモバイルアプリは、優れたモバイルユーザーエクスペリエンスを提供できます。

  • アクセシビリティ–アプリは、標準のデバイスアプリストアで見つけて、モバイルデバイスにインストールし、アイコンから開くことができます。
  • オフラインでの利用–アプリはモバイルデバイスにインストールされているため(必要なすべてのリソースと潜在的にキャッシュされたデータを含む)、エンドユーザーはMendixアプリをオフラインで使用でき、関連するアプリデータはデバイスのSQLiteデータベースにキャッシュされます。
  • ネイティブ機能のサポート– Apache Cordovaを使用すると、JavaScriptアプリケーションでネイティブデバイス機能を使用できるようになり、カメラやマイクなど、モバイルデバイスで利用可能なすべてのセンサーを活用できるようになります。
2.2.2 Webクライアント

Webクライアントは単一ページアーキテクチャを使用して設計されています。単一のJavaScript Webページがブラウザに読み込まれ、ページが更新され、ユーザーのアクションに応じてMendixランタイムと対話します。これには、Webページの一部の取得や、データの取得と保存が含まれる場合があります。

クライアントは主にHTML5、SassとBootstrapを使用したCSS、およびReactフレームワークを使用して実装されます。

翻訳:https://www.mendix.com/evaluation-guide/enterprise-capabilities/runtime-architecture

閉じる
たった30秒でMendixの全体像が丸わかり!