Open Source Web Site Performance Tools

Louis St-Amour wrote a very helpful comment on my “The Complete List of End-User Experience Monitoring Tools” post – helpful enough that I thought it deserved a whole post. OWA, indeed commonly means Outlook, so it’s kind of unfortunate naming clash, but in this case I’m referring to Open Web Analytics from http://www.openwebanalytics.com/ which has what it calls, “domstream recording”. This lets you see exactly what a user sees in their browser and where their mouse goes, though I’m not sure how embedded it is for performance timing or error catching. A similar feature is in piwik as a plugin, as I understand it. This brings up an interesting point that I heard a number of times at this year’s Velocity conference – when will web analytics start providing better web performance data?  Yes, I know that Google Analytics has a Site Speed Analytics Report – but that is just a start. PageSpeed is not just a Firefox/Chrome extension  It’s a web service now too! Seriously though, what I was referring to was mod_pagespeed, the Apache module, which beyond all its other fun goodies has an “instrumentation” feature that — you guessed it: measures “the time the client spends loading and rendering the page, and report that measurement back to the server”http://code.google.com/speed/page-speed/docs/filter-instrumentation-add.html Google helpfully mentions that their instrumentation feature is not needed if you already have one of your own and cites Boomerang, Episodes or Jiffy: – http://yahoo.github.com/boomerang/doc/ – http://stevesouders.com/episodes/paper.php – http://code.google.com/p/jiffy-web/ It is interesting that I have not found enterprises leverage these wonderful free tools (if you work for a large enterprise and use these tools – please comment!). I believe the main issue for enterprises is that there is a lot of work that one has to do in order to build a more complete solution from these free tools – a lot of it is around displaying the data in a meaningful way. Sampling is indeed the worst part about Google Analytics … sigh. Sampling is a big problem when it comes to identifying problems. I see a lot of the new free end user experience monitors which only sample end user response times. Thing is – it gives their marketing department what they need – but it leaves their customers guessing when problems arise. The reason problems with IT systems are so hard to catch is that they are typically erratic and unpredictable. Without a complete data set it becomes difficult to prioritize and troubleshoot. Also, I would suggest that “real end user experience” tracking is something you’d need to be Google Chrome to get. After all, as Google notes about its own filter: “Note that the data reported by this filter is only approximate and does not include time the client spends resolving your domain, opening a connection, and waiting for the first few bytes of HTML.” Of course, that’s where the highly technical Speed Tracer comes in http://code.google.com/webtoolkit/speedtracer/ I agree that most vendors do not do “real end user experience tracking” – they typically only track the datacenter’s contribution in an accurate way. So that is definitely something to look out for – especially if the applications you are responsible for serve company employees. Often times just being able to identify that a slow desktop is the reason a user is unhappy can go a long way. Are there any other Web Site Performance tools worth mentioning? Please leave me a comment and I will add it to the...

read more

Applying APM in a Big Data World (Part 2)

In part one of my look at applying application performance monitoring in a big data environment, we examined how nonrelational databases work and what unique challenges they present to traditional application performance monitoring tools. Because of their non-ACID approach, I argued, application performance metrics become very complex in a system where the business transaction itself has a expected non-zero but small probability of failing. So how can you apply APM in a big data world? The first part of the problem is applying the right kind of tool. By their nature, big data environments are often very complex because all of the layers (data storage, network controllers, and application servers) have to be scaled up to contend with delivering data back and forth in a manner that approximates a reasonable amount of time. “Reasonable” in this case, is something like bazillion-record data searches in subseconds. Not to mention how these environments must be scaled out. As more data is added, more machines have to be added to the environment, data repartitioned, application servers reorganized… the works. Proper application performance monitoring must therefore be able to contend with all of the changing levels of a big data environment, because targeting the application alone is not going to cut it. End to end monitoring that scales along with the given environment is an absolute necessity, because otherwise your application data will never truly reflect what’s going on. The solution must also deal with an environment that doesn’t preclude multiple applications. It’s never going to be just one application working to deliver a particular service: it will often be many applications working in concert. Like an orchestra conductor who can tell when a particular instrument is out of tune, a properly deployed APM solution must be able to “hear” the bad note in a complex symphony of cloud and data center systems. Big data, more than anything, is why business transaction monitoring is so important. Tracking the transaction as it moves through such environments, and seeing how it touches all the different applications and systems along the way is the best way to determine application performance. If a problem occurs, it will sound that bad note, a clunk that you can zero in on and fix. All of this has to be done while being able to scale and not sticking a performance hit on the environment, which is certainly a tall order. The problem is expected to be more complex, not less, as more and more businesses enter the online business market, but it’s a challenge that APM vendors are rising to meet every...

read more

Applying APM in a Big Data World (Part 1)

A recent conference for open source software developers included a full fledged subconference that dealt primarily with the issues of big data: OSCON Data. And no wonder–the process of dealing with millions and billions of data records is performed by mostly open source software tools. Big data is an inevitable outgrowth of Software as a Service (SaaS). As more and more SaaS services are launched, the data being exchanged expands exponentially. A February IDC report, “The Big Deal About Big Data,” estimates that data use in the next decade will amount to 35.2 zettabytes. One zettabyte, by the way, equals 1,009,511,627,776 gigabytes. In other words, a lot. To tackle the challenge of managing big data, traditional databases are often not up to the task. Instead, non-relational databases are often deployed. This class of database is often referred to as NoSQL databases. It’s not that NoSQL databases don’t have Structured Query Language (SQL) it’s just that they don’t use a standard query language, so they can use whatever they want–including SQL. Other differentiators of NoSQL databases is that they all have their own APIs, and somewhat alarmingly to anyone unfamiliar with NoSQL concepts, “they are not the most scalable, simple, or flexible databases around.” None of these features may initially make for compelling selling points: varied query languages and APIs, and a confirmed admittance that non-relational databases may not be the best at all of the qualities typically associated with a “good” database. But there’s something else going on here that quickly makes you realize where the benefits of non-relational databases truly lie. The key is the notion of being the best at everything. That’s not what non-relational databases are about. To understand this statement, one must step back and see the broader theorem that dictates the infrastructure of relational databases: ACID (Atomic, Consistent, Isolated, and Durable), which are core aspects that must apply to all data within a relational database. Data is broken down to atomic values (name, address_1, city…) while remaining consistent across the database, isolated from other transactions until the current transaction is finished, and durable in the sense that the data should never be lost. The infrastructure of a relational database is well-suited to meet this criteria for data: data is held in tables connected by relational algebra. But in a nonrelational, NoSQL database, at least one or more of these ACID criteria are dropped. One of the biggest objections organizations might have against NoSQL databases hinges on this approach. They aren’t willing to make a move to NoSQL because they can’t give up ACID. Particularly the “C,” because not having data consistency is a terrifying prospect for any company dealing with financial transactions. Which is just about everyone. Yet non-relational databases are being used by firms like Amazon and Google every day, with great success. Amazon, in particular, needs to track millions of transactions on any given day–so how do they get away with inconsistent data? The simple truth is, they almost have to. The trade-off would be a relational database that could never keep up with the speed and scaling necessary to make a company like Amazon work as it does now. Recall that non-relational databases are structured to sacrifice some aspect of ACID to gain something in return. In the case of Amazon, their proprietary non-relational Dynamo database is willing to apply an “eventually consistent” approach to their data in order to gain speed and uptime for their system when a database server somewhere goes down. Here’s an example of how this would work for Amazon and similar web services. Books, for example...

read more

Application Performance Management is a Big Business Getting Bigger

If you doubt that application performance monitoring is gaining traction in the IT world, a recent Software as a Service (SaaS) system management sector ranking should dispel that idea. According to IDC’s “Worldwide System Management Software-as-a-Service 2011-2015 Forecast and 2010 Vendor Shares” report, the application performance monitoring unit of Compuware ranked third behind HP and IBM as an SaaS vendor, with a revenue of $49 million. Application performance monitoring is becoming recognized more and more as an indispensible tool in the IT manager’s toolbelt, and is almost a $6 billion market on its own. Recent moves in the APM sector certainly reflect that. In July, Compuware paid $256 million to pick up APM developer DynaTrace Software, spending big on a company that pulled in $26 million over the prior 12 months. As the month drew to a close, CA Technologies snapped up subscription-based monitoring company WatchMouse for an undisclosed amount. The demand for end user experience monitoring and business transaction management appears to be growing, and big companies like CA and Compuware are trying to take advantage. Application performance is tied driectly into all the things that makes a customer’s business transaction positive, affecting the bottom line through revenue, brand value, and overall customer loyalty. APM is becoming increasingly important as SaaS growth is exploding, and along with it the user of cloud computing and mobile applications. That means that the primary user of business software is no longer the internal employee. At least, not solely. Your most important user can be the visitor on your web site, and if a poor application experience is the difference between a sale or no sale, APM can help tip the scales in your favor. IT departments are starting to catch on, which is why we’re seeing all these big moves in the APM sector, and we are likely to see more similar moves in the...

read more

You Can’t Fix What You Don’t Understand

There’s a great little theatrical bit we see in movies and television: someone starts up a complex machine, the machine falters, then the device gets slapped and works perfectly. Executions of this bit have been done to great comedic effect, such as Han Solo’s punching a console on board the Millennium Falcon in The Empire Strikes Back or the Fonz’s mastery of the jukebox and other machines with a single blow in the 70’s sitcom Happy Days. This sort of thing goes on all the time in real life, too. A big part of our human nature is the (completely wrongheaded) notion that we have absolute control over the things in our lives. But machinery, above all else, breaks. Be it hardware or software, nothing is every perfectly executed, and something will go wrong. Hitting the object in question is just a symptom of our misperception that we can force the universe to do our bidding. Clearly, this approach is non-optimal. A better approach, then, is to tell someone who can fix the problem about what’s going on. We call the IT guys when something isn’t working right, tell them what’s wrong, and they fix it. In many cases, this a straightforward operation: the problem is clear and thus so is the solution. But increasingly the problem is not clear, so solutions are harder to find. They say the devil is in the details, and that’s certainly true in the modern complexity of IT environments. An app is running slow, the user reports. So where’s the problem? The server? The network? The client machine? Or is it the app itself? With so many layers for data to navigate, it can be very difficult to pin down the actual cause. Monitoring solutions are one way to narrow this down. If you’re running a network monitoring solution, for instance, you can pretty much rule out (or in) the network as a cause for the slow-down. The same holds for application performance monitoring; keep an eye on the application, and you can see if and where things go awry. But there is a cautionary to be stated here: monitoring is all well and good, but interpreting the data is even more important. A blinking light signals trouble, but what does that mean? This is why it’s also critical to frame the discussion in terms of transactions. If you can properly implement business transaction management tools, then you can track transactions as they move through your complex IT environment. Another complimentary approach is end user experience monitoring. What is the end user doing at their end? This can spot user error and even critical design flaws in the application that are holding things back. We can’t really hit something to make it start working, as much as that would be very satisfying. Understanding is the key to problem solving, and proper monitoring is the key to...

read more