Last month IBM acquired StrongLoop, a company that provides functionality to power the API economy via Node in enterprises. Specifically StrongLoop provides capabilities to develop REST APIs in Node.js, access them easily from various clients including mobile apps and manage and monitor them in enterprises. Below is a high level description and some resources how you can use these features on IBM Bluemix.

In the easiest case REST APIs can be developed visually using a web tool called StrongLoop Arc without any programming. Models can be created either from scratch or imported from databases (schemas). Based on the models REST APIs with the typical CRUD and list operations are generated automatically and exposed in the Swagger API format. Models are bound to data sources like MySQL or MongoDB to persist and read data.

There are three main components:
1) The generated and potentially manually extended Node.js application
2) StrongLoop PM (process manager) which is the 'container'/runtime for the Node application(s)
3) StrongLoop Arc which is the tool to define models and datasources and manage applications

In order to use StrongLoop Arc on Bluemix the StrongLoop Arc starter is provided. Alternatively you can deploy Arc via the Bluemix deploy button. When Arc is deployed to Bluemix you can manage applications by pointing Arc to process manager(s). In order to define models and data sources you need to install Arc locally.

In order to use StrongLoop PM on Bluemix you can use the LoopBack Starter which also comes with a sample application or deploy the sample via the deploy button. Alternatively you can run a Docker container based on the ibm-node-strong-pm image. The generated Node applications are not deployed standalone on Bluemix but always as part of a process manager.

StrongLoop comes with several built in data source connectors as well as connectors provided by the community. Andrew Trice documented how to use Cloudant on Bluemix as data source and Arpitha Myla described how to use a MySQL database.

For more complex scenarios StrongLoop provides several ways to extend and modify models, for example you can create relations between models. If a simple mapping of models to database tables doesn't work for you, logic for REST APIs can be implemented via Node.js. This is necessary if you don't want to expose CRUD operations for resources but rather have higher level APIs that might not map to just one resource.

In addition to REST APIs StrongLoop also provides functionality to manage and monitor applications. To find our more about this watch the video Step by Step How to Deploy Z on the IBM Bluemix and the video Integration of Instant Runtimes and API Capabilities. Furthermore StrongLoop provides Client SDKs to access REST APIs easily from web and mobile applications.

There are many more features StrongLoop provides. Read the documentation, the article Getting Started With Bluemix and StrongLoop and the blog entry Getting Started With IBM MobileFirst and Node.js APIs built with LoopBack.

Access to Bluemix Applications via Command Line

By Niklas Heidloff, posted on Oct 6, 2015

During the development and testing of applications it's sometimes necessary to get access to the hosts of the running applications via command line, for example if you want to check or set certain environment variables, log files, etc. Dependent on whether you run applications as Cloud Foundry applications or Docker containers IBM Bluemix provides different mechanisms to do this.


For Docker you can SSH into containers. Read the documentation for details. Essentially you need an SSH key pair and you need to add the public key to the container. This can either be done when building the images via Dockerfile or you can use the Bluemix user interface to do this for single instance containers.

After this you can use SSH with your private key by invoking a command like ...
ssh -i /Users/nheidloff/.ssh/cloud.key root@

Cloud Foundry

For Cloud Foundry based applications you need to enable the debugging features. Read the blog from my colleague Sai Vennam for details. The feature is rather hidden in the web user interface. You need to set an environment variable either via the cf (Cloud Foundry) command line interface or via the user interface.


After this you can open the management console by appending "/bluemix-debug/manage" to the URL of your app.

From the management console you can open shells and restart applications.

At code.talks I gave a session Rapid Application Development in the Cloud and On-Premises with Docker. Below are the slides.

In the first part I gave some background why containers are important in general and a quick introduction to Docker. After this I gave some demonstrations and the deck contains screenshots of these demos.

1) Build Docker images and run containers locally: Slide 11ff
2) Push images to Bluemix manually and run and monitor containers: Slide 22ff
3) Deploy applications by simply doing a Git push: Slide 37ff

With the availability of new platform stacks and new tools, the coding of applications has become a lot easier over the last years. However a key problem of software development often still occurs which is the challenge of rapid deployments in different environments - development, testing and production and both on-premises and cloud. The typical developers' excuse "it works for me" doesn't count anymore. Instead today developers are responsible for the complete development cycle up to the deployment and testing in production environments. Fortunately Docker addresses this challenge and makes it very easy to deploy applications in different environments. This empowers developers and allows them to be really innovative by focussing on writing code to go from concept to production in minutes rather than months. In this session we are going to use IBM Bluemix to get applications deployed to the cloud by leveraging the power and portability of Docker containers. We’ll talk about everything from build pipelines, to private registries, container monitoring and more.

The organizer AboutYou is adding other sessions to SlideShare.

Bluemix at code.talks

By Niklas Heidloff, posted on Oct 1, 2015

This week my colleagues James Thomas, Jonathan Kaufman, Tristan Reckhaus and I attended code.talks in Hamburg, Germany. code.talks is a developer conference with 1500 attendees covering various topics around web application development. We presented IBM Bluemix at our booth and in a session. I enjoyed the conference and had a lot of great conversations with other developers. Below are some impressions.

The conference was held in a cinema.

My session Docker in the cloud was in a big room with a huge screen.

We did two lotteries with GoPro cameras which were as always very popular and fun.

The IBM team from right to left: Jonathan Kaufman, Tristan Reckhaus, James Thomas and I.

Maven Plugin to build Images and run Docker Containers

By Niklas Heidloff, posted on Sep 23, 2015

In order for Java developers to test their applications in containers they typically have to build their code, create an image and run a container. You can use the Docker command line interface to manage images and containers, but at least for me that's often error-prone and I have to go back to my cheatsheet to find the right commands. I tried a Docker Maven plugin instead and my initial experience is very positive.

There are actually several Maven plugins for Docker. Roland Huß wrote a nice high level comparison where he explains why he created another plugin. I tried the Spotify one briefly but that one doesn't allow running containers. The plugin from Roland rhuss/docker-maven-plugin seems very promising. Below I used it for my simple Java sample.

With the plugin you can build images and run containers and also easily remove these again which is especially important in the iterative development phase.

Build image:
> mvn docker:build

Run container:
> mvn docker:start

Stop and remove container:
> mvn docker:stop

Remove image:
> mvn -Ddocker.removeAll docker:remove

The plugin also supports to push images to other registries but I haven't tried it yet. To find out more read the Intro and the Manual.

More Blog Entries ...

Hi, my name is Niklas Heidloff. I work for IBM as an IBM Bluemix Developer Advocate. The blog contains information about IBM Bluemix and articles about my previous work in IBM Collaboration Solutions, esp. IBM Connections and XPages.



The postings on this site are my own and don't necessarily represent my employer IBM's positions, strategies or opinions.