Service virtualisation is usually thought of as simply a testing tool. It lets you simulate services (either internal such as SAP, or external such as Salesforce, or even services not yet developed) you need in order to test developing systems without the logistics problem of finding an expert to run the system for you - and without the cost of the licences and infrastructure needed for the real thing.
However, at a breakfast meeting run by CA Technologies and SQS, Burt Klein (a CA Technologies Evangelist for service virtualisation) reminded me that service virtualisation can be rather more than this. It can actually change the whole development process (and culture), around automating the business, for the better:
- It doesn't just let you run tests that were hard to set up before and expensive; it encourages early testing because you can now overlap testing across teams (each team gets its own virtual service and data scenarios to test against, which can't be impacted by what other teams are doing).
- Virtualised services can be set up and operated by code - scripts - which takes a manual component out of the testing and delivery process. This facilitates agile development and deployment and helps to remove barriers between developers and operations staff - it facilitates DevOps.
- It helps take software delivery to the maturity of an engineering process. Cars these days don't arrive with several km on the clock after a pre-delivery test drive; the components are built and tested and if the components deliver the expected outcomes, they just fit together and work, With service virtualisation, software component interfaces have been verified as they were built, minimising the need for, and possible impact of, 'end of development' integration and performance testing.
- With service virtualisation, the development environment looks more like the real production environment - thus helping developers to take ownership of business outcomes instead of just supplying coded components. This could be a significant, and desirable, change to development culture.
Of course, the devil is in the detail and I suspect that an organisation needs a certain level of maturity (and to invest in training and 'change mentors') in order to get the most out of service virtualisation. However, the value that people like Klein claim it delivers, from delivery process improvement overall, goes far beyond what you'd get just from making testing a bit easier. Service virtualisation helps you build quality into your automated business systems earlier, as they are being built, when addressing any quality issues is cheaper.
If you want to assess the credibility of this statement, there's a book from CA Press by John Michelsen and Jason English called "Service Virtualisation: reality is overrated" (ISBN 978-1-4302-4671-8) and a community-oriented website. I'm a little cynical about vendor evangelists myself - in the past, I've met plenty of "technology evangelists" in white suits, straight out of college, with their employer's technology hard-wired into their brain - but Klein isn't so young and has paid some dues; and the service virtualisation book is readable (not as turgid as most textbooks) - and I couldn't find any mention of the CA LISA service virtualisation product in its index.
There have to be some issues around service virtualisation: for a start, you had better make sure you can continuously validate the accuracy of your service simulations cheaply and easily (which probably implies both a disciplined development/IT environment and the choice of the right tools); and its adoption implies the management of significant cultural change (which needs to be resourced and managed). Nevertheless, I think that any organisation should be looking at it today, now that the technology has matured a bit; and not simply from a testing point of view.
For instance, service virtualisation can be used to simulate the business environment for training, reducing the cost of training (no licences needed and less hardware) and allowing trainers more control over what trainees have to deal with. As I said, service virtualisation can be more than just a testing tool.