本記事では、現在当社で推し進めている全画面FlashのWEB型業務アプリケーションをWEB上で開発し,後の保守・運用もフォローするサーバソフト「Lasyst」ラシストで採用している技術について説明していきます。 まず、Lasystの概要・特徴について、当社のWEBサイトにて掲載しておりますので、ご一読いただければ幸いです。
前回である第一回は、Lasystで利用している技術、ミドルウェアなどを紹介させていただきました。
二回目の今回は、内部の構造を少し掘り下げて紹介したいと思います。
1.アプリケーションと環境の構造
以下の図は、Lasystで開発したアプリケーションや環境の位置づけと、アクセス経路を表現しています。
Lasystをインストールしたサーバを「Lasystサーバ」としています。
Lasystでは、異なるアプリケーションをいくつも構築することができ、図では仮に「アプリケーション1」「アプリケーション2」と表現しています。
アプリケーションごとにデータベースが生成されるようになっています。
(SQLでいうところの、create databese 文の発行です)
また、1つのアプリケーション内で、複数の環境を定義できるようになっています。
Lasystでは、この「環境」が、開発・利用するアプリケーションの最小単位であり、環境ごとにURL(コンテキストルート)が割り当てられ、アクセスできるようになっています。
例えば、1つのアプリケーションを、開発環境・疑似本番環境・本番環境といった3つの環境にわけて運用したい場合があります。
一般的な業務アプリケーションの開発から本番化までの間、最初に開発環境で作って単体~結合試験を行い、それらが完了したら疑似本番環境に移して総合試験を行い、最後に本番環境に移す、といった流れになることが多いと思います。
Lasystでは、それをすべてコンソール上で容易に実現できるようにしてます。
(環境のエクスポート・インポート機能)
また、1環境ごとにデータベースのスキーマが2つ生成されるようになっています。
この2つとは、ここでは詳しく触れませんが、アプリケーションの構成情報を格納しておく構成用スキーマと、実際に業務アプリケーションを通じて業務データを保存するデータ用スキーマになっています。
データベースとスキーマは図のように分離されるため、DBMSによる管理スコープがアプリケーションごと・環境ごとに明確になると同時に、各インスタンスが独立状態になり、セキュリティが確保される仕組みになっています。
環境も、いくつでも作成可能です。
業務アプリケーションを開発する場合は、WEBブラウザよりコンソール経由で各環境へアクセスし、作業を行います。
試験を行う場合、そして開発したアプリケーションを実際に利用する場合は、直接そのURLへWEBブラウザでアクセスして作業を行います。
2.アプリケーション利用時の処理の流れ
以下の図は、Lasystで開発したアプリケーションにアクセスするフローを表現しています。
Lasystサーバのアプリケーション1にある環境AをWEB上へ公開し、利用者が環境Aのアプリケーションにアクセスして利用するシナリオです。
まずは、図の中の単語だけ説明致します。
(1) 構成用スキーマ
構成用スキーマには、Lasystコンソールを使って環境Aを開発する際に定義する、アプリケーションの設定情報が格納されています。
項目の属性情報(型、桁数など)や、テーブル構成、実行する処理の動作、SQL文、セキュリティ設定など、Lasystフレームワークを操作するためのパラメータのことです。
※Lasystの開発は、処理のためのソースを自動生成するのが主ではなく、Lasyst用の部品を組み合わせ、パラメータを与えて開発していきます。
(2) データ用スキーマ
データ用スキーマには、環境Aへ利用者としてアクセスする際に、データを保存するためのスキーマになります。
環境Aを開発する際に、Lasystコンソールで表(テーブル)として構築しておきます。
(3) 制御Java
サーバー側のLasystフレームワークで、サーバー側で必要なすべての処理をつかさどっています。
Javaでプログラムされています。
セッションやセキュリティの管理も行っています。
サーバー側では、この制御Java以外のプログラムは存在しません。
(4) 制御AS
クライアント側のLasystフレームワークで、クライアント側で必要なすべての共通処理をつかさどっています。
Lasystのコンソール(開発画面)で作った画面モジュールと一緒に、WEBサーバ上に配備されています。
Action Script でプログラムされています。
それではフローについて説明します。
(5) WEBアプリケーションの公開時
Lasystで作ったアプリケーションは、WEBに公開しないとアクセスできません。
WEBへの公開・非公開は、Lasystの管理者などが、コンソール上で行います。
まず公開すると、アプリケーション構成用の全情報がメモリ(Javaアプリケーションサーバーのヒープ領域)へ展開されます。
これは、後で制御Javaを通じて処理を行わせる際に参照されます。
同時に、構成用のテーブル構成を参照し、データ用スキーマのテーブルを実体化させます。
既存の項目の桁数を変更した場合も、きちんと反映されます。
※桁数を減らした場合は、その減った分だけデータが削られてしまうため、注意する必要があります。
そして、個別の画面モジュールも、外部からアクセスされるディレクトリにコピーされ、公開が完了となります。
ちなみに、非公開にした場合は、画面モジュールが外部からアクセスされるディレクトリから削除され、ヒープ領域の情報もクリアされます。
(6) WEBアプリケーションへのアクセス時
最終利用者がWEBアプリケーションへアクセスするときのフローです。
まず、最終利用者は、環境ごとに割り当てられた、環境構築時に設定したドキュメントルートのURLへ、ブラウザ経由でアクセスします。
すると、制御AS経由でサーバ上の制御Javaに対し、実行すべき処理のチェックにいきます。
どのような処理を実行すればよいか、そしてどのように処理を行うかを、ヒープ領域に展開された情報を参照して判断します。
それがデータベースへアクセスするような処理であれば、やはり制御Java経由で、データ用スキーマにアクセスし、SQLを発行して、データの追加・変更・削除・検索などを行います。
制御Javaをもってサーバで実行された結果は、クライアントの制御ASへ返されます。
画面の遷移(画面モジュールへのURL)が返された場合は、制御ASがそのURLへアクセスします。
サーバから取得した処理を、画面に反映させ、一連のフローが完了します。
3.総括
Lasyst内部の処理フローは以上になります。
プログラムレベルではさらに複雑なことになっていますが、そこまで知らなくてもLasystでWEBアプリケーションを作れます。
株式会社ジェイエスピーシステム部酒井良介
monipet
動物病院の犬猫の見守りをサポート
病院を離れる夜間でも安心
ASSE/CORPA
センサー、IoT、ビッグデータを活用して新たな価値を創造
「できたらいいな」を「できる」に
OSGi対応 ECHONET Lite ミドルウェア
短納期HEMS開発をサポート!
GuruPlug
カードサイズ スマートサーバ
株式会社ジェイエスピー
横浜に拠点を置くソフトウェア開発・システム開発・
製品開発(monipet)、それに農業も手がけるIT企業