Chapter 3. Service Virtualization in a Bimodal IT World

In 2014, Gartner published a new practice model for organizations that deliver software: bimodal IT. In short, an organization that follows the bimodal IT practice adopts two separate styles (modes) of software development and delivery:

  • Mode 1—also known as reliability mode—is focused on predictability. This involves development projects that are related to core system maintenance, stability, and efficiency. These projects generally require little business involvement and are often organized in a traditional, sequential manner.
  • Mode 2—or agility mode—focuses on innovation and differentiation. This involves finding solutions for new problems and exploration of areas of uncertainty. These projects generally require a high level of business involvement and are often organized in an incremental, short-cycled, Agile method of working.

Figure 3-1 shows an overview of what bimodal IT entails.

Mode 1 is mostly targeting systems of record—systems that store information, often both current and historical, and that are used to keep the daily business running. Mode 2, on the other hand, is mainly focusing on systems of innovation—systems that are meant to provide an organization with an edge over their competition.

Figure 3-1. A bimodal IT approach

In this chapter, we take a look at the role service virtualization can play in software development projects in either mode, and how organizations can benefit from an enterprise-level service virtualization approach spanning both modes.

Reliability Mode and Service Virtualization

Even though a growing number of software development projects are organized in a short-cycled and incremental manner in order to be able to react to the market’s demand for speed, projects that follow the traditional (“waterfall”) approach still exist and will probably exist for some time to come. For these projects, too, service virtualization has a number of potentially very valuable advantages.

Reliability mode projects often involve maintenance, upgrading or phasing out of large, monolithic systems, such as mainframes or Enterprise Resource Planning (ERP) systems. Creating and provisioning test environments for such systems can be a very time-consuming and expensive process. Modern service virtualization systems that offer the ability to simulate the behavior of such systems can bring about significant cuts in expenses for test environment setup and maintenance.

Also, after virtual assets that simulate a mainframe or ERP system have been created, development teams do not need to claim time from the scarce resources that possess detailed knowledge of these systems anymore (or at least not as often). Any person who has knowledge of how the service virtualization solution is set up can add or adapt behavior (or test data) required for specific test cases. This removes another potential bottleneck from the development and testing process.

Another aspect of service virtualization that is especially beneficial to reliability mode projects is the ability to simulate performance characteristics of dependencies. Take for example the situation in which an organization wants to periodically monitor end-to-end performance in a production-like environment to ensure that changes to specific systems do not have a negative impact on overall performance. If these end-to-end tests involve applications or systems that are expensive to replicate in a test environment (such as the aforementioned mainframe or ERP systems), having a virtualized replica of these systems, in terms of both functionality and performance, in place can make end-to-end performance monitoring much easier, or even possible at all.

Agility Mode and Service Virtualization

Whereas the benefits of service virtualization in reliability mode focus on cost savings and the virtualization of complex and difficult-to-duplicate systems, the benefits for development projects in agility mode are centered around enabling and improving speed of delivery.

When multiple development teams are working on separate parts of an application that must interact with one another eventually, waiting until all of the development teams have finished developing before integration testing can take place is a time-consuming process. This loss of time grows linearly with every rework iteration required in case defects are found. With service virtualization, development teams can expose the behavior of the artifacts they are developing before the actual component is finished. This enables other teams to test their own work against the component simulation faster, thereby greatly increasing the speed with which they can find defects and subsequently resolve them.

With service virtualization, the impediment of having to share test environments with other teams can be made a thing of the past, as well. Especially when service virtualization is combined with containerization techniques as described in Chapter 4, provisioning multiple instances of the same virtual asset is a matter of minutes. In this way, all teams can create and use their own test environments, tailored to their specific needs, without running the risk of test environment or test data interference.

Finally, because service virtualization allows for quick provisioning of test environment instances, it is an enabler for continuous testing, which is another requirement for development teams wanting to speed up and increase the agility of their software delivery process. For more information, see Chapter 2.

Bridging the Gap

As described in the previous sections, service virtualization provides significant benefits to software development projects in either mode of the bimodal IT practice. This does not imply, however, that there is no need for an integrated service virtualization approach that spans development projects in either mode. Having organization-wide guidelines and best practices, such as virtual asset design standards, with regard to service virtualization in use provides maximum efficiency. Here are a couple of ways it can do this:

  • Virtual assets can be shared and reused across development teams and projects, with each team having the opportunity to load its own datasets and performance characteristics.
  • The number of service virtualization engine licenses required to serve all development teams with the virtual assets they need (in case of a commercial service virtualization solution) is minimized.

Another software development and delivery practice that is seeing a lot of followers is Continuous Delivery. In the next chapter, we demonstrate how service virtualization and Continuous Delivery go hand in hand when organizations want to deliver quality software at the speed demanded by increasingly competitive markets.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.139.82.23