Service Virtualization es la creación de simulaciones o 'virtual assets' que replican el comportamiento funcional y no funcional de servicios dependientes en un entorno de desarrollo o pruebas. A diferencia del mocking o stubbing, que suelen ser soluciones a nivel de código para unidades específicas, la Service Virtualization opera a nivel de red, interceptando y respondiendo a las llamadas de servicio como si fuera el servicio real. Esto incluye la simulación de latencia, errores, límites de tasa y respuestas dinámicas basadas en el contexto de la solicitud, permitiendo probar escenarios complejos y edge cases que serían difíciles o costosos de replicar con los servicios reales.

En el mundo real, Service Virtualization es implementada por herramientas especializadas como Parasoft Virtualize, CA Lisa (ahora Broadcom BlazeMeter Service Virtualization) y Tricentis Tosca. Estas plataformas permiten a los equipos de QA y desarrollo grabar el tráfico de red de los servicios reales y luego "reproducirlo" con el comportamiento deseado. Por ejemplo, un equipo que desarrolla una aplicación móvil que depende de un backend de pagos externo puede virtualizar ese servicio de pagos para simular transacciones exitosas, fallidas o con retrasos, sin incurrir en costos reales o depender de la disponibilidad del proveedor externo. También se utiliza en entornos de integración continua para asegurar que las pruebas automatizadas no fallen debido a la inestabilidad de los servicios de terceros.

Para un Arquitecto de Sistemas, Service Virtualization es una estrategia clave para mejorar la agilidad, la calidad y la eficiencia en el ciclo de vida del desarrollo de software. Permite desacoplar equipos, reducir los cuellos de botella causados por la disponibilidad de entornos o servicios de terceros, y acelerar los ciclos de prueba. Los trade-offs incluyen la inversión inicial en herramientas y la necesidad de mantener los 'virtual assets' actualizados con los cambios en los servicios reales. Sin embargo, el valor estratégico reside en la capacidad de realizar pruebas exhaustivas en etapas tempranas (shift-left testing), reducir los costos de infraestructura de prueba y mitigar los riesgos asociados a la integración con sistemas externos, lo que se traduce en una entrega más rápida y confiable de sistemas complejos.