RAD Studio 11 Alexandriaリリースの一環として、大量のRESTリクエストを必要としないシナリオ向けにデプロイメントを簡素化することを目的として、RAD Serverの配置およびライセンス提供するための新しいオプションを発表しました。
Table of Contents
RAD Serverとは?
具体的な内容に入る前に、「RAD Server」について簡単におさらいをしてみましょう。RAD Serverは、FireDAC(または他のデータアクセスレイヤ)をデータアクセス基盤としたDelphiやC++Builderによってコーディングが可能で、主にJSONを提供するREST エンドポイントを迅速に開発できるRESTサーバーエンジンです。つまり、アドオンパッケージ(BPL)を作成して、それを追加のURLエンドポイントとして登録することで、中間サーバーを実装することができます。さらにRAD Serverには、すぐに使用できる多数のサービスが用意されています。詳細は https://www.embarcadero.com/jp/products/rad-server をご覧ください。
RAD Server Liteを選ぶ理由は?
RAD Serverには、InterBaseをベースとしたバックエンドデータベースを必要とし、通常、IIS または Apache の Web サーバー DLL モジュールとして配置されます。このため、標準的な配置には以下が必要です。
- WebサーバーとそのRAD Serverモジュールの構成
- RAD Server の配置と設定
- 特別な目的のRAD Serverライセンス(ユーザーがアクティブ化するためにターゲットデバイスに登録する必要があるライセンス)を使用したInterBaseのインストール
RAD Serverの開発環境向けには、以前からIndy HTTPServerをベースにしたRAD Serverのスタンドアロン版を提供してきました。このスタンドアロン版は、パフォーマンスは制限されますが、デプロイメントが非常に簡単で、デバッガで実行できます(つまり、RAD Serverモジュールのコードをデバッグが可能)。開発版は、あくまでテスト目的で利用されるため、ライセンスは必要としません。作成可能なユーザー数に制限がありますが、ローカルの InterBase Developer Editionで動作します(このライセンスは RAD Studio ライセンスの一部です)。
RAD Server Lite(通称:RSLite)は、テストサーバーや多くのスループットを必要としないシナリオ向けに、よりシンプルな導入モデルを提供します。これは、本格的なサーバーの代わりに InterBaseの組み込みデータベースエンジンである「 IBToGo」 を使用し、シンプルなライセンスモデルと組み合わせることで実現しています。RSLiteは、RAD Studioに付属しているRAD Serverの開発版と同じバイナリに加え、IBToGoのバイナリ、およびソリューションと一緒に配置できるライセンスslipファイルを使用します(配置先のコンピュータで登録する必要はありません)。
ただしRSLiteは、RAD Serverフルバージョン(製品版)と比べて制限があります。
組み込みのデータベース(IBToGo)を使用しており、またIndy HTTP Serverコンポーネントを使用しているため、通常の本格的なRAD Serverの構成と比べて、1秒あたりのリクエストの処理数が劣っており、複数のRAD Serverフロントエンドで拡張することもできません。ハードコードされた制限は加えていませんが、RSLiteで使用される基盤となるアーキテクチャのスケーラビリティは制限されていますが、多くのシンプルな展開シナリオには十分であると期待しています。
スループットは、RAD Server モジュールが実行する特定のコードにも依存することに留意してください。公共のシステムに展開する場合は、RSLite HTTP サーバを直接公開しないことをお勧めしますが、プロキシ設定を介してアクセスできるようにすることで、(Apache や IIS などの)Webサーバが受信するHTTPSコールのセキュリティコンテキストを提供し、それらを RSLite に転送することができます。
ライセンスの取得について
それでは、RSLiteの実用面について説明します。RAD Studio 11 (Delphi 11 および C++Builder 11 を含む) の Enterprise または Architect ライセンスでご利用いただけます。以下のページにアクセスし、ライセンスを取得してください。
https://reg.embarcadero.com/srs6/promotion.jsp?promoId=572
上記のURLにアクセスし、表示されている指示に従ってください。登録キーとEDNアカウントが必要です。ここでの手順は、単にRSLiteのライセンスキーの取得だけではなく、インストールと一緒に配置できるslipファイル(.TXTファイルに格納されたライセンス)を取得できます。このライセンスには、インストール数の制限はありません(ただし、同じマシンで2つのインスタンスを実行することはできません)。このライセンスファイルは、特定のサブフォルダに置く必要があることに注意してください。
RAD Server Lite プロジェクトのデプロイメント
ライセンスを取得した後、RSLiteをどのように配置するのでしょうか? RAD Serverフルバージョン(製品版)とは異なる2つの検討事項があります。
- まず、RSLite、必要なランタイムパッケージ、IBToGoの配置を含むデプロイメント構成を作成する必要があります。(手順は、次の節を参照)
- 次に、IBToGo ライセンスと互換性のある本番環境用の適切なデータベース ファイルを生成する必要があります。RADServer 開発版で作成されたローカルデータベースとは互換性がありません。
デプロイに必要なファイル
以下は、実際にアプリケーションパッケージ(依存したパッケージも含む)に加えて、RSLiteを配置するために必要なファイルです。
(1) RSLite の実行ファイル: RAD Studioの$(BDS)¥binフォルダ内に配置されている開発版の EMSDevServer.exeが使用可能( 64 ビット版も同様)
(2) 必要なRAD Studioランタイムパッケージ: 以下のリストは、最小限のインストールに必要なファイルとRAD Server モジュールで必要なランタイム パッケージを含みます。(これらのファイル群は、$(BDS)¥redist¥win32または$(BDS)¥redist¥win64フォルダにそれぞれ配置されています)
- bindengine280.bpl
- dbrtl280.bpl
- emsclientfiredac280.bpl
- emsserverapi280.bpl
- FireDAC280.bpl
- FireDACCommon280.bpl
- FireDACCommonDriver280.bpl
- FireDACIBDriver280.bpl
- rtl280.bpl
- vcl280.bpl
- vcldb280.bpl
- vclFireDAC280.bpl
- vclimg280.bpl
- vclwinx280.bpl
- vclx280.bpl
- Xmlrtl280.bpl
(3) InterBase ToGoの配置ファイル: InterBase ToGoを配置するためには必要なファイルは、以下のフォルダに配置されています。
Win32向け
[crayon-674026f3d14fc336616394/]Win64向け
[crayon-674026f3d1502217529368/]さらにLinux向けとして
[crayon-674026f3d1503590538933/]上記フォルダ内にlibibtogo.soファイルが配置されています。
(4) 上記で取得したRSLiteのライセンスファイルをinterbase/licenseフォルダ(IBToGo redist設定の一部)に追加します
例えば、Win32向けの場合は、
[crayon-674026f3d1504152256449/]MSVCランタイム
ターゲットとなるWindowsマシンでIBToGo(およびIBToGoを使用したRSLite)を実行するには、Visual C++ 2013ランタイムライブラリがインストールされている必要があることに注意してください。RAD Studio がインストールされている開発者用マシンでは、ほとんどの場合、すでにインストールされています。しかし、一般的なターゲットデプロイメントマシンでは、Visual C++ 2013ランタイムライブラリがインストールされていない可能性があるため、マイクロソフトのWebサイトからVisual Studio 2013 のVisual C++ 再頒布可能パッケージをダウンロードし、インストールする必要があるかもしれません。
本番用データベースの構築
EMSDevServer.exeアプリケーションを実行することでRSLiteを起動することができます。InterBaseクライアントがRAD Studioに付属するDeveloper Editionの場合は、標準的なRAD Server Developerの構成ですべてが動作しますが、ターゲットマシンにInterBaseクライアントが既にインストールされている場合は、それが優先されます。
RAD Server の起動時に、「RSLite」構成であるかどうかがログに記録されるため、簡単に確認することができます。表示されるログの最初の数行は次の通りです。
{“Thread”:19124,”ConfigLoaded”:{“Filename”:”[folder]emsserver.ini”,”Exists”:true}}
{“Thread”:19124,”Licensing”:{“Lite”:true,”Licensed”:true,”LicensedMaxUsers”:2}}
{“Thread”:19124,”DBConnection”:{“InstanceName”:””,”Filename”:”[folder]emsserver.ib”}}
もし上記のログで“Lite”:falseに設定されている場合、gds32.dll(またはその64ビット版)の InterBase クライアントライブラリの読み込みを手動で無効にする必要があります。通常、これらのクライアントライブラリはC:/Windows/SysWOW64 にあります(InterBase のクライアントライブラリが見つからない場合は、ローカルの ibtogo.dll を読み込みますが、これは今後のリリースで設定可能です)
ここで、RSLiteを(適切な構成で)起動したときに、emsserver.iniファイルとemsserver.ibデータベースファイルが無い場合は、ダイアログで作成するように求められます。RAD Server構成ファイルが存在しない場合は、RSLiteはテンプレートをRAD Studioのオブジェクトリポジトリフォルダ(デフォルトでは、C:¥Program Files (x86)¥Embarcadero¥Studio¥22.0¥ObjRepos)から検索して新しいRAD Server構成ファイルを作成します。
RAD Server構成ファイルの作成を簡単に行う方法は、C:¥Program Files (x86)¥Embarcadero¥Studio¥22.0¥ObjRepos¥ja¥emsフォルダ以下に配置されているファイルをemsdevserver.exe からの相対パスである “…/ObjRepos/ja” のフォルダにコピーすることです。言い換えれば、RSLiteをインストールしたフォルダと同じ階層にObjRepostフォルダが必要です。
注:この作業は、RSLiteを展開するたびに必要な作業ではなく、本番用のデータベースを生成するために一度だけ必要となります。ここで作成されたデータベースは後でターゲットコンピューターにそのままコピーできます。実際、開発環境で作成されたデータベースは、RSLiteデプロイメントと互換性がありません。
ターゲットフォルダとして、RSLiteの配置と同じフォルダを指定することをお勧めします。そうすれば、ウィザードは配置フォルダにemsserver.iniファイルとemsserver.ibデータベースファイルを作成します。これで、RSLite、構成ファイル、ランタイムパッケージ、IBToGo(ライセンスを含む)を含むフォルダなど、ターゲットとなるWindowsコンピュータに展開するために必要なものがすべて揃いました。
プロキシの設定
前述したように、RSLiteは、データの保護と暗号化に関する制限があるため、パブリックなWebアプリケーションとして直接公開することはお勧めできません。専用のサービスを利用してプロキシ・レイヤーを使用するか、一般的なWebサービスをフロントエンドとして使用することをお勧めします。例えばApacheでは、仮想ホストを構成し、HTTPSを有効にして、以下のような構成でトラフィックをRSLiteインスタンスにリダイレクトします。
[crayon-674026f3d1506780500830/]Linux向け
Linuxの場合も、上記と同様の手順で、すべてが期待通りに動作するはずです。別の方法として、RAD Serverのフルバージョン(製品版)をインストールし、IBToGo をインストールに追加することもできます。
- C:Program Files (x86)EmbarcaderoStudio22.0EMSServerフォルダに配置されているems_install.shを使用して、RAD Serverをインストール (詳しくは、こちらを参照ください)
- IBToGoファイルをInterbaseの “redist “フォルダからLinuxのEMSフォルダ(/usr/lib/ems)にコピー
- EMSDevServerCommandを実行し、ウィザードに従ってEMSデータベースと構成ファイルを作成(適切なアクセス許可を取得するには、sudoを介してアプリケーションを実行する必要があります)
RAD Server 製品版へのアップグレード
前述しましたがRSLite で処理可能なRESTリクエストには制限があります。より高い帯域幅とスループットを必要とする場合は、RAD Serverのフルバージョン(製品版)へのアップグレードをお勧めします。
RAD Studio、Delphi、C++Builder の Enterprise Edition をお持ちのお客様は、RAD Server の製品版の本番環境向けのシングルサイト配置ライセンスが含まれています。 Architect Edition をお持ちのお客様には、同じく本番環境向けのマルチサイト配置ライセンスが含まれています(ただし、配置するサーバーごとにアクティベーションが必要です)。また、RAD Server VAR 契約をご希望の場合は、エンバカデロテクノロジーズのインフォメーションサービスセンターまでご連絡ください。この契約により、お客様のアプリケーションと一緒にslipファイルを配置するだけで、登録不要でRAD Server の製品版のマルチサイト配置ライセンスをご利用することができます。RAD Serverのライセンスの違いについては、こちらを参照ください。
RAD Serverに関する技術的なドキュメントは、こちらからダウンロードできます。是非ご参考ください。