Engineering, Product

The AppD Approach: Using Flame Graphs to Debug Node.js Apps

In my day job, I work to help people understand performance and reliability issues in distributed applications across a number of different technologies including Java, .NET, and Node.js. A few years ago, I started to see a rise in the adoption of Node.js, with some large organizations like PayPal making a major shift to the […]

Engineering, Product

Tales from the Field: Migrating from Log4J to Log4J2

The AppDynamics Java agent, like many Java applications, uses logging extensively. We have used Log4J as our logging framework for many years. And while the latest release of Log4J was in 2012 – and the Apache Foundation announced end-of-life for Log4J in August 2015 – we didn’t upgrade to Log4J2 because of the need to […]

Engineering, Product

The AppD Approach: Java 9 Support

We are excited to announce full support for Java 9 as part of our Winter ‘17 product release. Java 9 introduces some interesting features such as incubator support for HTTP/2 and making the G1 Garbage Collector (GC) the default GC for the Java virtual machine (JVM). But the most fundamental change that impacted all Java […]

Engineering, Product

Keep Your Internal Websites Running Smoothly with Private Synthetic Agents

AppDynamics’ 2017 App Attention Index found that 32 percent of consumers have taken their online business elsewhere due to a poor digital experience. But what do you do when you’re an employee and your company’s internal applications perform poorly – and you can’t take your business elsewhere? We’ve all been there: we end up unhappy […]

Engineering, Product

Cross-Controller Federation: Ensuring Application Visibility and Correlation

Over the last few years, we have seen an evolution in application topologies. For example, when AppDynamics first started monitoring applications 10 years ago, a business application was relatively self-contained, with the corresponding tiers and nodes representing the majority of the application’s business logic. As time passed, we saw more distribution of functionality, where an […]

Engineering, Product

AppD on AppD: Scaling Our Custom Dashboards Platform

This blog post is a developer’s perspective on how using our own AppDynamics software has helped us find and fix performance-related issues – and how other developers can do the same.  One of the most challenging aspects of developing cloud-based platforms is scalability. As we innovate and build new features, it is essential for developers […]

News, Engineering, Product

3 Steps to Build the Next Great App

Progress bars inching forward ever so slowly. Confusing application layouts. Downloader’s remorse. These are a few of my least favorite things, and I’m sure your customers share similar sentiments. In our digital-centric world, applications have become the modern storefront for nearly every business. They’re expected to provide convenient services, perfectly and right now. This is […]

Culture, Engineering

Why Metrics Must Guide Your DevOps Initiative

Metrics-oriented thinking is key to continuous improvement – and a core tenant of any agile or DevOps philosophy. Metrics are factual and once agreed upon, these facts are used to drive discussions and methods. They also allow for a collaborative effort to execute decisions that contribute towards business outcomes. DevOps, although becoming a commonly used […]

Engineering

Top 3 Challenges of Adopting Microservices as Part of Your Cloud Migration

IDC estimates 60% of worldwide enterprises are migrating existing applications to the cloud. With the promise of greater flexibility, a reduction in overhead, and the potential for significant cost savings, it’s a logical decision. But instead of performing a “lift and shift,” – simply moving an existing application to a cloud platform – many businesses […]

Engineering

Three Productive Go Patterns to Put on Your Radar

By most definitions, with just 26 keywords, a terse spec, and a commitment to orthogonal features, Go is a simple language. Go programmers are expected to use the basic building blocks offered by the language to compose more complex abstractions. Over time, best-in-class solutions to frequently encountered problems tend to be discovered, shared, and replicated. […]