QUE SON LOS AUTOMATIZADORES Y QUE PAPEL CUMPLEN EN EL PARADIGMA DEVOPS Y CI/CD.
Los automatizadores en el mundo del desarrollo web en general ayudan a agilizar el proceso de creacion
de una aplicacion web con unos pocos comandos realizando de forma automática todas esas tareas tediosas y repetitivas, alcanzando nuestro objetivo de forma más rápida y con una mejor experiencia de desarrollador.
Algunas de esas tareas podrían ser las siguientes:
Creación del proyecto y su gestión, Actualización y mantenimiento de dependencias, Servidor web local de desarrollo, Minificación de código, Optimización de imágenes, Preprocesar o transpilar código fuente, Despliegue o subida del código final al servidor.
Existen multitud de automatizadores hoy en día, algunos con una filosofía más de automatización de tareas (como Gulp o Grunt) y otros con una filosofía más guiada (pero personalizable) como Webpack o Rollup.
Probablemente, estos sean los más relevantes:
- Browserify: Automatizador centrado en traducir require() (Node) al navegador.
- Gulp: Automatizador Javascript de tareas basado en pipes y flujos.
- Webpack: Bundler enfocado en controlar todo y empaquetar aplicaciones JS.
- Rollup: Bundler empaquetador de aplicaciones con buen soporte ESM.
- Grunt: Automatizador enfocado en gestión de tareas.
- Parcel: Bundler de aplicaciones web enfocado en sencillez de uso.
- Snowpack: Automatizador enfocado en técnicas modernas con buen soporte ESM.
- Esbuild: Bundler Javascript ultra rápido, centrado en el rendimiento.
- Vite: Automatizador de aplicaciones web basado en Rollup y centrado en ESM.
El concepto de automatización en DevOps está destinado a facilitar la agilidad y la colaboración efectiva entre todos los miembros de la organización. Es importante automatizar las tareas repetitivas que, de lo contrario, requerirían esfuerzos manuales, pero también debemos conocer las consecuencias de acelerar los resultados de esas tareas ya que si un proceso es defectuoso, el resultado a través de la automatización es, en consecuencia, defectuoso, y emergería más rápido que el enfoque manual.
El propósito principal de DevOps es lanzar versiones de software de mejor calidad y con mayor frecuencia. La automatización en DevOps debe ser adoptada para lograr este objetivo, sin introducir un efecto neto negativo en la calidad o frecuencia del software lanzado a los usuarios finales.
La CI/CD es un método para distribuir aplicaciones a los clientes con frecuencia mediante el uso de la automatización en las etapas del desarrollo de aplicaciones. Los principales conceptos que se atribuyen a la CI/CD son la integración continua, la distribución continua y la implementación continua. La CI/CD es una solución para los problemas que puede generar la integración del código nuevo a los equipos de desarrollo y de operaciones (también conocida como "Integration Hell").
En concreto, la CI/CD incorpora la automatización continua y el control permanente en todo el ciclo de vida de las aplicaciones, desde las etapas de integración y prueba hasta las de distribución e implementación. Este conjunto de prácticas se conoce como "canales de CI/CD", y cuenta con el soporte de DevOps.