March 19, 2020

How to Find Microservices Performance Issues

Java Application Development

Whether it's in development, or transitioning away from the monolith, more developers are working in microservices than ever before. More, developers are increasingly tasked with troubleshooting performance issues in their applications. But how are developers supposed to find microservices performance issues?

In this article, we’ll look at the tools and technologies developers can and should use to find microservices performance issues throughout the development pipeline, and why using debugging tools during development is a must for every Java microservices developer.

If you want to view the entire Developer's Guide to Microservices Performance white paper, please download by clicking the button below.

Download the White Paper

Changing Requirements for Developers

According to our latest developer survey, over 63% of Java development professionals are either working in, or in the process of transitioning to microservices.

Alongside the widespread adoption of microservices, developers are increasingly tasked with troubleshooting performance issues during development. In fact, that same survey found that over 51% of Java developers are tasked with non-functional performance requirements during development.

Conceptually, this isn’t anything new for developers. Even in monolithic applications, developers carry responsibility for how their code performs in production. But, because microservices applications can communicate in unexpected ways, and grow in complexity as they scale, troubleshooting microservices performance during development is crucial to application success.

How to Find Microservices Performance Issues

At a symptomatic level, there can be clear warning signs of performance issues within your microservices application: slow services, failing services, and, if the application isn’t engineered resiliently, application failure. Ideally, the developer is looking at application (and individual service) performance throughout the development pipeline with a variety of tools suited to the stage.

Application performance monitoring and service mesh solutions provide big benefits during production due to their ability to identify issues that are affecting the application in production. Theycan also provide quick band-aid solutions that help to mitigate those issuesBut developers still need tools that can give insight into service performance during development in order to truly address those problems.

Microservices Performance Monitoring

For applications already in production, APM solutions like Dynatrace, AppDynamics, or Prometheus can help developers to assess availability and performance of their applications and services.These tools focus on helping companies identify issues that have appeared in their application and mitigate the risk presented by these performance issues.

Meanwhile, service mesh solutions like Istio and Linkerd can help to streamline inter-service communication and provide insights into service health, latencies, and request volume. Those insights can also help with data-driven feature rollout via canary or blue/green deployments.

Microservices Performance Testing

While APM solutions and service meshes can help to assess and optimize microservices performance, testing performance in microservices and the combined application is critical to success.

Using a combination of tools to load test services (e.g., JMeter), and tools that visualize the resulting data (e.g., Grafana), can help developers to understand how microservices will function, or fail, at load.

Addressing Microservices Performance During Development

Another critical part of developing performant microservices-based applications is in early stage analysis and optimization.

Developers should regularly look at the performance of individual services and the combined application during development (including data store queries and third-party services). By doing so, the developer gets better insight into how their code is interacting with other services and can better contribute to the application at large.

This is particularly true as more development teams are adopting the DevOps methodology. Previously, developers never cared about performance as it was “someone else’s job”. With DevOps methodology, engineers are increasingly responsible for the way in which their application is delivered and how well it performs.

Profiling Tools for Java Microservices

Profiling tools like JProfiler, VisualVM, YourKit, or Stackify Prefix can give greater visibility into your Java microservices application. These tools are typically plugged into the test environment to provide the engineers with a tool to address performance issues like memory leaks andthreading issues.

Try JRebel for Free

Additional Resources

If you want to learn more about microservices in Java, our microservices resource hub is a great place to start. Or, if you're looking for additional helpful resources, our new Java resources hub is chock full of great material.

 See the latest webinars, articles, and whitepapers from industry experts by visiting the hub, or by clicking the links below.

Recorded Webinars

White Papers