Yoel Spotts


Yoel Spotts is a Senior Software Engineer at Travel Syndication Technology (TST), based in Atlanta. Holding degrees in Computer Science and Talmudic Law, he has over 15 years of programming experience, primarily in the Java world. When not building software, Yoel enjoys teaching, hiking and spending time with his family.

Testing Large-Scale Distributed Applications in the Cloud

The cloud has found a home for many uses, with lower costs and ease of administration as the main selling points. Yet there are still untapped possibilities for the cloud, including one overlooked area where the cloud can shine: testing. At Nexidia, we develop a large scale phonetic analytics framework, performing computational intensive operations across a cluster of servers, utilizing a MapReduce like strategy. This cluster can be as small as a single node, or as large as the needs demand. Testing large scale deployments in house has proven a real challenge; even with an unlimited budget, we cannot possibly anticipate all our future hardware requirements. The cloud has proven to be an excellent answer to this problem. With AWS (Amazon Web Services), we have developed a full automated testing harness in the cloud. This tool utilizes several of the AWS offerings:

  • EC2 provides the server instances to create deployments of (almost) any cluster size and server
    instance type.
  • Custom AMI images, from which the instances are spawned, contain the bootstrap app
    responsible for application installation and configuration upon instance initialization.
  • S3 storage hosts the test data.
  • Notifications are passed from and to the cluster via SQS.
  • VPC offers a private cloud, thus securing the cluster deployment.

Costs are kept in check, as the server instances are terminated as soon as the test case is complete. Testing in the cloud allows us to explore corner cases, find bottlenecks in the application framework and helps us form recommendations and best practices for our clients. Along the way, we have learnt many lessons about the cloud, AWS, and testing in general. This presentation aims to educate and inform anyone looking to the cloud for testing possibilities.