This new browser market share report is interesting. It is surprising to see Chrome at 5% already.
Archive for the ‘Company’ Category
Browser Market Share Report
Friday, February 5th, 2010Load Testing Ajax Slides Are Posted
Tuesday, October 20th, 2009The slides from our presentation at The Ajax Experience are now posted on SlideShare. Enjoy!
Testomatix will be presenting at “The AJAX Experience” conference in Boston
Tuesday, September 1st, 2009Eric Beland will be speaking on AJAX Load Testing Considerations at The AJAX Experience September 15th at 1:20. We hope to see you there!
Scaling Up vs Scaling Out at Stack Overflow
Saturday, August 1st, 2009
StackOverflow, a popular programming website, has posted their architecture and scaling approach for their website. Their blog post has some excellent scaling tips, especially if you’re running a Windows/.Net stack.
The blog post also raises an interesting point regarding scaling up vs. out. Scaling up, a.k.a. vertical scalability, involves adding more memory and CPUs to a machine to gain performance improvements. Scaling out, or horizontal scalability, involves adding more machines to a system or part of the system in order to gain performance.
In recent years, scaling up has gotten bad press, as it has finite limitations that prevent it from being used effectively by the biggest sites on the web, like Google and Facebook. There is a limit to the ram and CPUs you can add to a machine. In the case of Stack Overflow, however, they have been mainly using a scale up strategy. The reality is most sites don’t have a need to scale to Google or Facebook-size proportions–so the choice is not a binary scale up vs out decision. Additionally, some tiers in a web architecture are easier to scale horizontally. For example, adding web servers is often a fairly straightforward proposition. However, adding database server machines is usually more challenging, as in some cases you will be looking at sharding, breaking off some piece of functionality like reporting, or moving to a master-slave setup.
If you run an open source stack, scaling out is more practical, in general. Stack Overflow was built on a Windows/.Net foundation where licensing costs provide a natural incentive to look at scaling up first, rather than scaling out. One take-away, to my mind, is that scaling up is a cost effective solution at certain stages in the growth of a web application. Scaling a website is normally a gradual process of continually removing the next most-pressing bottleneck. If you look at the growth patterns of larger websites, most started by plucking low-hanging fruit–often this involves scaling up a bit–like adding more ram, or CPUs to your database machine. Eventually, if your site attains a VERY large size, the optimizations you make are likely to make your application more complicated, and less flexible, so you pay a maintenance and design penalty for those optimizations. For example, database sharding, a scaling out strategy, tends to be done in the very late stages of growth, and the reason is that it limits how effectively some queries can run, and even whether some queries are possible. Scaling up, however, does not pose these problems.
Scaling up is a strategy worth keeping in your toolbox. Even if your plan is mainly scaling out, adding more ram and CPU to the boxes you are scaling can make sense. There is no shame in scaling “diagonally” when the situation warrants it. When choosing an architecture, know that architectures that only scale up will eventually hit a wall if enough growth occurs. That doesn’t mean your site will see enough traffic to hit that wall, and it doesn’t mean that scaling out can’t be done later. Realistic capacity planning is important at this stage. There is no need design every app to reach Google-scale. Sometimes vertical scaling is plenty, and when it is, it can be very cost effective.
As an aside, and on the flipside, with the advent of cloud computing and virtualization, there is a certain extra appeal to tearing the cost of scaling free from the moorings of software license costs. An OSS approach, which avoids licensing fees, can make it very cost-effective to run a full-size test environment in the cloud, on-demand, for testing purposes. This can provide tremendous advantages when testing performance and experimenting with different configurations.
FireFox 3.5 Bug on Windows and “works on my machine”
Monday, July 13th, 2009
Last week, a bug was discovered in FireFox 3.5 on Windows machines. To help generate a random number, FireFox reads the garbage data from the temp files and cache folders to “seed” the random number generator. Internally, random numbers are used within FireFox for security-related encryption functions. Unfortunately, on Windows machines with large Internet Explorer Caches, or Temp folders, reading the data used to seed the random number generator can take up to 40 seconds, and FireFox is barely usable.
This problem was presumably unanticipated because the development machines did not have large Internet Explorer cache folders, because FireFox developers mostly use…FireFox! It is an unfortunate reality of software development that code which worked well in a development environment may fail in the real world, especially if it hasn’t been tested and vetted against real-world data and usage patterns. The only way to escape the “works on my machine” problem is thorough testing with real-world data.
The same principle applies to testing the performance characteristics of web applications. The test data and scenario must be as realistic as possible to avoid this type of problem. For example, many SQL queries are blindingly fast with 2,000 records in a database, but when there are 2 million records, those same queries may return their results shortly after pigs fly. SQL queries (typically joins) that scale exponentially are a common scenario that can run into this type of problem. Although it can be difficult to get right, the more realistic your testing, the less margin of error for surprises after release, so test environments must be built with a careful eye on realism.
Testomatix is on Twitter
Thursday, July 2nd, 2009Testomatix is now on Twitter. We’ll be posting our blog updates, as well as joining in discussions about load testing.
Twitter is an interesting place. Aside from being a walking case study on the need for load testing, it allows you to “have a conversation with the world” in a way that hasn’t existed in quite this way previously. We’re looking forward to participating in the world’s conversation about load and performance testing. See you there!
The kinds of spikes we haven’t seen before
Friday, June 26th, 2009
So, the unexpected passing of Michael Jackson has been causing quite a stir. An unintended consequence of this unfortunate story is that the people hit the Internet to confirm the rumors. They hit it hard, causing downtime at numerous web sites. (Arguably, an even less expected side effect of his passing is that when MJ brought down twitter, Iranians were unable to tweet about their ongoing revolt. Oh, Internet, how fragile you are…)
Is MJ’s departure a unique, record setting event? I doubt it. It’s part of a trend, and I think it’s going to become the norm. We all know that Internet usage hasn’t plateaued yet. In fact, once it does, that will be pretty big news. In the meantime, it continues to grow thanks to increasing connectivity, abundance of netbooks and mobile devices, innovation on the web itself and, of course, a growing awareness of the web’s ever-increasing utility.
Think of the DESIGN GOAL for IPv6: let’s make everything uniquely addressable. EVERYTHING. What were those mad men thinking? What could we possibly want to address? They were preparing for a technology-drenched future. Let’s pave the way for innovation, let’s address devices that don’t even exist yet. That will lead to an incredible increase in connectivity and overall network utility! More, cheaper devices, with new, unforeseen functionality! Everyone benefits.
But that’s just concept. In the meantime, mashup-based cross-pollination of web content is rapidly growing, and the trend is all up from here. That’s not just “people on the web” anymore, that’s people USING the web. This affects everyone. Can the pipes handle it? What’s the horse power behind your web app? If you don’t know, find out, because today’s traffic nightmare is going to be tomorrow’s drop in the bucket.
Omitting Load Testing In Your Release Process Creates Technical Debt
Wednesday, April 22nd, 2009
I previously worked at a company, let’s call it “Edutech” to protect the innocent, that had developed a variety of customer-facing web applications to open their financial information to colleges around the country. The data-center manager, a friend of mine, once told me that they had spent over a million dollars on hardware (machines, SAN, etc) scaling one of our web apps. This application only had to support around 250 concurrent users. I was shocked. Edutech went years without load testing this particular application, even though it was under constant development.
The compounded effect of years of quick and dirty development decisions meant scaling the application in its current form wasn’t possible without the costliest cutting-edge hardware. Previous development decisions had locked the app into approaches that worked effectively only at small scale. Fortunately for Edutech, the function the app provided was so valuable that throwing money and hardware at it was a viable strategy. Load testing was being introduced, as a practice, for the first time at this company that year, because the costs of scaling the application had finally pushed the needle to a point where upper management took note.
Testing is a crucial step in the software development cycle, yet it’s often given short shrift.
Technical debt, a concept proposed by Ward Cunningham, suggests that, like financial debt, a price must be paid later when quick and dirty decisions are made in the development process.
The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object oriented or otherwise.
When load testing is a part of your release process, you escape the compounding interest of technical debt. The moral is: test early, and test often.
Testomatix: An Introduction
Monday, March 2nd, 2009Web technologies have progressed a great deal since the 90s. As we near the end of a new decade, we can look back on the development of useful, complex interactive web applications built atop any number of powerful technology stacks. However, as the complexity of applications increases to ever greater heights, many remain too brittle for their own good.
Eric and I have been thinking about the emerging challenges of web application development for quite some time. We believe that technology is outpacing our ability to properly use it. When we noticed the problem, we founded Testomatix.
Our goal is to help people alleviate the pain of testing the scalability of modern web applications. For many such applications, scalability can be a major source of problems for as long as they remain in active development. It doesn’t help matters that scalability issues don’t get the attention they deserve until actual damage is done.
In many cases, scalability issues come up not due to poor architecture, but from unanticipated bottlenecks. Introducing redundancies, caching data, and optimizing the queries will often make quite a difference, but the crucial bottleneck that will hold your site back can remain unapparent until after-the-fact. Load testing helps you know beforehand.
In a complicated application, tackling every aspect of design on paper is not always comforting–one can never discount human error. Using live traffic is similarly unreliable, since it won’t be predictable and it certainly won’t be forgiving once a problem occurs. In practice, the best approach is often to implement the most promising design candidate and see how it fares under heavy stress.
At Testomatix, we feel that load testing is important and frequently overlooked. Too often, it’s a time consuming process requiring expensive hardware, costly licensing, difficult scripting and other headaches. We started Testomatix to fix that problem. Scaling your application shouldn’t be so difficult. With easy and intuitive load testing, it won’t be.
Email us your thoughts, questions, and suggestions!

