Building cool apps and websites requires testing them before they go live. But simulating real Web traffic is hard even for the biggest Internet companies.
That’s because, on top of the infrastructure you’re building for yourself, you need to build a parallel test environment—and virtual simulacra of the swarms of users you hope to attract.
Here Comes The Cloud
This kind of challenge is ideal for cloud-computing services, which let you rent out server capacity on demand and shape it to your needs—and then discard all those virtual machines when you’re done.
This year’s wave of price cuts by Google, Microsoft, and Amazon also made it more affordable than ever to test your apps in the cloud before you release them on the world. But which tool is right for the job?
One intriguing possibility is Google itself, since it engages in a lot of testing of its own services and has developed tools for its hundreds of performance engineers.
“We are looking at how we can make [large-scale testing] available to external customers,” Brad Abrams, a Google developer experience lead, told ReadWrite. There’s no release date planned, but it’s pretty clear how Google could be helpful: Its data centers around the world could easily simulate a wave of global traffic.
For now, testers looking to tap into Google’s power will have to roll their own testing environments, which they can do using Google’s App Engine and Compute Engine products, which form part of Google’s answer to AWS. Compute Engine allows customers to launch up to 100 virtual machines in less than a minute to deal with spikes in Web traffic. That fast launch could also be useful in testing environments. There’s a Google Compute Engine implementation of JMeter, an open-source load-testing tool, on GitHub. There are others, like Locust and Curl Loader.
Amazon Web Services has some third-party testing tools, like the cleverly named Bees with Machine Guns, specifically designed for it.
Facing The Ultimate Traffic Test
Even for Twitter, testing at scale isn’t easy. In its early life, the message-broadcasting service was infamous for crashing under heavy loads as it grew quickly. In 2012, the company built its own tool, called Iago. James Waldrop, a Twitter performance engineer, discussed Iago’s creation in a presentation at the 2013 Google Test Automation Conference. Iago, an open-source project, is used to test the more than 120 services that run Twitter. It’s particularly designed to test application programming interfaces—the services that form vital connections between pieces of software, whose failure can lead to website and app outages.
While Iago helped Twitter tame the fail whale, that infamous symbol of its frequent outages, but it’s not a cure-all. Iago couldn’t prevent another site crash in early 2014 when a tweet by Oscars host Ellen DeGeneres was retweeted millions of times during the show’s broadcast. Tim Hinds, a marketing manager at Neotys, a load-testing service, speculated that her tweet may have brought down the service because it contained an image, a condition Twitter may not have tested for. (Twitter did not respond to a request for comment.)
Here’s Waldrop’s presentation:
Google To The Rescue?
In his presentation, Twitter’s Waldrop claimed that Twitter had 900 performance engineers. (A Google spokesperson would not confirm or deny that number.) Whatever the exact number, it’s clear that Google has a lot of in-house expertise on testing Web services at scale.
A testing service would complete the suite of cloud services Google offers. Developers and businesses who build, host and deploy apps and websites with Google’s suite of tools could make sure they’re ready for prime time, too.
“If we could get the same tools Google uses to do its own development, that would be ideal,” David Hardwick, CTO of BetterCloud said. BetterCloud makes FlashPanel, a tool for administering and securing Google Apps business accounts. It also uses some of Google’s cloud services.
Specifically, Hardwick said he was excited about the prospect of Google’s internal use of parallel compute power becoming available to the public for tasks like development testing.
“If we can throw more compute power at things like simulated browser testing, we could run multiple tests at the same time,” Hardwick said.
It’s not unprecedented: Google already offers a testing suite for Android apps, though that’s focused on making sure they run well on smartphones and tablets, not testing the cloud-based services they connect to. If Google added testing services for the websites and services those apps connect to, it would have an end-to-end lock on developing for both the Web and mobile.
Photo by by Anthony Myers: Google’s Urs Hölzle (center) discusses Google’s cloud tools