La nube aporta mejoras en el desarrollo de software

Durante los últimos meses la nube entra por todos lados, cada rincón de la empresa de software es susceptible de viajar a la nube.

Hay muchos ámbitos donde puede aportarnos soluciones mejores y más económicas.

Pruebas

Una de las áreas donde el Cloud esta ayudando es el área de pruebas, ya que permite arrancar una máquina limpia de manera rápida, ejecutar las pruebas y eliminarla.
Todo el trabajo de instalación de sistemas operativos desaparece. El coste de una hora de una máquina incluyendo licencias de sistema operativo  suele ser inferior al euro. Hacer eso en local lleva mucho más tiempo y dinero.

Esclavos en la nube

Si usas integración continua con Jenkins, es muy cómodo tener los esclavos en la nube. Estas máquinas son las encargadas de realizar la compilaciones, verificaciones,  pruebas funcionales, etc. En nuestro caso usamos múltiples esclavos para los diferentes sistemas operativos y sus diferentes sabores.

El ahorro más importante viene en que podemos arrancar las máquinas esclavas a demanda, ahorrándonos el coste de tenerlas siempre encendidas. También es muy sencillo cambiar los recursos de las maquinas en función de las necesidades.

Más madera

Otro de los puntos fuertes son las pruebas de carga, estos proveedores te permiten contratar monstruos de la computación. Se pueden montar pruebas de carga con varios equipos de 64 núcleos con cientos de Gigas de RAM. Es posible probar el rendimiento en grandes infraestructuras por unos pocos euros.

Seguridad

En cuanto a la seguridad de las máquinas, es eficaz mantener una política dura en la configuración del firewall del proveedor de Cloud, con lo que no tendremos problema en la configuración o reconfiguración individual de cada máquina virtual.

Como alternativas tenemos experiencia en Amazon Ec2 y Arsys Cloud builder, pero existen decenas de proveedores que pueden ofrecer un buen API para la gestión de las máquinas.

El coste de un bug

bicho-bugCuando se desarrolla software se comenten errores (bugs), esto forma parte del trabajo. Cada uno de estos errores tiene un coste, normalmente cuando más tarde se detecta, más caro nos cuesta solucionarlo.

Estos son algunos de los momentos en los que la empresa puede detectar y solucionar estos errores :

  1. En el propio desarrollador
    Un buen desarrollador con años de experiencia comete menos errores, el código que realiza se protege de los bugs. Estos programadores cobran más, pero su código es más fiable.
  2. En la integración continua
    Dentro de la integración continua se pueden usar diferentes sistemas para detectar bugs ( Pruebas unitarias, pruebas funcionales, análisis estáticos de código, etc )
    Dentro de la integración continua es muy útil tener automatizadas todas estas pruebas automáticas que detectan fallos de desarrollo y nos da garantías de que los cambios subidos no rompen nada.
    Coste*: 1 hora del desarrollador ver el log y arreglar el problema 
  3. En el equipo de desarrollo
    Ya sea por revisión por pares o por programación por parejas, se pueden detectar los bugs antes de que el código salga del departamento de desarrollo.
    Coste*: 2 h. del desarrollador que encuentra el problema y de quien lo soluciona 
  4. En el departamento de pruebas
    Si el error llega hasta el departamento de pruebas, este equipo tiene que ocuparse de detectarlo y entender como ocurre y como hacerlo reproducible. Otro elemento importante es describirlo al desarrollador que suele ser un punto de conflicto,  la comunicación debe ser muy eficaz para que el desarrollador pueda entenderlo y solucionarlo.
    Coste*:  1h. para encontrarlo y documentarlo + 1 h. en entenderlo + 1 h. para solucionarlo 
  5. Los betatesters
    Si el bug no se ha encontrado dentro de los equipos de desarrollo y pruebas, el producto con el error llega al betatester que si lo encuentra, deberá comunicarlo al departamento de pruebas, la solución a este bug debe pasar por varios departamentos e incurre en trabajo de mucha gente.
    Por otro lado, la solución al error, puede romper otro elemento, con lo que esa versión debe pasar de nuevo todas las fases previas.
    Coste*: 1h. del betatester + 1 h. para encontrarlo y documentarlo + 1 hora en entenderlo + 1 hora en solucionarlo 
  6. El usuario final
    Si el bug llega al usuario se sentirá frustrado porque la nueva versión no hace lo que debe. Del mismo modo quizá no informe correctamente al equipo. Si lo hace, debemos tener un canal por el equipo de soporte para ello. Este tipo de bugs generan mucho trabajo y mala imagen, incluso en ocasiones pueden generar un parche, con el enorme coste que esto provoca.
    Coste*: 1 h. del cliente final + 1 h. persona de soporte + 1 hora persona de pruebas + 1 h. para entenderlo + 1 h. solucionarlo 

Sacar un parche para muchos clientes no tiene precio 😉

*Coste: Es un tiempo medio, cada error es un mundo, unos se solucionan en minutos y otros en días.