‘Perfection would be a fatal flaw for evolution’
In technology, as in life, everything evolves, grows, develops, mutates and eventually goes away, being replaced with improved versions. In the past several years, application development evolved and applications have come to play a more centric part of many businesses, even those that traditionally were not software players. (Walmart’s sophisticated inventory management software is a good example of this.)
Several of the drivers that contributed to the evolution of application development have, at the same time, increased application complexity.
- Cloud – while simplifying the development, deployment and economy of scale of applications, the use of the cloud also added a range of elements that didn’t exist before (variable amount of servers, elasticity, PaaS, etc.) and at the same time reduced development’s visibility into application performance and their ability to replicate and troubleshoot issues.
- Agile development – the ever-increasing demand for new features has created the need for agile development. Agile increases the velocity and number of application releases. Resulting in application instability and more bugs which, in turn, drove quick fixes, reduced documentation and reduced control.
- Outsourcing – utilizing teams of developers worldwide has created cost-effective ways to speed up development. It has also decentralized an organization’s ability to easily troubleshoot problems. Today’s complex applications have many different components working in parallel requiring many different types of expertise to keep them working as designed. As companies can’t afford to keep unnecessary people on staff they are expecting the developers to be more involved and the management tools they are using to become more intelligent.
The evolution of applications has also drove the necessary evolution of application monitoring tools that provide details to assist with identifying, defining, detailing, and troubleshooting application issues.
1st Generation – Watching Infrastructure
In the early stages of server/client application, application monitoring really focused on infrastructure monitoring. Servers uptime, server load, network equipment, and storage. Important logs and errors were simply dumped to text files. When an issue occurred, the operation or support engineer had to view the data in tools like excel or notepad and analyze it manually in order to understand the root cause of an issue.
2nd Generation – Gathering Information
The second generation of application monitoring tools came with the creation of many point tools – each answering a different need that was not covered by traditional monitoring tools, among them you can find log management tools, error aggregation tools, notification tools, APM (Application Performance Management) tools, website monitoring tools, transaction monitoring tools and many others. With this generation an engineer or support manager could get a lot more info than in the first generation and a lot faster. However, trying to correlate problems and train an entire IT team on these all tools is a daunting task.
Acquiring all of these tools can easily cost thousands of dollars of month even for small IT projects. Deploying, supporting, and maintaining these tools also requires a lot of time by already busy system administrators.
But even if we look past costs, the end result is ‘death by tools’ where, with so many tools, when something happens, it is very hard to use all the capabilities of the many tools at hand and engineers are retreating to the simple ‘notepad’ methods.
3rd Generation – Contextual Intelligence
These second generation issues were the trigger for the third generation of application monitoring, that not only unify all the point products into an integrated platform, so there is no need for point products, but be application-aware enough to also correlate the information collected to provide context and intelligence around not just what happened and when, but where, how often and the elusive why.
It’s important to note that in earlier generations of monitoring, it’s the operations engineer, and not the application developer, that has access to the infrastructure, monitoring tools and the resulting monitoring data. Supporting today’s complex and ever changing web applications requires developers to be much more involved in application support. This drives the need for 3rd generation solutions to serve both operations and development teams.
Getting to Contextual Intelligence
As logs, errors, app performance, server performance, database performance, and custom app metrics are becoming integrated and ‘aware’ of each other, the users of these 3rd gen platforms can now get a more complete picture.
Application errors no longer need to be only a few lines with limited information, but rather can be seen as a collection of the error itself, log data, stack traces, web requests, process data, headers, relevant variables affected, and server performance metrics at the time of the error – all giving a more complete picture to developers and making issue diagnostics faster and more efficient.
For example, in the past, server load may or may not have been easily correlated to an issue with, say, web page performance. With an app aware platform, it is easier to see that these things are tied together and happen at the same time, making time-to-resolution shorter. You can read more about a company that used next gen monitoring to improve their application and customer satisfaction here
Until now, the evolution of application development has historically outpaced an organization’s ability to support and troubleshoot those very same applications. Stackify is proud to lead the application support evolution and continue innovating to help today’s operations and development teams.
- KC-Based Stackify Is Growing Fast, Hiring Too - December 10, 2019
- Fast-growing Leawood tech company rounds up local investors for $6M raise - December 5, 2019
- More than a podcast host: Matt Watson’s Stackify raises $6M in rapid scaling maneuver - November 25, 2019
- What are Microservices? Code Examples, Best Practices, Tutorials and More - September 13, 2019
- 9 Best Practices to Handle Exceptions in Java - August 22, 2019