Seleccionar página

Orientados hacia la virtualización de servicios

Imaginemos que estamos desarrollando y probando una aplicación cuyo entorno está separado en partes más pequeñas. Imaginemos que cada parte está gestionada por un equipo diferente, en diferentes países y con diferentes métodos de prueba. Imaginemos que diferentes desarrollos dependen de que otros equipos entreguen modificaciones en su ‘trocito’ de proyecto, que múltiples equipos están trabajando en el mismo entorno y que tanto la parte de pruebas como los equipos de desarrollo dependen de que todo este sistema funcione con un cierto grado de precisión. Imaginemos, en definitiva, el caos.

Para algunos esto resultará un tanto exagerado… para otros, más allá de un pequeño exceso por esto del contexto literario, es parte de nuestro día a día.

Y la pregunta es, ¿dónde tiene cabida aquí la virtualización de servicios? La virtualización es, en pocas palabras, la simulación del comportamiento de un componente. Es un método que nos permitirá esquivar todas aquellas complicaciones que surgen a la hora de probar en un sistema real.

La virtualización de servicios nos hace independientes de la configuración, nos permite simular casuísticas prácticamente imposibles de reproducir en un entorno real, facilita independencia de las pruebas en entornos compartidos, facilita las pruebas sobre sistemas con dependencias, permite probar servicios inacabados o en evolución… Es, en general, una forma de reducir el time-to-market y facilitar el DevOps y la integración continua.

Parece algo insólito, sin embargo, la virtualización de servicios no es para nada un concepto nuevo, sino más bien un concepto consolidado con la llegada de los microservicios.

Muchos de vosotros ya habréis trabajado con mocks y con stubs, pero a diferencia de aquéllos, la virtualización de servicios nos permite una simulación dinámica que emula el comportamiento con respuestas conscientes del contexto, con un mantenimiento sencillo y una alta capacidad de reusabilidad.

Nos ofrece, en suma, una forma sencilla y dinámica de implementar una copia acotada del comportamiento de nuestro entorno.

Y éste es justo uno de sus puntos fuertes: la virtualización de servicios nos permite implementar una copia acotada totalmente adaptada a nuestras necesidades. A diferencia de otras virtualizaciones más pesadas, la virtualización de servicios nos permite simular únicamente el comportamiento requerido para nuestro desarrollo o bien para nuestras pruebas, reduciendo así la complejidad de la misma significativamente.

De esta forma, en lugar de trabajar sobre un entorno en ocasiones saturado, inacabado, fragmentado y caótico, tenemos la posibilidad de implementar una copia de éste adaptada a nuestras necesidades. En este punto es importante no confundir «virtualizar el servicio» con «adaptar el servicio», pues no se trata de adaptar la respuesta del servicio a la necesaria para nuestros desarrollos, o para nuestras pruebas, sino de crear una copia de la respuesta real obviando todo aquello que no nos sea de utilidad.

Por supuesto existen desventajas en este proceso. Para poder lograr esta situación de trabajo sobre un entorno virtual y a medida obviamente es necesario implementar el mismo. Este hecho puede verse como una ‘pérdida’ de tiempo, teniendo en cuenta que partimos de un entorno real que ya existe. Pero pensemos por un momento en todos aquellos retrasos que se producen a consecuencia de las deficiencias mencionadas del entorno real.

Si bien es cierto que la virtualización implica un tiempo de aprendizaje y de implementación, estas desventajas son superadas con creces por los beneficios que se obtienen con la misma.

Al hilo de la implementación de nuestro servicio virtual, hay que mencionar que hoy en día existen numerosas aplicaciones en el mercado que nos pueden facilitar esta labor. Así podemos encontrar, entre otras, aplicaciones tales como:

  • SmartBear, tal vez una de las herramientas más potentes actualmente.
  • WireMock, producto bastante completo y en continua evolución.
  • HoverFly, herramienta libre de uso sencillo.
  • API Simulator, similar a HoverFly, mejorando la implementación manual frente a la mayor necesidad de HoverFly de realizar capturas de tráfico real.

virtualización de servicios

En resumen, hoy en día es posible sortear los obstáculos que nos encontramos en los entornos reales realizando nuestro trabajo, ya sea de desarrollo o de pruebas, en entornos virtualizados creados en base a nuestras necesidades. Para ello tan solo necesitamos elegir una herramienta y un breve periodo de ‘introducción a la virtualización’.

Así, una vez presentadas las bases de esta metodología, solo queda preguntarnos una cosa:

¿virtualizamos?

 

Iciar de Cruz Pisuerga

Iciar de Cruz Pisuerga

Iciar es Ingeniera de Consultoría y Desarrollo en Panel Sistemas. Visita su perfil en Linkedin o contacta con ella vía e-mail en esta dirección.

Déjanos tu comentario

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Share This