とうとう IBM Bluemix 上のランタイムとして Domino サーバーが登場しました。詳しくはこちらを参照ください:
Domino on Bluemix


IBM Notes/Domino は IBM が開発/販売しているコラボレーションプラットフォームです。多くの企業でエンドユーザーコンピューティングやグループウェアの基盤として使われ、多くのビジネスパートナー様による関連製品/サービスもリリースされています:
2015081202



今回リリースされた XPages(Domino) ランタイムは、パブリッククラウドである Bluemix 上で、サーバー機能である Domino が稼働する環境を提供するものです。そこだけを見ると嬉しいニュースなのですが、ではこの Domino は Bluemix とどこまで親和性があるのでしょうか? たとえば Bluemix では Java や PHP などのアプリサーバーと、DB2 や MySQL などのデータベースサーバーは分離されています。そのため、アプリサーバー部分だけを負荷に合わせて手動でスケールアウトさせることもできますし、そのスケールイン/アウトを自動化させる、いわゆる「オートスケール」の設定を組み込むことも可能です。

一方、Domino サーバーは「オールインワン」型でした。アプリサーバーもデータストアもその中で動くアプリケーションも、更にはユーザーディレクトリや HTTP, タスクスケジューラといったサブタスクも全て一元化されたサーバーを使っていました。考え方としては1つのサーバーが全ての機能を持ち、負荷分散でサーバーを複数台対応させる場合にはデータも複製して対応する、というアプローチでした。

ある意味で相反する考え方を持つ Bluemix のランタイムと Domino ですが、ではこの Domino ランタイムが Bluemix 上で動く場合に、Bluemix のスケーリングの考えは適用できるのかどうか?という疑問が生じます。

具体的には Bluemix 上の Domino は Java や PHP アプリサーバーのように簡単に複数台対応できるのか?同様にオートスケール設定ができるのか?その場合のデータの整合性はどのようにして保つのか/保たれるのか? といった疑問です。


結論を先に言うと、Bluemix 上の Domino は(条件付きで)スケール対応します。Java や PHP と同様のインターフェースやオートスケールサービスを使って、動的に Domino サーバーを複数台対応させることができます。その際に Domino 固有のデータ複製設定などは必要ありません。

でも「なぜそんなことが可能なのか?」という疑問が生じるはずです。それについて正確に表現すると「Bluemix 上で .nsf ファイルを XPages 設計要素と、ビュー/フォーム/文書の要素に分けてプッシュする形でデータベースアプリケーションをデプロイすればスケーリングに対応できる、ということになります。つまり .nsf ファイルを設計とデータとに分離します。そして前者をランタイムで、後者をサービスで運用する形を取り、更にランタイムから分離先のデータサービスを正しく参照して文書データをデータサービス内だけに保存するような設計にするという条件を付けることでスケーリングが可能になる、ということです(ランタイム側にもサービス側にも .nsf ファイルが必要です):
2015081201


これを実現するには XPages の仕組みが必要になり、加えて既存 XPages アプリの設計を少し改良する必要もあります。具体的には、例えば XPages の設計要素でデータベースファイルを指定する箇所を以下のように指定します:
<xp:dominoView databaseName="myapp_data.nsf"> 
  ↓
<xp:dominoView databaseName="#{javascript:bluemixContext.isRunningOnBluemix()? bluemixContext.getDataService().findDatabaseName() : 'myapp_data.nsf'}"> 


この処理内容は XPages 内で JavaScript を使って「Bluemix 環境であればバインドされているデータベースを使う、Bluemix 環境でなければ myapp_data.nsf を使う」という処理を記述しています。つまり Bluemix 環境上で動いている時とそうでない時に分けてデータベースファイルを指定しています。Bluemix 向けに拡張された Domino Designer ではこのような記述も可能になります。このような仕組みによって Bluemix 上でスケールできるよう対応させる必要があるとも言えます。それが "(Domino on Bluemix ではなく)XPages on Bluemix" という名称にも現れているのだと思います。


というわけで、エントリ冒頭の疑問に対する答はこちらです: 
IBM Domino はスケールイン/アウトできます。Bluemix と XPages があればね♪


なお、Bluemix 上の XPages 関連ランタイムやサービスは2015年8月12日現在ではまだ「試験提供」のステータスです。上記内容は試験提供内容を元に記述しています。正式提供に向けて今後仕様変更があるかもしれないことはご了承ください。