olly - Fotolia
Natasha Litt, software engineer for New Relic Inc., a San Francisco-based software analytics and application performance monitoring software provider; Jeremy Steinert, DevOps practice lead at cloud consulting firm WSM, based in St. Clair Shores, Mich.; and Greg Sypolt, senior software engineer at Gannett -- USA Today Network and co-founder of Quality Element, a QA consulting firm, share their app sandbox environments.
Litt's sandbox: Docker containers and Dogestry
Litt took a deep dive into Docker containers last year, so her application sandbox environment has been docked there, ahem, for a while. Now, she's exploring Dogestry for storing Docker images in Amazon Simple Storage Service (S3). A Docker Registry alternative, Dogestry was created and open sourced by New Relic. Open source Docker Registry is a server-side app for storing and distributing Docker images.
"I'm tinkering around with improving, pushing them and pulling them from S3, so you can see more easily what you've stored in S3," Litt said. "It's basically your own registry, without having to go to a Docker Hub or a key dot I/O. So, I'm tinkering around with how we can make that tool better."
Natasha Littsoftware engineer for New Relic
Litt is exploring storage options so that her SQL dump tool support session variables support large file extraction. "One goal is that when you have a really large file to extract from a database, you can set a variable that lets you have a longer timeout," she said. "And that applies to just you, and not all the rest of the users of the data."
By the way, Dogestry is named for the Doge meme. Of course, you knew that already, right?
Knowing his way around the JS stack is critical to working successfully with NodeJS on the server side, AngularJS on the front end, and test framework and tools, such as Jasmine and Protractor. "Along the learning journey, I will be thinking how to build out the testing architecture for Protractor, responsive testing and Web performance testing," Sypolt said.
Sypolt is researching Web performance testing tools -- including PhantomJS, BrowserMob and YSlow -- as a means to implementing mobile-first strategies. "As we begin the journey of rewriting the front-end app for desktop and mobile Web to be a single platform that is responsive, we need tools or technologies that allow us to monitor and measure the app performance from different breakpoints," he said.
Next on Sypolt's agenda is learning new ways to improve a mobile continuous integration (CI) pipeline. His goal is expand beyond only using simulators in a CI pipeline. "The plan is to continue working with Amazon Web Services Device Farm to execute our Android Espresso and iOS EarlGrey tests across multiple real devices and [operating system] versions as part of our CI pipeline," he said.
Steinert's sandbox: Vagrant, Jenkins and Load Impact
Steinert takes a traditional path, using his go-to tools in his sandbox environment to test application iterations and cloud implementations. "My sandbox typically includes Vagrant, to manage local development servers; Jenkins, to automate application testing and deployment; and Load Impact, for automated performance testing," he said.
Testing inside a sandbox has grown in importance, as iterative development and multicloud deployments have become popular.
Sandbox testing is beneficial for cloud and multicloud systems, because application, data and other components are always in motion, Steinert noted.
In iterative development, developers often are building on the work that others have done, or reusing general purposes code to handle certain requirements of an application. "When you're building on the work of others, there are opportunities to be inspired by something great or hindered by something poor," he said. Using others' in good faith is a bad idea.
In sandbox testing, Steinert often finds in previous developers' work inconsistent usage of tools and methodologies. Typically, Steinert writes in Ruby, and uses a standard set of tools and libraries; some are only used in development, others only in production.
"These days, a lot of developers are using third-party libraries or tools in some way as part of their development or codebase," Steinert said. "I find surprises or deal breakers in those third-party libraries."
In some sandbox tests, a library Steinert expects to work in one way ends up having a large, negative performance impact. So, he must remove the library and find another option. At other times, "I've found a brilliant piece of code that inspires me to refactor something I've done."
What's in your sandbox?
A modern fact of life, the demand for rapid deployment of new applications and technologies, makes application sandboxing a necessary practice, according to these software engineers. Constant change in tools already in his toolbox leads Sypolt to refresh his know-how on one tool, while learning about a new-to-him complementary technology. A new project that requires streamlined development and deployment spurred Litt to sandbox Docker. Steinert turns to sandboxing to find, and not perpetuate, mistakes in iterative development.
So, developers, what's in your sandbox?
Editor's note: Additional reporting was done by Joel Shore.
Complicating app performance optimization
How software performance testing can be eased
The daily app performance testing work