Q. フローティングライセンスとは何ですか?

リッチクライアントの実行環境を構成するときにフローティングライセンスという話を聞きました。
これは、どのようなときに有効なのでしょうか?

A. 複数アプリケーションのライセンス有効活用に効力を発揮します

フローティングライセンスは、リッチクライアントに限らず、Enterprise Serverでも有効です。
要するに、FlexLMを使うサーバ実行版の使用時です。
従って、クライアント実行版には適用できません。

例として、次のようなケースを考えてみましょう。
Magic xpaのリッチクライアントアプリケーションが2本あります。
ライセンスとして、Richclient Serverのライセンスを20ユーザ購入しました。

第一のポイントとして、フローティングライセンスは設定であって、購入時の製品として分かれているわけではありません。
この考え方は、uniPaaS でも、xpa でも同様です。

では、その設定について。
これは、ヘルプファイル等にも記載されていますが、ポイントは次の2点です。
1. MGRB.iniに「FloatingLicense=Y」 を記述する。
2. Magic.iniの「MaxConcurrentUsers」を設定する。
 ※Enterprise Serverの場合は「MaxConcurrentRequests」です。

1は問題ないでしょう。
2の方を、もう少し掘り下げてみましょう。
アプリケーションAとアプリケーションBとで、合計20ユーザのライセンスがあります。
単純に各アプリケーションで10ユーザずつであれば苦労しません。
両方のアプリケーションのMagic.iniを次のように設定するだけです。
MaxConcurrentUsers = 10

しかし、アプリケーションによって使用ピーク時間帯が異なるのであれば、単純に10ユーザずつではなく、合計20ユーザを動的に振り分けたいと考えることもあります。
そのような場合、次のように設定します。
アプリケーションAのMagic.ini:MaxConcurrentUsers = 20
アプリケーションBのMagic.ini:MaxConcurrentUsers = -1

アプリケーションBに設定した「-1」というのがフローティングライセンス特有のものです。
アプリケーションAの空いているユーザ数を使うという設定です。
但し、これでは、アプリケーションAを閉じると、アプリケーションBも使えなくなります。
(ライセンスが親子関係になっていると考えれば良いと思います。)
アプリケーションAだけを入れ替えたいときに、Bも止まってしまいます。

そこで、もう一歩。
共有ライセンス用の親アプリケーションを作成します。
そして、次のように設定します。
親アプリケーションのMagic.ini:MaxConcurrentUsers = 20
アプリケーションAのMagic.ini:MaxConcurrentUsers = -1
アプリケーションBのMagic.ini:MaxConcurrentUsers = -1

これで、アプリケーションの入れ替えは、AもBも独立して行うことができます。

Enterprise Serverでも同様です。
合計で15スレッドを購入したとします。
親アプリケーションのMagic.ini:MaxConcurrentRequests = 15
アプリケーションAのMagic.ini:MaxConcurrentRequests = -1
アプリケーションBのMagic.ini:MaxConcurrentRequests = -1

注意することは、フローティングライセンスは、同一MRB配下で使うということです。
ロードバランサ(負荷分散装置)等を使うことによって、MRBも複数になるような環境では、異なるMRB間でライセンス共有をすることはできません。

※uniPaaSでフローティングライセンスが使えるのは、1.9g2PT2以降です。