If you have ever had to check every single light in a strand of twinkle or Christmas lights to find the one that is ruining the entire string, you understand how difficult it is to locate the failure point in today's distributed infrastructure for applications.
Now data needs to pass through several different components and navigate through diversity in language, operating environment, and ownership. In the past, applications relied on a few large services, and it was easy to see which was causing the issue. Today's modern environment makes it difficult for teams managing the application to pinpoint what is causing the problem.
To mitigate those challenges, application performance monitoring (APM) software has been helping managers discover failures quickly to allow them to resolve the issue and get the application back up and running fast.
New Relic APM hopes to point managers in the right direction with a new addition of distributed tracing. The company hopes to give software teams working in modern environments an easy way to capture, visualize, and analyze traces through complex architectures, including architectures that use both monoliths and microservices. Distributed tracing provides engineers with the detailed view of individual requests so they can point out precisely what parts of the larger system are problematic.
New Relic APM Pro
The company states that every customer with a New Relic APM Pro subscription will get this new capability at no extra charge; they will just have to update the current agents and enable distributed tracing in their configurations. The initial release supports Java, Node.js, Python, and Ruby, and assembles trace data collected across polyglot environments into detailed scatter chart and waterfall visualizations. In the coming months, New Relic plans to incrementally deliver on a larger distributed tracing roadmap with support for .NET and Go coming first, followed by support for PHP, the company says.
New Relic states that the four distinct components of distributed tracing are:
- Instrumenting - New Relic instruments each service involved in the request, whether it’s a monolith or a microservice, creates timings for operations within the service, and sends each measured operation as a “span” to New Relic’s platform. Then the platform will automatically add important troubleshooting information to each span.
- Propagate context - Propagates the unique Trace ID the solution automatically assigned the service and other necessary correlation information as the “trace context” across the entire call. This eliminates the hard work of managing and propagating context.
- Recording - New Relic agents send trace data to the Software-as-a-Service (SaaS) platform, where the company will ingest and store the data in New Relic Insights. Because New Relic stores trace data for you in Insights, you can query trace data directly and create custom dashboards.
- Visualize traces - Finally, it all comes together in the New Relic APM user experience through trace visualizations designed to help you quickly understand why a specific request is slow, where an error originated, and where you can optimize your code to improve your customer’s experience.
The company has a roadmap for future releases that includes:
- Updates to our .NET, Go, and PHP agents to support distributed tracing
- Integration with New Relic Browser and New Relic Mobile to connect client and backend performance
- Improved integration with New Relic Synthetics and In
In a blog post announcing the new capabilities, Victor Soares of New Relic discussed the impact distributed tracing can have on application performance management. He said,
"For DevOps teams, understanding how a downstream service “a few hops away” can create a critical bottleneck for their service is essential for fast problem resolution. Just as important, it also provides teams with insight on how to optimize their code. If DevOps teams can’t determine when, why, and how an issue happens, small defects may continue to linger in production until a perfect storm of events aligns and the system breaks all at once. Distributed tracing provides engineers with the detailed view of individual requests so they can point out precisely what parts of the larger system are problematic."
We'll be watching to see if or how New Relic promotes the capabilities to MSPs.