Moving from a traditional, on-premises data center to a modern, multiprovider hybrid cloud-based operation may reduce IT spending, but that very fragmentation of services into a multicloud scenario complicates the process of application performance optimization.
Today, it is common for even a single application to draw data from multiple sources and providers in true multicloud fashion. A trucking company's fleet management system is likely to incorporate its own proprietary files along with subscription-based, third-party data, such as weather, vehicle GPS positioning and highway traffic conditions -- all accessed via API calls. Similarly, applications to manage order-driven, factory-floor production could call on an in-house customer order database, customer relationship data stored in Salesforce and just-in-time raw materials scheduling from multiple sources.
One challenge in testing a multifaceted, multicloud system is its cloud-based constituent parts are always in motion, according Jeremy Steinert, DevOps practice lead at WSM International, a St. Clair Shores, Mich., cloud consultancy specializing in application migration. "A lot of development these days is iterative, building on the work that others have done or reusing general-purpose code to handle certain requirements of an application," he said. It is those iterations -- driven by continually changing business requirements -- that complicate end-to-end testing.
Just as evolving business requirements complicate application performance optimization, so do communications. "Developers need to understand the network environment they're writing to," said Chris Kozup, a vice president at Aruba Networks, a Sunnyvale, Calif., subsidiary of Hewlett Packard Enterprise that builds infrastructure products and management tools for wireless computing. "One aspect of application performance optimization that's often overlooked is that you need to build apps that can anticipate and deal with interrupted communications." Any app that suddenly loses communications in mid-transaction must know how to react, he added.
Chris Kozupvice president, Aruba Networks
Kozup's point is reinforced in a list of optimization techniques published by NGINX Inc., a San Francisco-based provider of application delivery tools. The company recommends monitoring live activity to detect servers that are down, dropping connections or suffering from cache errors. Regardless of the technology or cloud platform providers being used, management of cloud environments should underlie every IT organization's application performance optimization efforts.
Once infrastructure woes are eliminated, finding the source of performance issues usually requires looking deeper within an application's coding, according to Abner Germanow, a senior director at New Relic Inc., a provider of performance testing tools based in San Francisco.
At the Royal Opera House in London, maintaining high application availability and performance means bringing forth a more perfect union of separate technology stacks for CTO Joe McFadden.
"Competition can be fierce among our patrons looking to purchase tickets to attend performances at the Royal Opera House, and their experience is almost entirely reliant on the performance and availability of our website," McFadden said. "The application is effectively two technology stacks -- .NET and PHP -- made up of a mix of hosted technology and services, and scales with Amazon Web Services." McFadden's team uses tools from New Relic to create a single, coherent view into different parts of the overall architecture. "This delivers end-to-end insights into the transactional journey," McFadden said.
The changing nature of IT from separate application development and operations teams to a DevOps world, in which the lines of responsibility often blur, can also lead to inadvertent performance problems.
"The mistake people make is the lack of monitoring and the cultural historical bias against watching software in real time," Germanow said. In other words, the old model of developers writing code and operations worrying about how well that code runs is largely obsolete. "Accountability and responsibility for how an app is written and how it runs is everyone's responsibility."
Use Java inheritance to optimize app development
Business service management can help optimize app performance
Organize application testing and ALM strategies