What’s the big deal with AppDynamics Azure Monitoring?

Let me guess: you’re probably expecting AppDynamics to be “another monitoring solution” for Windows Azure. You’re expecting it to show you basic server metrics like CPU, memory and disk I/O, along with a few CLR counters thrown in for good measure. Well, I’m sorry to disappoint you–but these metrics in isolation are about as useful as a chocolate teapot for monitoring your applications and business in the Cloud.

When end users interact with your Windows Azure application, they don’t experience servers, Azure roles, CPU, or CLR counters. Rather, they experience business transactions. Monitoring infrastructure metrics in the cloud is probably the worst KPI for managing Quality-of-Service (Qos) and application performance. Another problem in the cloud is application architectures, which have become virtual, dynamic and distributed. Applications are no longer just an app server and database. SOA design principles and cloud application services mean that business transaction logic now executes across many distributed application tiers and services.

For example, the Windows Azure PaaS platform has several services that allow organizations to run their mission-critical applications in the Cloud. Azure Compute provides web and windows services, Azure AppFabric provides messaging, security and caching, and SQL Azure and Azure Storage provides data management capabilities.

A major challenge for organizations is gaining end-to-end visibility of how their business (transactions) perform in the Azure Cloud. AppDynamics was founded in 2008 to address this problem, and it’s a key reason why Microsoft announced AppDynamics as a partner to help their customers manage application performance within Windows Azure. For AppDynamics, it’s an enormous privilege and responsibility to be selected by Microsoft, given Windows Azure is a huge strategic play as Microsoft looks to dominate the Cloud Computing market.

So what’s the big deal with AppDynamics in Azure? Let’s take a look at what unique capabilities AppDynamics offers for Windows Azure customers:

Application Mapping for Windows Azure Roles and Services
AppDynamics is able to automatically discover, map, and visualize the living topology and performance of a production application running inside Windows Azure. This allows organizations to understand the application tiers, Azure roles, and service dependencies inside the Azure Cloud so they can rapidly isolate which components are responsible for slow performance or poor QoS. For example, take a look at the following screenshot of an application hosted inside Windows Azure:

Business Transaction-centric Monitoring
What’s unique about AppDynamics production monitoring is that our key unit of measurement is business transactions–rather than, say, web pages, servers, or CLR metrics. AppDynamics can auto-discover the business transactions that end users are experiencing in the application. This gives IT Operations and development teams the context and visibility they need to monitor and manage the end user experience, along with understanding how transactions flow across and inside each application tier, Azure Role, and Services.

For example, take a look at this screenshot, which shows what business transaction monitoring looks like in AppDynamics:

Deep Diagnostics for Rapid Root-Cause Analysis
For situations where end users experience poor QoS, slow downs, or outages, it’s possible for organizations to pinpoint the root cause of issues in minutes using AppDynamics. AppDynamics uses intelligent analytics to self-learn and baseline the normal performance of every business transaction in an application. When performance deviates, AppDynamics captures complete diagnostic snapshots of business transactions that breach their performance baseline. Snapshots represent the complete distributed flow and code execution of slow business transactions as they execute across and inside each application tier, Azure role and service. This means IT Operations and developers see right down to the line of code responsible for issues in production that impact their end users and QoS. Root cause is therefore only minutes away.

Here is a screenshot of how a single user business transaction executes within Windows Azure:

Here is the code execution of that same user business transaction within the 2nd Application Tier “LowValueOrders” worker role:

Auto–Scaling for provisioning Windows Azure resource on-the-fly
A key benefit of Cloud is resource elasticity – the ability for an application to leverage additional computing resource on-the-fly, so it’s able to scale up and down all by itself. For auto-scaling to happen in Windows Azure, the application needs to know when to scale up and when to scale down. AppDynamics provides a comprehensive policy wizard that can auto-scale an application in Windows Azure based on business transaction KPI like end user response time or throughput. For example, if order throughput in your application were to drop due to increased load on your application, you might want to spin up more Azure compute (web/worker roles) to compensate for the additional demand until throughput stabilizes or load reduces.

For example, here’s a screenshot of the AppDynamics Azure auto-scaling policy wizard:

If you want to try AppDynamics for Windows Azure you can sign-up at the marketplace right here.

App Man

Top Tips for Managing .NET Application Performance

There are many technical articles/blogs on the web that jump straight into areas of .NET code you can instantly optimize and tune. Before we get to some of those areas, it’s good to take a step back and ask yourself, “Why am I here?” Are you interested in tuning your app, which is slow and keeps breaking, or are you looking to prevent these things from happening in the future? When you start down the path of Application Performance Management (APM), it is worth asking yourself another important question – what is success? This is especially important if you’re looking to tune or optimize your application. Knowing when to stop is as important as knowing when to start.

A single code or configuration change can have a dramatic impact on your application’s performance. It’s therefore important that you only change or tune what you need to – less is often more when it comes to improving application performance. I’ve been working with customers in APM for over a decade and it always amazes me how dev teams will browse through packages of code and rewrite several classes/methods at the same time with no real evidence that what they are changing will actually make an impact. For me, I learned the most about writing efficient code in code reviews with peers, despite how humbling it was. What I lacked the most as a developer, though, was visibility into how my code actually ran in a live production environment. Tuning in development and test is not enough if the application still runs slow in production. When manufacturers design and build cars they don’t just rely on simulation tests – they actually monitor their cars in the real world. They drive them for hundreds of thousands of miles to see how their cars will cope in all conditions they’ll encounter. It should be the same with application performance. You can’t simulate every use case or condition in dev and test, so you must understand your application performance in the real world.

.NET Application Performance delivered with AppDynamics 3.3

It’s official: AppDynamics support for Microsoft .NET and Windows Azure is finally here! We’ve got the same Kick Ass Product with the same Secret Sauce–but now it sports a shiny new CLR agent. So whether your apps are Java,  .NET or hybrid, with AppDynamics you have the best of both worlds when it comes to managing application performance.

We thought it was only fair to share our secret sauce and love with the Microsoft community, given that 40,000+ users of the Java community have been enjoying it for over 18 months. Our mission is to simplify the way organizations manage their agile, complex, and distributed applications. For .NET, this means that AppDynamics supports the latest and greatest technologies from Microsoft, including their new PaaS platform Windows Azure.

So, what does this mean for organizations with .NET or Azure apps? Let me summarize:

#1 You get to visualize in real-time what your .NET application actually looks like, along with its health and performance across any distributed production environment. It’s the 50,000 foot view that shows how your application and your business performs in your data center or Windows Azure.

#2 Ability to track all business transactions that flow through your .NET application. This gives you insight into business activity, health, and impact in the event that a slowdown or problem occurs in your production environment. This unique context and visibility helps you troubleshoot through the eyes of the business, so you can see their pain instantly in production and resolve it in minutes. We auto-discover and map every business transaction automatically–so don’t worry about configuration. We’ve got that taken care of.

 

#3 Deep diagnostic information on how your business transactions actually execute through your CLRs and/or JVMs (if you’ve got a hybrid app). This means complete call stacks of code execution with latency breakdowns across all your namespaces, classes and methods, which your business transactions invoke. You get maximum visibility in production with zero configuration, allowing you to perform root cause analysis in minutes.

#4 Ability to plot, correlate, and trend any CLR or OS metric over time–whether it’s logic thread counts, garbage collection time, or simply how much CPU your application CLR is burning. We let you report and analyze all this so you understand your CLR run-time and OS system resource.

Don’t believe us? Sign up for our free 30-day trial and we’ll provision you a SaaS login. You can then download and install our lightweight agents and see for yourself just how easy it can be!

As well as our .NET support, we’ve also crammed in some great innovation into the 3.3 release.

Real-Time JVM MBean Viewer:

In addition to trending standard JMX metrics from the JVM, users can now discover and trend any MBean attributes on the fly for short term analysis in real-time. Our new UI dialogue allows the user to browse through hundreds of available metrics which are automatically discovered and reported at the touch of a button. If the user wishes to convert any MBean attribute into a standard JMX metric they can just click “Create Metric” and AppDynamics will collect and report that metric as standard in the JMX Metrics viewer.

Search Business Transactions by their content/payload:

For example, you might have launched a new product on your application or website and need to understand its performance by looking at all business transactions that interact with that product. With AppDynamics v3.3 users can now search business transactions by any transaction payload. For example, the below screenshot shows how a user can search for all business transactions that relate to the book “Harry Potter”.

Additional Platform Support:

  • Auto-discovery and mapping of LDAP, SAP and JavaMail tiers to business transaction flows for increased visibility.
  • MongoDB support allowing users to see BSON queries and associated latency for calls made from Java applications.
  • Enhanced support for WebSphere on Z/OS with automatic JVM naming pools to help customers identify and manage short-living and dynamic JVM run-times.
All in all another great release packed full of innovation from the AppDynamics team. Stay tuned over the next few weeks for more information on specific 3.3 features.
App Man.