Can you imagine a world where you have a single, centrally managed, platform instrumenting and collecting data from your whole IT landscape in real-time? Allowing you to troubleshoot issues, analyze their business impact, and even track the flow of business operations (order shipments, transaction settlements, phone line installations, etc.) in real time? We can at AppDynamics, which is why we have adopted the “Application Intelligence Platform” moniker.
The breadth and depth of this vision is a perfect illustration of how far we have come from our genesis as merely just a Java performance troubleshooting solution.
Of course, the world is not just composed of Java, which is why we now support heterogeneous applications composed of not only Java code, but also any combination of .NET, PHP, C++, and Node.js.
This composition of supported runtimes covers the majority of modern (post Y2K) application platforms large enterprise environments use, where the biggest challenges exist. However, of course, the technology landscape in most business environments has magnified over the decades, not been built anew since Java roamed the earth, which takes me back to my past…
So, what is Tuxedo, then?
Today, if you want to write an application that serves a user base of any size, you wouldn’t hesitate to put it into an application runtime of some sort (a Java app server, or a plugin to a web server for PHP, .NET or Node.js). Since this takes care of a lot of the issues raised by multiplexing a single application between multiple users, and provides facilities for things like database connection pooling on the back end.
Back in the 90s, however, there was no such thing as an app server. Mainframe applications were coded in assembler and COBOL and had TP Monitors like CICS to provide these capabilities. UNIX applications were implemented in C for the most part but had to reinvent all these non-functional wheels every time (or used a 2-tier architecture with a fat client connected directly to a database, an approach which scales very poorly as the application user population grows).
In a nutshell, Tuxedo is an application server which allows you to write C/C++ or COBOL applications on UNIX (or Windows). Until the dot-com boom swept Java to pre-eminence, it was the only game in town for creating scalable UNIX based applications. Many people today are Tuxedo users without even realizing. Use PeopleSoft? Clarify? Amdocs? To name a few. All of these packaged apps have Java application server based web-facing tiers, but a large proportion of the application logic is implemented in Tuxedo-based back-end services.
So, the net of this is that many “complex, distributed, modern (post 1990) applications” use Tuxedo to provide the necessary distribution and other runtime services.
Now for the good news
One piece of news announced at AppSphere is that AppDynamics have just gone into beta with support for a new application runtime, C/C++ on Linux or Windows. Moreover, our approach allows instrumentation of C/C++ applications purely via configuration, not requiring development time code-changes or application rebuilds. The only tool that can boast this. Although an SDK is also available, so you can hand-instrument the application code if you are feeling “old-school”.
Now for the better news
The better news still is that since the constraints Tuxedo imposes on the applications using it means there are a well-known set of APIs that can be used to identify transactions entering a Tuxedo environment and trace them through it, the configuration is near identical for all Tuxedo applications.
So, what next?
To cut a long story short, AppDynamics now provides the capability to trace transactions end-to-end across a hybrid Java / Tuxedo environment. In the next article, I will present a simple demo application and walk step-by-step through what’s required to achieve this feat, without a introducing any AppDynamics dependencies into the application code!