Ambientes Dev/Test en la Nube: ¿Qué se necesita?

Más del 50% de los gastos de TI suele estar orientado en infraestructuras que no son productivas. De hecho, por momentos cerca del 80% está sin usar. Pablo Di Loreto, de Algeiba, analiza pros y desafíos de tener estos ambientes no productivos en la nube.

Por Pablo Ariel Di Loreto, Architecture & Development Manager de Algeiba (*)

Durante los últimos años, con el Equipo de Algeiba hemos construido diversas soluciones de Dev/Test en clientes, muchas de las cuales han tenido base en la nube. En el contexto de desarrollo y pruebas, cada cliente tiene sus particularidades, pero hemos encontrado diversas necesidades en todas nuestras experiencias:

  • Los equipos de trabajo necesitan contar rápidamente con ambientes listos para desarrollar y testear, que sean simples de administrar, de definir y repetibles en el tiempo.
  • Las organizaciones necesitan minimizar los costos de software, hardware y operativos, teniendo en cuenta que una infraestructura no-productiva en las instalaciones y sin utilizar es doblemente costosa.

¿La Nube da respuesta a estas necesidades? ¿Qué consideraciones técnicas y metodológicas debo tener antes de tomar una decisión? Te vamos a contar por qué la nube es una opción para dev/test, qué consideraciones técnicas deberás tener en cuenta e incluso qué marco metodológico hemos trabajado desde Algeiba para hacerlo exitosamente con nuestros clientes.

¿Por qué pensar en Ambientes de DEV/TEST en la nube?

Esta tendencia creciente en todo el mundo, y fundamentalmente en Latinoamérica, tiene dos grandes motivos.

Por un lado, por las características propias de la nube que los analistas, desarrolladores y testers pueden aprovechar para tener sus ambientes lo más rápido posible y (en forma repetitiva) con la misma configuración. Estas características son: autoservicio, elasticidad, acceso amplio y ubicuo, abstracción de la complejidad de los recursos, con la posibilidad de acceso programático a través de APIs y plantillas reutilizables.

Por otro lado, por los beneficios en costos y retorno de inversión. Los ambientes de dev/test suelen presentar picos cuando se acercan entregas de producto, y esto afecta directamente en los requerimientos de contratación de software y hardware: en una infraestructura tradicional deberíamos de contratar siempre por arriba del pico máximo. Si contratamos por debajo de dicho pico, hay momentos en que no vamos a poder atender la demanda. La nube, en su lugar, nos permite contratar y pagar solo por los momentos que utilizamos esas cargas de trabajo.

Preparación del Equipo de Trabajo

Antes de elegir la nube como base para nuestros ambientes de dev/test, debemos tener en cuenta la preparación de los equipos de trabajo. La experiencia generada desde Algeiba en los últimos años nos han permito identificar un conjunto de prácticas, metodologías e incluso conocimientos que sería ideal tener para no morir en el intento:

  • Infraestructura como Código (IaC). Nos permite expresar en líneas de código la definición de la infraestructura: servidores, memoria, disco, configuraciones, todo es código. Escrito una vez, podemos reutilizarlo una y otra vez. Tecnologías como Terraform, Chef, Puppet, Ansible, PowerShell, Vagrant y Docker nos facilitan el trabajo.
  • Automatización. Soportándose en IaC, es un aspecto fundamental para maximizar el beneficio de los ambientes de dev/test en la nube. No tendría sentido contar con ellos si luego dedicamos muchas horas para regenerarlos manualmente.
  • Set de Datos. Contar con set de datos preparados y representativos es fundamental para todo proceso de desarrollo y prueba. Si a la flexibilidad de la nube no la aprovechamos probando lo correcto vamos a estar contrarrestando su potencialidad. Tecnologías como Generate Data, Mockaroo y Azure Open Datasets pueden ayudarnos.
  • Metodologías Ágiles. No es un aspecto requerido para utilizar ambientes de dev/test en la nube, pero las metodologías de desarrollo ágil ayudan a los equipos de trabajo en que sus entregables tengan un mayor alineamiento a las necesidades de negocio. ¿Cuáles utilizar? Scrum, XP, Kanban, Lean Startup, entre otras.

Otro aspecto a tener en cuenta es DevOps. Implementar prácticas DevOps requiere, en algunos casos, de cambios profundos en las personas, los procesos y las herramientas que se utilizan en la organización. Si bien no puede hacerse de una vez, lo que sí podemos hacer es tomar algunas de las prácticas DevOps que nos van a ayudan a maximizar las ventajas de los ambientes de DEV/TEST en la nube. Estas prácticas son: Integración y Entrega Continua (CI/CD), y Automatización de Pruebas (TA). Las herramientas que nos ayudan para cada caso son:

  • CI/CD: Jenkins, Travis CI, Azure Pipelines, GitLab CI, TeamCity (entre otras).
  • Testing: Unit Tests (fundamental para el desarrollo), y Selenium, Katalon Studio, Test Complete (para pruebas integrales).

Desde nuestra experiencia, uno de los principales desafíos en los equipos de trabajo tiene que ver con el conocimiento e implementación de Infraestructura como Código y Automatización. Muchas veces se llevan adelante desde el equipo de Infraestructura, y otras veces se suman talentos de Operaciones a los equipos de Desarrollo (que en el mercado se podría asociar al “perfil DevOps” que a veces algunas empresas solicitan) que complementan la construcción del software.

Partners y Proveedores de Dev/Test en la Nube

Trabajar con Partners Especializados para acompañar la construcción y evolución de prácticas DEV/TEST en la nube es fundamental para muchas organizaciones. Desde Algeiba, por ejemplo, venimos evolucionando prácticas y metodologías que facilitan a nuestros clientes hacerlo posible.

En relación a los proveedores que brindan servicios enfocados en Dev/Test, podemos destacar:

  • Microsoft Azure. Con varios servicios de Dev/Test, entre los que se destacan: Dev/Test Labs, Enterprise Dev/Test, Azure DevOps y App Center.
  • Google Cloud Platform. Comenzando con servicios de Compute Engine, y Firebase Test Lab para complementar en mobile.
  • Amazon Web Services. Con servicios como “Amazon Machine Instances” (AMIs).

Conclusiones

La nube tiene grandes ventajas a la hora de montar ambientes de Dev/Test, ya sea por sus características propias y por el hecho que no pagaremos solo por la infraestructura no-productiva sin utilizar. Cuando la necesitemos, la volvemos a generar con automatización e infraestructura como código.

Se requiere preparar al Equipo y adoptar prácticas y metodologías acordes que maximicen la adopción de estos ambientes en la nube.

Y, por último, no tenemos que perder de vista que contar con un Partner Estratégico es fundamental en determinadas situaciones para que nos acompañe en la elección del proveedor de servicios y los primeros pasos de todas estas prácticas.

Para un análisis completo de esta temática, puedes acceder a http://go.algeiba.com/devtestcloud.

 

(*) Sobre el autor

Profesor. Informático. Fanático del helado de dulce de leche. Mi frase favorita: “Every day may not be good… but there’s something good in every day”. Soy oriundo de la Ciudad de Berazategui, Buenos Aires, Argentina. Cuando tenía 16 años comencé a aprender sobre servidores Microsoft y desarrollos de software con (muy viejas) tecnologías. Comencé a trabajar en la administración de plataformas de IT y desarrollo de soluciones de software en forma profesional extendiéndolo hasta la actualidad. Actualmente me desarrollo como Architecture & Development Manager en Algeiba IT (http://www.algeiba.com), una compañía que brinda soluciones y servicios tecnológicos con la visión de llevar adelante los mejores proyectos del mundo. También soy Chief Communications Officer en .NET Conf Global (http://netconf.global), una iniciativa que conecta estudiantes, profesionales y expertos de tecnología alrededor del mundo y que hoy tiene presencia en varios países a través del conjunto de conferencias .NET Conf. Disfruto mucho de charlas educativas, tecnológicas y de una buena cerveza. Si tenés ganas de charlar, escribime a pdiloreto@algeiba.com.

 

 

Mostrar más
sebasm

Deja un comentario

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

Close