Introduction to Spring Insight

What Is Spring Insight?

Spring Insight answers the question "What just happened?" It is a SpringSource Web application that gives you real-time visibility into application behavior and performance.

In development and testing stages, developers can use Spring Insight to verify immediately whether their newly-written code is behaving as designed. QA engineers can pinpoint specific causes for "what just happened" and relay detailed information to developers.

Stress testing an application typically tells you which URL areas are slow. By combining Spring Insight with your existing tools (such as JMeter), you can see not only which URLs are slow, but why, thus accelerating your time to production.

The following topics discuss specific use cases:

Agile Development

Web application developers realize a massive increase in productivity when they can make changes and see the effect immediately. Typically, a developer makes changes to HTML or JSP and reloads the browser to verify that the modified application performs as desired. However, developers often lack a centralized tool that shows how their changes affect:

Large, popular frameworks such as Hibernate and Spring Web push much of the code that developers formerly wrote manually into a convenient library. This process saves time and improves maintainability. The downside is relinquishing control, which means that the developer may not know exactly what is going on behind the scenes:

The Spring Insight Trace view solves these problems. It allows developers to make changes and verify their effectiveness immediately.

QA Rear View Mirror

Spring Insight gives QA a richer picture of an application's performance, eliminating much of the work required to diagnose problems. As QA tests an application, typical problems include:

As these problems arise, QA engineers can browse to the Spring Insight dashboard and review all recent operations. They can access in-depth information that helps them track down bugs:

QA forwards this information to the developer, thus improving the turnaround time for identifying and resolving root causes.

Load and Performance Testing

Web applications must be loaded and stressed before being deployed in a production setting. Spring Insight works with your existing load-testing tools to answer two main questions:

After running a load test, Spring Insight displays a breakdown of all requests to Spring Web. It shows you:

Using this information, you can drill down to specific information about why a request was slow:

The request trace information that you access in the Trace view is also available when you analyze a performance test.

How Does Spring Insight Work?

Spring Insight is a lean framework that keeps developer requirements to a minimum. Developers can deploy a native application to a Spring Insight-enabled tc Server instance and immediately see diagnostics. There is no database to set up, no instrumentation to perform.

Spring Insight captures application events known as traces. A trace represents a thread of execution. It is usually started by an HTTP request but can also be started by a background job. A trace contains operations. Each operation represents a significant point in the execution of the trace, for example, a JDBC query or transaction commit.

Using this data,Spring Insight calculates summary information to lead you to the specifics of why your application is not performing.

Spring Insight uses AspectJ to snoop on operations in target web applications. Target web applications are loaded with a special classloader that dynamically instruments web applications at runtime. Spring Insight currently keeps its data in memory. It does not use an external database or write any data to disk. It uses sophisticated algorithms to keep the memory footprint low. Spring Insight-enabled servers require more memory (-Xmx) than a standard server.

Supported Environments

Spring Insight runs in environments with a Java 5 or Java 6 JVM. Spring recommends Java 6 for the best experience and will alert you to any differences that arise between Java 5 and Java 6. Most portability issues surface when you change JVMs and/or when you change browsers. For this preview release Spring has tested the following environments:

These environments should work well, but Spring welcomes feedback from anyone who tries out the preview on other configurations.