Saltar al contenido

Introducción

Antes de meterme al lío, me gustaría presentaros esta nueva serie de artículos en donde vamos a hablar de “Automatización de Tareas” orientadas sobretodo a los proyectos de desarrollo, ya que puede llegar a ser un proceso que te ahorre mucho tiempo o hacerte la vida imposible.

Actualmente en las empresas y sobretodo en el desarrollo intentamos automatizar lo máximo posible todas nuestras tareas de manera que casi solo tengamos que programar un par de líneas de código y deleguemos todos los posibles riesgos en otros sistemas o frameworks. Seguramente os suene; intentar automatizar la creación de un proyectos base, creación de documentación, realización de pruebas unitarias para que no tengamos que probar todos los casos, integración continua o incluso automatizar los pases a preproducción o producción. Estas son algunas de las tareas que a los desarrolladores nos cuesta bastante hacer y que tenemos que hacer una y otra vez, y para ello intentamos hacerlas lo más óptimo posible o lo más rápido posible, ya que a nosotros lo que de verdad nos gusta es programar.

También me gustaría aclarar que esta serie de artículos no son la panacea para todos nuestros problemas y nos tocará seguir haciendo algunas de estas tareas repetitivas que tanto nos gustan, además antes de implantar nada habría que realizar un estudio sobre cuales nos conviene más utilizar, ya que en algunos casos no conviene abusar de ellos. Es el caso del generador de proyectos, del que hablaremos más adelante, ya que por un lado está muy bien que mediante un solo comando en la consola tengamos generado una aplicación base para el siguiente proyecto que vamos a empezar, pero si lo uso demasiado no llegaré a entender completamente cómo se monta un proyecto desde cero.

Otro punto a destacar es que las ideas que presentaremos en estos artículos son ideas que estamos empezando a implantar, por lo que seguramente haya muchas cosas que se puedan mejorar, e intentaremos ir haciendo un poco de mejora continua, para ir mejorándolos.


Generador de Proyectos

Para este primer artículo sobre automatización, hemos escogido hablar del proceso de crear proyectos base desde cero. Ya que seguro que muchos de vosotros os habéis tenido que volver a montar una y otra vez un proyecto parecido, en el caso de una aplicación MEAN sería:

  • Montar parte servidor:
    • Instalar módulos
    • Definir los entornos
    • Conexiones con la base de datos
    • Utilización de un logger
    • Añadir un ExceptionHandler/Errores
    • Control de sesión
    • Montar pruebas
  • Montar parte cliente
    • Instalar librerías/frameworks
    • Instalar CSS
    • Crear index.html
    • Crear fichero con funciones comunes
    • Crear fichero con constantes
    • etc..

Y seguramente en otros tipos de proyectos sea algo parecido, ya sea en Java, .NET, PHP, Python, etc.., ya que esto de lo que hablamos suele ser algo muy común y en donde a veces solemos gastar tiempo en volver a montar todo de nuevo, y seguramente me diréis….pero si nosotros tenemos proyectos base para ello, pero…esto también puede suponer que una vez hayamos copiado el proyecto “base”, es posible que tengamos que “adaptarlo”, y cuando digo adaptarlo digo cambiar el nombre del proyecto en todos aquellos sitios donde esté referenciado, en caso de que sea parte servidor tendremos que cambiar las conexiones a la base de datos, retocar algunos archivos, etc…pero la realidad es que al final esto supone un coste para la empresa y para la vida del desarrollador. Ahora os propongo el siguiente caso; abro la línea de comandos de mi ordenador, lanzo mi generador de proyectos y mediante una serie de inputs relleno todos los datos del “nuevo” proyecto, y ya está ya tengo el nuevo proyecto montado. ¿Cuánto hemos tardado? ¿Minutos?


Un gran poder conlleva una gran responsabilidad

Pero no todo es oro lo que reluce, y es que como bien dice el título del apartado, tener una herramienta que te permita realizar esta gran tarea, supone primero haberle dedicado mucho tiempo y conocer muy bien el lenguaje en el que vamos a hacer el proyecto base. Además tiene que ser un proyecto que siga pautas de buenas prácticas, que sea entendible por todo el mundo, que esté muy bien documentado, ya que va a pasar a ser utilizado por mucha gente, por lo que no podemos dejar cualquier cosa en el proyecto, TODO tiene que estar justificado y comentado, ya que de nada nos sirve generar un proyecto que no entendemos o que si cambiamos cualquier cosa deja de funcionar el proyecto entero.

Objetivos

En este apartado quiero resaltar cuales son los principales objetivos de automatizar esta tarea, ya que a la larga y si lo hacemos bien, puede suponer grandes ventajas.

  • Automatización: como su propio nombre indica y como hemos ido comentando en el artículo, la principal idea es automatizar dicho proceso.
  • Rapidez: nos va a permitir dedicarle el menor tiempo posible a la generación del proyecto, pudiendo aprovechar dicho tiempo en otras tareas.
  • Escalabilidad: otra de las ideas de esta tarea es la de que se pueda ir aumentando poco a poco, que no sólo abarque proyectos de un lenguaje, o solo proyectos starter, sino que el día de mañana tengamos un generador de proyectos para nuestro equipo, en donde tengamos para poder generar en varios lenguajes, y dentro de cada lenguaje haya un proyecto base para bases de datos SQL y otro proyecto con base de datos No SQL.
  • Orden y centralización: ahora dejarás de tener en distintos repositorios o en distintos directorios los distintos proyectos “base”, sino que los tendrás en un ordenador y centralizados en un solo proyecto. Por lo que no tendrás que gastar tiempo en buscarlos, porque ya están en la herramienta.


Herramientas – BABELGen

Y que pasa si cogemos todas estas ideas y generamos una herramienta que haga todo lo que hemos hablado, pues de aquí nace BABELGen o así es como lo llamamos nosotros.

Seguramente la idea os suene a muchos y seguramente si conocéis Yeoman os sonará todo esto, pero para los que no sabéis que es Yeoman, este es una herramienta que no solo te permite generar proyectos starter de cualquier lenguaje, sino que también te permite crear tus propios generadores, y es aquí de donde sale nuestra criatura.

Por lo que nos pusimos manos a la obra y cogimos algunos de nuestros proyectos “base” que utilizamos en el CDM y los empezamos a pasar a nuestro generador.


Caso de Uso

A continuación vamos a mostrar como generar un Web component de Polymer con el generador de proyectos, ya que nuestra idea era poder crear componentes con una serie de pautas que habíamos definido para BABEL.




Como se puede apreciar en las imágenes, es bastante sencillo poder generar un proyecto, sólo tenemos que lanzar el generador y responder a una serie de preguntas. Una vez tengamos todo el propio generador crea todo y te instala todas las dependencias. A continuación ponemos unas imágenes del Web component generado.


Carlos Goicoechea
Carlos Goicoechea

Desarrollador sénior en BABEL.

logo linkedin compartir en Linkedin Contacto

Otros artículos destacados