Service virtualization is the process of creating imitation of real components with help of some service contract, which can, within the realms of real service contract, enable efficient performance advantages to complete service development itself.
Different Ways to Create Virtual Services
What is service virtualization: in any software delivery life-cycle, no two layers of services are built and delivered in the same timeline in such case traditionally one layer would wait on another to be ready, before integrating and working on next phase of testing. However, this reduces the total time for end-to-end development, making it hard to ensure the project meets timeline and budget sometimes.
VP of IT’s Guide to Transforming Your Business
This guide provides solutions for a VP of IT in four major areas: Cloud Strategy, Data, DevOps, and Product Development.
In such scenario, creating virtualized component comes in with multiple advantages:
1. You can use it to build a virtual service layer and finish end-to-end connectivity to proceed with unit and integration testing
2. You can make a stand-in component, in case the real component fails, to reduce lost connectivity issue during service’s downtime and continue to test applications
3. It can be used to simulate the different response structures to assess the behavior of one vs the other and determine what is better to adopt. For example, in case of micro service architecture, different domain controllers can be virtualized, simulated and tested. This ensures that client’s feedback has been taken into consideration before building the real services.
At a high level, there are two different methods to virtualize any service component:
1. Build ground up from WSDL, WADL or Service definition document:
This is a longer approach to building virtual services. Take the signed-off WSDL, load into Virtualization work space and create workable components of the operations in the WSDL. In this case, you a choice to decide whether one, more or all operations in the service should be virtualized. Once created by drag-drop approach, we can make the virtual operations to be hard-coded mock ones (in which case it will always fetch the same response, regardless of request parameters), or connect with some spreadsheet or database which has the necessary data loaded in pre-determined format. The right choice of data connection is purely based on one’s specific use case requirements
2. Record traffic monitoring:
In this case, you open a specific port to listen over existing web-service traffic. This approach doesn’t really use the WSDL, Service specification or any ground up work. Based on the variations of captured traffic, request and response are parameterized and recorded data is stored in relevant data source .csv files
Another important and very beneficial aspect of is it, you can create different versions of the same virtual service. In that case, you can choose to expose those different versions on different HTTP ports and hence be able to call them simultaneously.
There are multiple market players coming out with their Service virtualization tools. IBM recently acquired Rational Integration tester, CA technologies has a good tool called CA DevTest (formerly known as LISA and ITKO), Parasoft for service virtualization etc. and some other open sources tools as well.
Some leading market players like CA technologies are even taking a step ahead by acquiring tools like Blazemeter. Blazemeter can be used for load or performance testing. Now imagine building a virtual instance of service and functional testing it using CA LISA, at the time also testing non-functional needs like response time, performance under increased network bottleneck, traffic and/or other key parameters. This will not only help build what customer needs but perhaps take a step ahead and ensure it also meets non-functional SLA.
I know that Perficient is partnering with CA technologies to provide some extremely high value proposition to customers, who can leverage the subject matter expertise in this area and realize the benefits to their overall software delivery life cycle in no time. For more detailed information session, knowledge sharing or even assessments on how Perficient-CA can together provide business values, please feel free to contact us!