Troubleshooting Java applications on OpenShift

What is it about?

OpenShift has seen a lot of traction with the release of its third version based on Kubernetes a couple of years ago. More and more companies after a thorough evaluation of OpenShift Container Platform (OCP) have built an on-premise or in the cloud PaaS. With the next step, they have started to run their applications on OCP. One of the important aspects of running applications in production is the capacity of quickly restoring services to the normal service level after an incident followed by the identification and the resolution of the underlying problem. In this respect, I want to present in this blog a few approaches for troubleshooting Java applications running on OpenShift. Similar approaches can be taken with other languages.

Debugging applications during development phase can be done thanks to features like:

  • Debug mode for resolving issues during startup.
  • Port forwarding for connecting an IDE like JBDS to an application running in a remote container and debugging it with breakpoints and object inspection.

This has been presented in blogs like here and here.

In this blog, on the contrary, I want to focus on troubleshooting applications in production and to cover things like capturing heap and thread dumps, resource consumption per thread. These are techniques that have more than once been helpful in the past for resolving deadlocks, memory leaks or performance degradation due to excessive garbage collection for instance.

Let’s get into the heart of the matter!

Continue reading “Troubleshooting Java applications on OpenShift”

Share

How to run FIS 2.0 application using source S2I deployment procedure

This article describes how to create and deploy an FIS 2.0 project using the s2i source workflow. It creates a project from scratch and using github repository one can deploy their FIS 2.0 camel and spring-boot based project to an Openshift environment. Below are the steps in the sequence, which should be followed to deploy the application easily.

Continue reading “How to run FIS 2.0 application using source S2I deployment procedure”

Share
AMQ Replication HA Policy

Demonstrating Red Hat JBoss AMQ 7 HA Replication Failover

A few weeks ago, the newest version of Red Hat JBoss AMQ was released. AMQ 7 is the result of Red Hat’s efforts on creating a unified messaging platform for its middleware offerings. One of the most interesting features of this new version is the new backing strategy for failovering when configured in high availability. This feature allows clients connections to migrate from one server to another in the event of server failure so client applications can continue to operate.

AMQ 6.x already had an option to configure failover using a shared store, usually backed up by a shared filesystem or a JDBC connection to a database. However, that option involved the use of external infrastructure add-on in hardware and software, representing an increase in overall deployment costs.

In AMQ 7, support for network-based replication was added. When using replication, the live and the backup servers do not share the same data directories; all data synchronization is done over the network. Therefore, all (persistent) data received by the live server will be duplicated to the backup.

Continue reading “Demonstrating Red Hat JBoss AMQ 7 HA Replication Failover”

Share

Organizing Microservices – Modern Integration

Microservices is probably one of the most popular buzz words among my fellow developer friends, and I do like the concept of being flexible, agile and having simply having more choices. But as a person that worked in the software integration space for years, I started to see some resemblance of the old ESB days.

Looking at the problem from ten thousand feet up. A decade ago, we had to come up with a better way of organizing the spaghetti connection in between systems, stop duplicating effort on the same piece of business logic. That is when service-oriented architecture (SOA) became popular. By modularizing services, sharing them among others systems, and organize ways of communication, routing of data. And ESB is one implementation of that, maybe not necessarily how it should be done.

Continue reading “Organizing Microservices – Modern Integration”

Share

Kill Your API : The Burger Analogy

The other day I had a chat with the folks working on the OpenAPI initiative and I explained a trick that some of us in enterprises use to get greater speeds and scalability out of our API’s. At first, this may seem like complete sacrilege to those who are a stickler for standards but if you allow me to explain using a simple analogy, you may see how this can be useful…

Continue reading “Kill Your API : The Burger Analogy”

Share

Reference Architecture for Agile Integration

Integration is still around but in a different form. So, what does modern integration look like? Looking at how agile scrum has taken over traditional waterfall development framework, by enabling shorter delivery cycles, faster feedback, and having the flexibility to rapidly adapt to changes. I believe it’s time for traditional integration to be agile again. By breaking up traditional ESB into distributed microservices.

Continue reading “Reference Architecture for Agile Integration”

Share