Raygun APM: Annihilate Performance Issues

Today’s web apps are carefully crafted yet unwieldy beasts, and if you're not careful, they can bite your development team with costly errors and slow performance. 

In truth, this is to be expected. The sheer complexity of today’s web apps means every piece and component needs to be considered. Everything from under-performing SQL queries to web API calls and
even calls to third-party CDNs can cause problems for your app. This means that everyone involved with
developing and maintaining your applications (including developers, testers, SysOps,
etc.) needs to work together to ensure your application executes at peak
performance.

Naturally, your team needs the necessary tools to monitor your application’s
health, and Raygun has exactly what you need, especially with the release of Raygun
APM
.

Raygun is not new in the monitoring space. For
years, Raygun has provided world-class and easily integrated tools that developers
rely on for finding and analyzing costly application errors, as well as monitoring
and reporting on UX and performance issues. With the release of Raygun APM,
Raygun has a complete and innovative platform that offers a centralized tool to
detect, diagnose, and resolve errors and performance issues, regardless of where
they occur or what causes them. 

Raygun APM has launched with first-class support for .NET applications, with support for .NET Core as well as other languages and frameworks on the way soon.

Tracking Performance Issues

Slow performance can be attributed to any number of sources, such as slow
queries to external APIs, overusing external APIs, and slow tracing and method
execution, just to name a few. Trying to pinpoint
these issues on your own, or with the wrong tools, can easily lower your team’s
productivity. 

Raygun APM automatically detects and correctly categorizes these
issues, giving you immediate and detailed feedback and insight into your application’s
performance.

App performance dashboard

The dashboard gives you an overview of your application’s real-time performance,
providing surprisingly deep yet visual analytical information about the
requests your application receives and the types of work your application uses
(e.g. API calls, methods, and queries) during each request. It highlights your
application’s problem points by listing the slowest performing pieces of your
application, and the Apdex gives you insight into your users’ satisfaction with
the response time of your application.

The issues Raygun APM tracks are generated by a set of rules that you
can customize and tailor to your specific needs. For example, if you consider 10 ms
to be too long for a SELECT SQL statement to execute, you can configure Raygun
APM’s rules to report on all queries that take longer than 10 ms to execute.

Performance issues overview

Raygun APM lets you drill down into the nitty-gritty details of each
issue and provides contextual information specific to the type of issue that
occurred. For example, the following is a screenshot of the information gathered
for a slow-running SQL query.

Slow-running SQL query issue drill-down

Not only does Raygun APM provide you the actual query, but it also shows you when it executed slowly, as well as the traces where the issue occurred.

Raygun APM also breaks down each request into its disparate parts,
giving you a clear understanding of the performance of each method, query, or
other resources used in the request.

Performance over time and call time breakdown

Every piece of a request that has any bearing on your application’s
performance is captured, catalogued, and available, complete with analytical
metrics for your team to dig into. Raygun APM gives you the needle in the
haystack of data—it already finds the pain points of your application. All your
team has to do is fix them.

Integrating With Your Workflow

Today, software development teams use a variety of services to develop
and deploy applications. Think of GitHub and Bitbucket for managing and maintaining
your source code, Jira for project management, Slack for communication, and
even PagerDuty for incident resolution—these are all services used in modern software
development to facilitate a productive team. Naturally, Raygun APM seamlessly
integrates with these and many other third-party workflow tools and services.

Integrated source code view

Imagine inspecting an issue Raygun APM found with your products page
and being able to see the source code of the controller’s action method—housed at
GitHub or Bitbucket—and creating a Jira issue (or linking to an existing issue)
without leaving Raygun APM. Everything you need to identify and assign issues
to members of your team is at your fingertips, thus dramatically reducing the Mean
Time To Resolution of performance issues and software errors in your
applications.

Along with APM, Raygun also offers crash reporting and real user monitoring—together these services comprise the Raygun Platform. Naturally, all the parts of the Raygun Platform combine and share data in a seamless workflow. 

Pricing

If you are familiar with other APM solutions, such as New Relic, then
you’re aware of the high cost of application performance monitoring. APM providers
like New Relic use a per-server pricing structure that can sometimes make it
cost-prohibitive to get a complete picture of your applications’ performance.

But modern web development is much more than just code running on servers; we now take advantage of containers and microservices to better compartmentalize and isolate different parts of our applications. Other APM solutions approach containers and microservices in a, once again, cost-prohibitive way. New Relic, for example, does not require a license for each individual container, but their customers must purchase a license for the server those containers run on.

Raygun,
however, uses a different pricing model based upon the number of traces they
process for your applications. This means you can use Raygun APM on as many
servers (both physical and virtual) as you need for as many containers, microservices, and applications as you want to monitor—making it much more cost-effective to get a complete
picture of your applications’ performance.

Raygun APM is available as a standalone product, but it's even more cost-effective to purchase it as a part of the Raygun Platform. With the Raygun Platform, you get access to crash reporting, real user monitoring, and performance monitoring all working together.

Supporting .NET

There are many web development platforms available, and after all these
years, PHP still reigns supreme. But .NET is the platform used in business
environments, and with the cross-platform release of .NET Core, .NET's popularity
is rapidly growing outside of the business sector. But unfortunately, not many
APM providers focus on .NET, leaving a massive hole for Raygun to fill—and they
certainly fill it.

With the launch of Raygun APM, .NET developers can leverage the power
of a world-class APM for monitoring the performance of their applications. Whether
your .NET application runs on your own hardware or in an Azure
Web App instance, you can rely upon Raygun APM to deliver accurate and detailed
performance data.

Currently, Raygun APM only supports .NET (non-Core) applications, but
support for .NET Core and other non-Microsoft languages and platforms is coming
soon.

My Experience

I took the opportunity to briefly test Raygun APM on a live, non-demo
site that I had a hand in building. I knew beforehand that the application had
performance issues. It was built under a tight deadline, and optimization wasn’t
much of a priority… until my co-workers and I were told to optimize it. It runs
on an on-prem (on-premise) server.

Setting up Raygun APM was extremely simple. Here are the steps I took:

  • downloaded and
    installed the Raygun APM client on the server
  • entered and
    registered the API key
  • attached the client
    to the application’s App Pool
  • recycled the App Pool

I started seeing trace data in the dashboard within a minute. Having intimate
knowledge of the application, I wasn’t surprised to see that Raygun APM identified the poorly performing parts of the application. I was, however, very
surprised at the amount of detail it provided. I always knew that certain methods
and processes were slow, but Raygun APM allowed me to drill down into the
details and pinpoint the exact methods and API calls slowing down my application.

I did notice a considerable hit to the application’s performance while
the Raygun APM client was attached to the App Pool. However, this performance
hit was not noticeable in the optimized parts of the application

Therefore,
Raygun APM is certainly a tool you will want to leverage in a testing environment
before using it to capture and analyze applications in production. Doing so gives
you the ability to fix the performance issues before the application is even
deployed.

Conclusion

Raygun APM is a fantastic service you can use to
monitor your .NET application’s performance. It automatically finds the
performance issues for you, and with its tight integration with other tools and
services you already use, you and your team will be able to quickly fix those
issues. Not only that, but it comes at a lower cost than most other APM services on the market!

Categories: