A primer on service and network virtualization
Service and network virtualization represents the future of enterprise business applications. As we'll explore, it's the only viable solution that can adequately handle mobile applications while realistically emulating the dynamic environments in which they're accessed.
The new rules of enterprise application development
Enterprise business applications have changed—forever.
A few short years ago, organizations could afford to offer limited or no mobile business services, develop applications at their own pace, and not worry about the complexity of mobile environments and interconnected services.
Those days are over, and they've been replaced by the age of mobile-based business service applications, new user expectations, and a push for agile development practices.
Rather than relying on locally hosted programs, mobile apps typically run on a cloud server infrastructure. This means IT and development teams no longer have complete control—they're effectively at the mercy of these new technologies.
At the same time, end users are relying on mobile apps more than ever, and they have strong expectations about app performance. In fact, end users expect mobile apps to provide faster solutions than their desktop apps, despite the fact that an almost unlimited variety of circumstances can (and do) hinder that performance.
These changes have created a strong need for a new development methodology: agile development. Agile development has numerous benefits, including faster time to market, better iteration, and more diligent testing. To achieve this, it utilizes parallel processes, so each stage of development essentially occurs in tandem.
Even when agile development is employed, the increased complexity of mobile solutions and cloud computing provide nearly infinite ways for things to go wrong. Testing in a vacuum without replicating the complex conditions of cloud environments is no longer an option. To engage the end user, organizations must vet their applications in an accurate, real-world, cloud-based environment.
Service and network virtualization provides organizations with the tools to develop, test, and optimize their applications under actual user conditions. When used strategically, this provides organizations with the insight they need to create applications their end users will love.
Simple transaction, global implications
Even the simplest mobile transaction requires a baffling degree of complexity.
Imagine that you want to purchase a pair of shoes. You begin by browsing the mobile website of Zappos.com. You share your top choices with a style-savvy friend. You determine which pair of shoes you prefer, and you purchase the product right on your mobile device.
While this transaction may appear simple—and it occurs every day—it actually travels the world several times. If you made the purchase from your phone in New York, it might travel to Zappos' server in Nevada, then on to the fulfillment center in Kentucky, while the order is being manufactured in Indonesia.
Needless to say, such transactions are based on a complex process, with a vast and interrelated infrastructure. Even a few milliseconds of extra time among these numerous steps could translate to a rejected user experience—the shopping cart is abandoned and the sale is never made. If third-party resources were utilized in any given step, those resources may pull from equally distributed systems, and further slow the process.
As we know, distributed hosting environments require a greater degree of testing. To be successful, stakeholders at every step of the delivery chain must adhere to clearly defined service-level objectives (SLOs). Companies that fail to embed such accountability into their development process run the risk of alienating users—and potentially never getting a second chance at the sale.
Enhancing the development and testing process
Despite the complexity that mobile applications introduce into the development process, end users demand nothing less than reliable, unlimited access to all critical information in the form of well-functioning mobile applications.
Clear SLOs create the accountability necessary to manage the complex and distributed nature of these programs. Agile development is another key component in creating first-rate user experiences in a cloud-hosted mobile environment.
In contrast to traditional app development, agile development calls for shorter development and feedback cycles and continuous testing at every stage. It centers around parallel processes, which enable each team to work simultaneously on their portion of the chain. Used together, these strategies become essential in iterating applications to perform to requirements.
While employing agile development, applications can be efficiently divided into sub-components based on their service function. Services may have applications themselves or components of those applications that interface remotely with other applications. Web services may be referred to as Simple Object Access Protocol (SOAP), or Representational State Transfer (REST), and typically employ HyperText Transfer Protocol (HTTP).
Services of this kind are frequently integrated with and among a variety of applications, preventing development teams from having to build applications from the ground up—a major savings in time and budget.
However, there are limitations to consider. In a mobile environment, these services are subject to the network constraints of the user's environment. Unfortunately, even simple network delays due to bandwidth or latency can translate into a deal-breaking user experience.
Thankfully, there's a solution to combat these problems: service virtualization.
Benefits of service virtualization
The distributed nature of enterprise applications can create challenging issues that are difficult to accurately test. Nevertheless, it has never been more important to rigorously test applications for exactly these sorts of contingencies.
Today's organizations need testing tools allowing them to vet inter-application dependencies early on, to prevent budget-blowing problems during production.
Successful developers are now forced to tackle the issue of service availability. Exhaustively testing critical business services can be both time-consuming and costly, but failing to do so presents even greater problems—including the threat of passing false positives through testing and into production. Manual fixes such as method stubbing may provide momentary fixes but are inadequate for dealing with composite applications under dynamic conditions.
Service virtualization eliminates this problem by providing an interface that allows for control over virtual testing conditions. Instead of employing costly redundant environments, services may be tested virtually, regardless of their availability in real time.
These virtual simulations can be tested for nearly any contingency, again and again, allowing testers to isolate problems between services at a vastly decreased cost, rather than utilizing high-cost infrastructure. Additionally, they can be employed earlier in the product development cycle, preventing further complications down the road.
Benefits of network virtualization
When implemented alone, service virtualization is only half the solution. Dynamic conditions across networks, particularly mobile networks, present challenging new variables that must be tested and iterated for an acceptable end-user experience. More than ever, control of these network conditions lies out of the hands of IT and development teams, who are left at the mercy of the user's access conditions.
Network virtualization provides a means of testing applications within a realistic emulation of the actual network environment, which accounts for the continuous dynamics of the real world.
How network virtualization works
Network virtualization works by capturing statistics from the production environment and seamlessly feeding them back into the test environment. This virtualized network can then replicate the exact conditions exacerbating the problem—conditions which can vary depending on mobile carrier, network, and numerous other factors.
Armed with this information, developers can design their applications to perform as effectively as possible under the worst-case conditions.
Bringing it all together
A cost- and time-effective test environment capable of emulating the dynamic conditions of real-world application use is critical to the success of application development. Network and service virtualization provide the means to do so—but how do you bring it all together into a reliable test environment?
In practice, you could use service virtualization to test the breakdown of interdependent systems, actively simulating worst-case scenarios. With network virtualization, testers can incorporate problem-causing network factors into their simulations. Testers can then hone in on the specific application or infrastructure components, determine which are affected, and adjust the deployment configuration for better results.
The new standard
When it comes to delivering quick-to-market application solutions that perform, traditional development processes are no longer effective. Organizations are increasingly adopting agile development practices to create applications that meet the needs of their users. However, these practices require powerful new tools that reflect the dynamics and complexity of both the applications themselves and the circumstances of their use.
Network and service virtualization provide effective, functioning solutions to these problems by emulating real-world environments. Using network and service virtualization, developers can create and iterate applications on a far shorter development cycle and account for the myriad conditions of real-world use.
In addition, they can do so without utilizing the expensive services or systems that would normally be required for such purposes. Once the application is in production, it can be easily improved in real time, keeping end users happy, productive, and continuously engaged with the product.
Even the most complex distributed system can be satisfactorily managed to deliver a superior experience for the end user—faster, better, and more affordable.