Welcome!

Machine Learning Authors: Pat Romanski, Yeshim Deniz, Liz McMillan, Elizabeth White, Zakia Bouachraoui

Related Topics: Java IoT, Microservices Expo, Open Source Cloud, Containers Expo Blog, Machine Learning , Apache

Java IoT: Article

Losing Sleep Over Monitoring Complex Distributed Java Apps?

Analytics, metrics and modeling to the rescue

When IT people think about application performance monitoring, they're usually thinking about which metrics they should monitor. Some examples of resource metrics may include CPU utilization, disk queue length, and thread pool size. Examples of performance metrics may be application response time, responses per interval of time, and concurrent invocations of an application.

"Modeling" is probably not the first term that comes to mind when considering application performance monitoring. But, in fact, "modeling" is exactly what a "domain expert" does when he decides how application components are related with one another, and which metrics matter in gauging application performance.

The problem for IT organizations is to extract this type of "institutional knowledge" from a handful of experts to make it accessible and relevant to more people in IT Operations and Application Support. So whether you are talking about a complex approach like using UML diagrams, or something easier to grasp like calculating workload for your monitored elements, a model is simply an abstraction of best practices to make it easier to understand application performance.

Gartner underscores the importance of modeling in its analysis of the APM market. Its Magic Quadrant for Application Performance Monitoring discusses five functional dimensions, one of them being "runtime application architecture discovery, modeling, and display." This is the discovery of the hardware and software components of an application and the communication paths connecting these components together. Put even more simply, one of the key criteria for a good APM solution is to discover and create an accurate model.

Let's go through a brief example of why application modeling is so important for performance monitoring, and why Netuitive put so much effort on this in our recent Netuitive 6.0 release.

A typical Java application runs on an application server such as Tomcat, JBoss, WebSphere, or WebLogic. Because the application is distinct from the application server and JVM, it makes sense to model these as separate components.

The application has performance metrics such as response time and responses per time interval. The application server has JVM resource metrics such as CPU utilization and thread pool size.

Traditional "monolithic" models of performance combine metrics for an application and its application server into a single entity. But this monolithic approach makes it more difficult to model a scenario where multiple applications run on the same application server.

The monolithic approach is also not as intuitive if you want to quickly see if there is a problem with an application. It is straightforward to mark an application as "red" if its response time is increasing and to mark an application server as "red" if CPU utilization is high. But if resource and performance metrics are combined together, do you mark an application as red if CPU utilization is high? It isn't clear. High CPU utilization may not necessarily affect application performance, but you still want to know about it from a resource utilization perspective.

But a "monolithic" model is no longer appropriate for today's distributed enterprise applications. A modern Java application runs on multiple application servers in a clustered architecture. The cluster provides increased scalability and redundancy as more cluster nodes are added.

The most typical way to model an application cluster is as a cluster entity that contains multiple application servers.

This model focuses primarily on infrastructure, where one can determine if resources are evenly distributed among cluster nodes.

You can also adopt a more "application-centric" model by creating a cluster that contains only the applications.

This model provides more visibility into total application throughput and average response time. It focuses mainly on application performance throughout the entire cluster.

The bottom line is that a good model is essential for understanding and evaluating application performance. Today's distributed enterprise-class Java applications is more complex than ever, and depending on the "institutional knowledge" of a handful of application support experts is risky. Predictive IT analytics have now advanced to the point of eliminating this risk by condensing modeling best practices into templates that define which metrics matter, and by distilling the analysis of these metrics into composite health and workload indices.

To learn more about how this all works, check out our white paper on monitoring distributed Java applications.

More Stories By Richard Park

Richard Park is Director of Product Management at Netuitive. He currently leads Netuitive's efforts to integrate with application performance and cloud monitoring solutions. He has nearly 20 years of experience in network security, database programming, and systems engineering. Some past jobs include product management at Sourcefire and Computer Associates, network engineering and security at Booz Allen Hamilton, and systems engineering at UUNET Technologies (now part of Verizon). Richard has an MS in Computer Science from Johns Hopkins, an MBA from Harvard Business School, and a BA in Social Studies from Harvard University.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


CloudEXPO Stories
With more than 30 Kubernetes solutions in the marketplace, it's tempting to think Kubernetes and the vendor ecosystem has solved the problem of operationalizing containers at scale or of automatically managing the elasticity of the underlying infrastructure that these solutions need to be truly scalable. Far from it. There are at least six major pain points that companies experience when they try to deploy and run Kubernetes in their complex environments. In this presentation, the speaker will detail these pain points and explain how cloud can address them.
The deluge of IoT sensor data collected from connected devices and the powerful AI required to make that data actionable are giving rise to a hybrid ecosystem in which cloud, on-prem and edge processes become interweaved. Attendees will learn how emerging composable infrastructure solutions deliver the adaptive architecture needed to manage this new data reality. Machine learning algorithms can better anticipate data storms and automate resources to support surges, including fully scalable GPU-centric compute for the most data-intensive applications. Hyperconverged systems already in place can be revitalized with vendor-agnostic, PCIe-deployed, disaggregated approach to composable, maximizing the value of previous investments.
When building large, cloud-based applications that operate at a high scale, it's important to maintain a high availability and resilience to failures. In order to do that, you must be tolerant of failures, even in light of failures in other areas of your application. "Fly two mistakes high" is an old adage in the radio control airplane hobby. It means, fly high enough so that if you make a mistake, you can continue flying with room to still make mistakes. In his session at 18th Cloud Expo, Lee Atchison, Principal Cloud Architect and Advocate at New Relic, discussed how this same philosophy can be applied to highly scaled applications, and can dramatically increase your resilience to failure.
Machine learning has taken residence at our cities' cores and now we can finally have "smart cities." Cities are a collection of buildings made to provide the structure and safety necessary for people to function, create and survive. Buildings are a pool of ever-changing performance data from large automated systems such as heating and cooling to the people that live and work within them. Through machine learning, buildings can optimize performance, reduce costs, and improve occupant comfort by sharing information within the building and with outside city infrastructure via real time shared cloud capabilities.
As Cybric's Chief Technology Officer, Mike D. Kail is responsible for the strategic vision and technical direction of the platform. Prior to founding Cybric, Mike was Yahoo's CIO and SVP of Infrastructure, where he led the IT and Data Center functions for the company. He has more than 24 years of IT Operations experience with a focus on highly-scalable architectures.