stringtranslate.com

Virtualización de servicios

En ingeniería de software , la virtualización de servicios o virtualización de servicios es un método para emular el comportamiento de componentes específicos en aplicaciones heterogéneas basadas en componentes, como aplicaciones impulsadas por API , aplicaciones basadas en la nube y arquitecturas orientadas a servicios . Se utiliza para proporcionar a los equipos de desarrollo de software y control de calidad/pruebas acceso a los componentes dependientes del sistema que son necesarios para ejecutar una aplicación bajo prueba (AUT), pero que no están disponibles o son de difícil acceso para fines de desarrollo y prueba. Con el comportamiento de los componentes dependientes "virtualizado", las pruebas y el desarrollo pueden continuar sin acceder a los componentes activos reales. Los proveedores, los analistas de la industria y las publicaciones de la industria reconocen que la virtualización de servicios es algo diferente a una burla. [1] [2] Consulte aquí para obtener una comparación de herramientas de simulación API .

Descripción general

La virtualización de servicios emula el comportamiento de los componentes de software para eliminar las limitaciones de dependencia de los equipos de desarrollo y pruebas. Estas restricciones se producen en entornos complejos e interdependientes cuando un componente conectado a la aplicación bajo prueba es:

Aunque el término "virtualización de servicios" refleja el enfoque inicial de la técnica en la virtualización de servicios web , la virtualización de servicios se extiende a todos los aspectos de las aplicaciones compuestas: servicios, bases de datos , mainframes , ESB y otros componentes que se comunican mediante protocolos de mensajería comunes. [3] [4] [5] Otras herramientas similares se denominan simuladores de API , herramientas de simulación de API y dobles de prueba por cable .

La virtualización de servicios emula únicamente el comportamiento de los componentes dependientes específicos que los desarrolladores o evaluadores deben ejercitar para completar sus transacciones de un extremo a otro. En lugar de virtualizar sistemas completos, virtualiza sólo porciones específicas de comportamiento dependiente críticos para la ejecución de tareas de desarrollo y prueba. Esto proporciona suficiente lógica de aplicación para que los desarrolladores o evaluadores obtengan lo que necesitan sin tener que esperar a que el servicio real esté completo y disponible. Por ejemplo, en lugar de virtualizar una base de datos completa (y realizar toda la gestión de datos de prueba asociada, así como configurar la base de datos para cada sesión de prueba), monitorea cómo interactúa la aplicación con la base de datos y luego emula el comportamiento de la base de datos relacionada (el SQL consultas que se pasan a la base de datos, los conjuntos de resultados correspondientes que se devuelven, etc.). [6] [7]

Solicitud

La virtualización de servicios implica la creación e implementación de un "activo virtual" que simula el comportamiento de un componente real que se requiere para ejecutar la aplicación bajo prueba, pero cuyo acceso es difícil o imposible para fines de desarrollo y prueba.

Un activo virtual sustituye a un componente dependiente al escuchar las solicitudes y devolver una respuesta adecuada, con el rendimiento adecuado. Para una base de datos, esto podría implicar escuchar una declaración SQL y luego devolver filas de origen de datos. Para un servicio web, esto podría implicar escuchar un mensaje XML a través de HTTP , JMS o MQ y luego devolver otro mensaje XML. La funcionalidad y el rendimiento del activo virtual pueden reflejar la funcionalidad/rendimiento real del componente dependiente, o pueden simular condiciones excepcionales (como cargas extremas o condiciones de error) para determinar cómo responde la aplicación bajo prueba en esas circunstancias.

Los activos virtuales suelen ser creados por:

Luego se configuran aún más para representar datos, funcionalidades y tiempos de respuesta específicos.

Los activos virtuales se implementan localmente o en la nube (pública o privada). Con los entornos de desarrollo/prueba configurados para utilizar los activos virtuales en lugar de los componentes dependientes, los desarrolladores o evaluadores pueden ejecutar la aplicación en la que están trabajando sin tener que esperar a que los componentes dependientes estén completos o sean fácilmente accesibles. [3] [4] [7]

Los analistas de la industria informan que la virtualización de servicios es más adecuada para "talleres de TI con experiencia significativa en 'saltar' pruebas de integración debido al 'software dependiente', y con un equipo de prueba razonablemente sofisticado. [8]

Relación con los golpes y las burlas

Un enfoque alternativo para solucionar las restricciones de acceso al entorno de prueba descritas en la introducción de este artículo es que los miembros del equipo desarrollen métodos auxiliares u objetos simulados que sustituyan a los recursos dependientes. La deficiencia de este enfoque se hizo evidente a principios de la década de 2000 con el surgimiento de la arquitectura orientada a servicios . [9] La proliferación de aplicaciones compuestas que dependen de numerosos servicios dependientes, además del aumento del desarrollo de software ágil tras la publicación del Manifiesto Ágil en 2001, hizo cada vez más difícil para los desarrolladores o evaluadores desarrollar manualmente el número, el alcance y la complejidad de Talones o simulacros necesarios para completar tareas de desarrollo y prueba para el desarrollo de aplicaciones empresariales modernas. [10]

El primer paso en la evolución del stubing a la virtualización de servicios fue la tecnología incluida en las herramientas de prueba SOA desde 2002. [11] Las primeras implementaciones de virtualización de servicios se diseñaron para automatizar el proceso de desarrollo de emulaciones simples tipo stub para que las aplicaciones compuestas pudieran ser probado de manera más eficiente. [12] A medida que los sistemas empresariales continuaron volviéndose cada vez más complejos y distribuidos, los proveedores de herramientas de software cambiaron su enfoque del stubping a la virtualización de servicios más centrada en el entorno. [2] Si bien el stubing aún se puede completar mediante el desarrollo y la gestión manual de stubs, lo que se conoce como "virtualización de servicios" se completa utilizando una de las tecnologías de virtualización de servicios comerciales disponibles (COTS) como plataforma para el desarrollo. y despliegue de sus "activos de virtualización de servicios". [10]

Ágil y DevOps

La creciente popularidad [13] del desarrollo de software ágil y DevOps ha creado una demanda de un nuevo conjunto de herramientas para ofrecer virtualización de servicios a las comunidades que trabajan de esta manera. [14] Prácticas como la entrega continua y el alejamiento del desarrollo de mainframe y monolitos hacia arquitecturas basadas en microservicios más distribuidas encajan bien con las capacidades de virtualización de servicios. Los equipos ágiles y DevOps prefieren trabajar con herramientas livianas que tengan menos sobrecarga acumulada y sin restricciones de licencia engorrosas. [15]

Ver también

Referencias

  1. ^ Virtualización de servicios como alternativa a la burla, por Jonathan Allen, eBizQ 22 de abril de 2013
  2. ^ ab ¿Qué es la virtualización de servicios?, por James Day, Medium 18 de junio de 2021
  3. ^ ab Gestión de entornos de prueba por Liz McMillan, Cloud Computing Journal, diciembre de 2011
  4. ^ ab Virtualización del comportamiento de aplicaciones por Elizabeth White, Cloud Computing Journal, diciembre de 2011
  5. ^ Virtualización de bases de datos para desarrollo y pruebas por Wayne Ariola, revista ST & QA, marzo de 2012
  6. ^ Introducción a SOA y virtualización Archivado el 22 de noviembre de 2011 en Wayback Machine por John Michelsen, WebServices.org, agosto de 2007
  7. ^ ab La próxima generación de gestión de entornos de pruebas por Wayne Ariola, Virtualization Journal, 12 de julio de 2011
  8. ^ Parasoft y pruebas de "virtualización de servicios": una buena idea por Wayne Kernochan, Pensamientos de un analista de TI de software, 22 de febrero de 2013
  9. ^ Pruebas en entornos orientados a servicios por Ed Morris et al, Instituto de Ingeniería de Software, marzo de 2010
  10. ^ ab La virtualización de servicios está ayudando a las organizaciones a obtener valor comercial a partir de las pruebas por Chandranshu Singh, ovum, 31 de marzo de 2014
  11. ^ La herramienta de prueba de servicios web de Parasoft debería ayudar al desarrollo por Theresa Lanowitz Gartner, 1 de mayo de 2002
  12. ^ La virtualización SOA se vuelve real por Rich Seeley, SearchSOA, 28 de noviembre de 2007
  13. ^ Tendencias de Google ágiles y DevOps
  14. ^ Foro de virtualización de servicios de próxima generación, 13 de septiembre de 2017
  15. ^ Thought Works Technology Radar: soluciones para grandes empresas