¿Qué es CI/CD?
Es un «programa» que automatiza el pasaje a algún ambiente con el nuevo código subido.
CI = Continuous integration
CD = Continuous delivery
A modo de ejemplo, uno de los desarrolladores sube un cambio al repositorio de código, y este cambio es implementado automáticamente a un ambiente de test.
NOTA: Está explicado para que un usuario no técnico o que no conoce del tema se de una noción a fines prácticos reales.
¿Es solo eso?
No. En realidad eso es lo básico que se utiliza. Los casos normales sería todo el proceso de software, desde el plan, el desarrollo, las pruebas, medición hasta que esté operativo. Pero en formatos normales lo que se utiliza es:
Que corra test unitarios
Que verifique integridad de código / que pueda compilarse, que no existan errores.
Que aplique la configuración apropiada. Si subimos el código a un repositorio de test, que pase a un ambiente de test con sus configuraciones. Si es un repositorio de producción, seguramente espere a que una persona haga click en ejecutar el pasaje.
Que avise los cambios pasados o errores encontrados.
Estos son los casos normales. La variación de escenarios son infinitas.

¿Y porque es importante?
Del lado del desarrollador o proceso de software:
Se dedica solo a desarrollar y no en como pasar a un servidor.
Informe en tiempo real de error: Si algo falla, enseguida nos informa no solo a nosotros. Lo mejor es que no llegó nunca a pasarse a ningún ambiente
Evitar el problema del tiempo y «como era esto?». Es normal que una plataforma estable, luego de un tiempo no requiera cambios. Cuando se requiere solucionar un pequeño problema, mucho tiempo a veces lo insume tratando de descubrir nuevamente como era el «pasaje a un ambiente de pruebas de esta aplicación». Esto ya no es necesario.
Del lado del cliente:
Es como si la persona que conoce el sistema y pasaba a producción siempre sea la misma. Se evitan errores.
Se puede incluso con un simple click muchas veces volver a la versión anterior en caso que exista algún problema. – Mucho más rápido y eficiente.
Seguridad: porque no solo se evitan errores, si no que la credenciales son puestas en un lugar seguro del repositorio. No es necesario que nadie más posea las credenciales del servidor productivo.
Y más…porque depende de qué integraciones realices.
Todo muy lindo…pero que desventaja tiene?
Desventaja no le vemos. Solo tiene un costo, que es una inversión. Y depende de que tecnologías o hasta que punto se quiera implementar. En el ejemplo que mostramos en el video sería:
Costo de desarrollo del script de CI/CD
Dependiendo del repositorio y uso que se le de, un costo mensual por usar las herramientas CI/CD. Por ejemplo, GitLab provee 2000 minutos mensuales para ejecutar tareas CI/CD gratis, luego es pago.
Escuche nombrar mucho DevOps…que es?
A fines prácticos y sencillos para un usuario común, la finalidad es la misma que CI/CD, solo que su alcance va muchos más allá.
Lo que busca la práctica de DevOps es dejar de prescindir de una persona de «Infraestructura / El que maneja el servidor a nivel hardware / permisos» para que se creen, se amplíen, se configuren de forma automática y siempre de la misma forma.
Si se quiere, la integración continua automatiza el proceso de desarrollo de software.
DevOps automatiza la solución que requiere toda la plataforma o aplicación de software en base a recursos y estabilidad.
Pero la principal característica que tiene DevOps es que:
Se crean máquinas virtuales: Elimina la posibilidad de que «se actualizó justo el sistema operativo y nuestra app no era compatible con esto». Arma una máquina virtual y la aplicación la incorpora dentro de este. Ver en el video en el minuto que se muestra una consola, se menciona que está levantando una máquina virtual y llega a figurar Docker. Esto sería parte de lo que hace DevOps y nuestro proceso.
Escalabilidad: Existen soluciones cloud o que uno mismo puede armar, que cuando la aplicación tiene mucha demanda, por ejemplo, BlackFriday que próximamente viene, automáticamente crea más máquinas virtuales con mayor capacidad y las publica. Cuando la demanda cesa, esto se da de baja. De esta forma se consumen recursos sólo cuando se necesitan. GCloud, AWS, Azure entre otros tienen varios servicios que hacen esto de forma automática (parcialmente), y te cobran en base a los recursos consumidos, sin que tengas que comprar un «Enorme servidor» para que solo se utilice solo unos momentos de un mes o periodo de tiempo.