Over the past few weeks I have done presentations on Bluemix at two ICS user groups, MWLUG and ICONUK. I did pretty much the same presentation at both mainly focused on introducing developers to Bluemix. Obviously, since these user groups are focused mainly around ICS, there is interest in how Domino and XPages fits into the Bluemix story. Well as of right now you cannot deploy your XPages apps to Bluemix. However, Kramer Reeves announced at MWLUG that ICS is investigating how to make this dream come true. As we all know an investigation is no guarantee, so what is a Domino developer to do in the mean time? While you can’t deploy your XPage applications, there is no reason why you can’t use the data stored in your NSFs. You just need to use another runtime, such as Java, Node.js, Ruby, PHP, or any other runtime Bluemix supports, to build the front end and business logic of your application.
So how do you do it? Well you start by familiarizing yourself with Domino Access Services. Domino Access Services (DAS) essentially allows you to access and manipulate the data within your NSFs over HTTP using REST. The good thing about DAS is that you can get this functionality without having to write any code. You essentially enable DAS on your Domino server and then enable it on the NSFs you want to access over HTTP. This is all spelled out in the documentation that can be found here. Once you have DAS enabled any application that has an internet connection can access and manipulate the data within your NSF, this includes mobile apps, web apps, or any app deployed to Bluemix as long as the Domino server is accessible to the public internet. All you need to do is make HTTP requests.
However there are many situations where your Domino server many not be accessible to the public internet, what do you do then? Your first instinct might be to try to setup a VPN connection. Well that is not possible with Bluemix because Bluemix is a PaaS. You can’t even SSH into the machine your app is running on in Bluemix never mind setup a VPN connection. The good news is that there is a service in Bluemix called Cloud Integration that you can use to connect to pretty much any server that might be running on a private network or be behind a firewall. I wrote a separate blog post on using this service, you can read more about it here. By using the Cloud Integration service in Bluemix you can then use the REST APIs on your Domino server from your Bluemix application even if those REST APIs are not exposed to the public internet! Pretty cool stuff.
To demonstrate this I have created a short video showing you how.
In addition my session from MWLUG was recorded, so you can watch that as well.
Finally you can find my slides from MWLUG on SlideShare.