El costo de no automatizar sus procesos de software

el-costo-de-no-automatizar-sus-procesos-de-software

Al configurar proyectos en Django y WordPress noté que los pasos eran siempre los mismos. Así que me interesé por la automatización de procesos para reducir tiempo y errores humanos.

¿Por qué si hay un proceso manual y repetitivo no lo puedo automatizar?

Hay casos en los que no automatizar puede ser una opción, aunque solo se me ocurren dos válidos:

  1. No soy el encargado de los servidores o de la infraestructura en mi empresa y/o los lapsos de tiempo en los que tengo que realizar algún proceso de servidor son largos.
  2. Los cambios se hacen directamente en el servidor, por lo que una vez configurado solo se trabaja allí.

En el primer caso, la no automatización se justifica porque la frecuencia para realizar estas tareas es tan baja que no se considera repetitiva. No es una necesidad.

En el segundo, cuando se trabaja directamente en el servidor, la automatización de los procesos se dificulta por el riesgo de cambiar el código. Aqui la urgencia es pensar en mejores practicas. 

Teniendo esto en cuenta, a menos de que rara vez toquemos el servidor o que lo usemos como nuestro computador de escritorio, no puedo encontrar razones válidas para no automatizar.

¿Qué razones hay para automatizar?

Es mas facil encontrar razones para automatizar procesos de software:

1. Optimizar tiempo

Emplear el tiempo para operaciones que realmente importan y no para procesos repetitivos.

Configurar un nuevo servidor puede tomar, en promedio, entre una y dos horas, dependiendo de la pila que utilice. Si lo automatizamos puede reducirse el tiempo a tan solo cinco minutos o menos.

2. Eliminar el error humano de la formula

Los humanos nos equivocamos, ¡especialmente cuando estamos cansados ​​y realizando tareas repetitivas!

Automatizar un proceso para reducir el riesgo de error humano, hace que recuperarse de los mismos sea mucho más fácil y rápido.

3. Optimizar costos

El tiempo de un desarrollador es costoso, por lo que es importante que se emplee en tareas adecuadas.

Si el personal requerido para mantener funcionando su infraestructura se reduce, sus costos también lo harán, a la vez que aumente la calidad de sus productos.

 

Flujo de automatización

Automatizar no es gratis, requiere una gran inversión inicial para familiarizarse con las tecnologías y metodologías necesarias.

En mi caso comencé con scripts de BASH , luego probé AWS CodeDeploy  y finalmente encontré Ansible .

Pase de configurar mis servidores manualmente, comando por comando, a configurarlos según mis parámetros con una sola tarea.

Después de estar en ese punto se puede automatizar aún más, integrando pruebas dentro de nuestro proceso y creando un flujo similar al de la siguiente imagen: 

Fuente: Grégoire Détrez, original de Jez Humble. 

En resumen, nuestro flujo funciona así:

  1. Un desarrollador envía una operación al sistema de control de versiones (GIT).
  2. El proceso de pruebas automatizadas inicia. 
  3. Si el proceso de pruebas falla, el desarrollador a cargo debe corregir el error para finalizar su tarea.
  4. Si el proceso de pruebas es exitoso se actualiza nuestro servidor de desarrollo.
  5. Realizar pruebas generales, adicionales a las automatizadas, por parte de un encargado de QA.
  6. Si todas las características necesarias para el siguiente lanzamiento están listas, el administrador del proyecto, que no está muy relacionado con el proceso técnico del uso, puede hacer el lanzamiento.
  7. Repetir el proceso de pruebas; si todo sale como se esperaba se actualiza el servidor de producción, no el de desarrollo.

Ventajas de la automatización

  • El servidor de desarrollo siempre tendrá la versión más actualizada que haya pasado las pruebas.
  • La comunicación con el cliente y los procesos internos mejoran, en tanto que los cambios pueden verse en tiempo real ya partir de sus comentarios podemos reaccionar y ajustar la estrategia.
  • La reduccion de los costos. Piensa que un proyecto tiene al rededor de ocho desarrolladores activos, quienes trabajan en el repositorio de proyectos, pero s i quisiéramos mantener actualizados todas las instancias, necesitaríamos de una o dos personas adicionales.  

¿Quiere probar este proceso en su empresa? ¿No sabe por dónde iniciar?

Como parte de nuestro proceso en desarrollamos una herramienta que permite soportar todo nuestro proceso.

Si está interesado en automatizar los procesos en su empresa le podemos asesorar sobre cómo empezar con nuestra invención.