Coming from an environment with a focus on operational and feature stability, consistency and high availability, and now working in the era of Cloud Computing, agile development and continuous everything, products— or better —platforms like IBM Bluemix seem like an entirely different world. Truth is that once I found my bearings, once I knew how to navigate within the world of Bluemix, I started feeling at home. Here is what I learned, the first installment of my “how to bluemix”.
I previously described how to deploy an IBM Support Assistant application to be able to transfer data directly from applications in Bluemix to the IBM Support Assistant application. Combining the use of -Xdump:tool in Liberty buildpack applications with an IBM Support Assistant deployment in Bluemix means that you can automatically capture diagnostic data and analyse it using tools like Memory Analyzer without having to download anything locally.
When you have a problem with an app you’ve deployed in IBM Bluemix, you want it as easy as possible to diagnose and resolve the problem. Ideally, you’d automatically capture the failure data, and analyze it in Bluemix, without having to download it. One way to do this is to deploy IBM Support Assistant Team Server as a Bluemix application.
If you want to do step-wise debugging, the answer to “Can I debug in Bluemix?” seems to be “yes with some work”. The current architecture of Bluemix/Cloud Foundry doesn’t permit an incoming debug connection and at the same time, most debug clients are behind some kind of firewall, so we can’t configure our deployed application to make the connection from Bluemix/Cloud Foundry to the client. This post explains how to configure a simple forwarder that can accept two connections, one from the deployed Java application and the other from the debugger. It has a number of drawbacks but is a simple way to prove out the concept.
If a Liberty Bluemix application crashes, the default behavior is that it will immediately restart. The problem with this behavior is that all diagnostic files such as dumps and traces are lost. In order to delay the restart so that dumps and traces can be collected, set this environment variable for your application . . . .