Esa es la parte de CI. Pero ahora que tenemos nuestra aplicación construida y probada y lista para el horario estelar con los usuarios también queremos implementarla. Y CD es la parte de eso que realmente hace la implementación. Y, sí, no importa en qué entorno estés implementando, podría ser un entorno de vista previa para tu aplicación Vue o podría ser un clúster de producción de Kubernetes al que estás tratando de llevar este software o cualquier otra cosa en el medio, en realidad.
Pero, sí, el paso de implementación continua es eso. Y como puedes imaginar, todo este asunto de CI-CD tiene muchas dimensiones de las que esencialmente debemos estar al tanto, debemos pensar en ellas, debemos ocuparnos de ellas para tener éxito. Y, sí, debemos tener éxito en cada una de ellas porque cada una de ellas realmente puede frenarte y evitar que disfrutes desarrollando algo. Así que, sí, en esta charla, desentrañaremos algunas de esas dimensiones y, sí, las desglosaremos y hablaremos de consejos y trucos para ello.
La primera, probablemente la dimensión más obvia en la que podemos pensar es la velocidad. ¿Qué tan rápido se ejecuta tu canal de CI-CD? Eso es lo más obvio en lo que puedes pensar, especialmente si los desarrolladores confían en tu CI para decirles si su trabajo está pasando todas las pruebas, es exitoso. Tan pronto como puedas proporcionarles esa información, mejor, porque pueden continuar su trabajo, pero hay más en la velocidad, mucho, mucho más en la velocidad. El otro podría ser el tiempo de recuperación de una compilación fallida. Si estás pensando que si estás trabajando en una rama principal y fusionas algo que no pasa la compilación, entonces, la compilación esencialmente se vuelve roja en lugar de verde, quieres que vuelva a ser verde, que vuelva a pasar lo más rápido posible porque tu rama principal es esencialmente donde puedes implementar todas las actualizaciones para tus usuarios, para tus probadores, para tus interesados. Así que, sí, esa es otra faceta muy importante de la velocidad.
Y luego hay consideraciones de velocidad organizativa, como el tiempo para lanzar una función, cuánto tiempo necesita mi equipo desde que recibe un mandato de un gerente de productos para una nueva función hasta que realmente la implementa para los usuarios. CI definitivamente puede ayudarte a construir eso de manera continua y obviamente CD definitivamente puede ayudarte a llevar eso a los usuarios tan pronto como sea posible, tan pronto como esté listo, y, sí, todas las actualizaciones también. Y por último, hay cosas en las que quizás no pienses en términos de velocidad, pero podrían ayudarte a integrar nuevos miembros del equipo porque, como dije, todo está configurado en código, todos pueden leer YAML, con suerte. Entonces, un nuevo miembro del equipo puede simplemente señalar esta configuración de CI/CD y decir, `estos son los entornos, todo, todos los trabajos que estamos haciendo, todos los diferentes tipos de pruebas. Tal vez estés haciendo pruebas unitarias, tal vez estés haciendo pruebas de integración, tal vez estés iniciando algunas pruebas de humo también. Tal vez estés haciendo un despliegue canario, como un tipo de despliegue realmente avanzado, y un nuevo miembro del equipo puede entender lo que está sucediendo y luego hacerte preguntas sobre porciones individuales de esa canalización esencialmente automatizada, lo cual es hermoso. De todos modos, velocidad. Ejecutar las cosas más rápido. Lo primero que debes hacer es realmente pensar si estás ejecutando las cosas en el tamaño correcto de máquinas. Entonces, tienes una computadora portátil de desarrollo y probablemente tenga una cierta cantidad de gigabytes de RAM, una cierta cantidad de procesadores virtuales o hilos con los que puedes trabajar. Y si tu computadora portátil está construyendo algo en un minuto y tu CI tarda cinco minutos, tal vez tu CI necesite más recursos para acelerar más, literalmente, para que funcione más rápidamente. El segundo son cosas como la caché. Por ejemplo, la caché es simplemente reutilizar cosas que ya has hecho. Por ejemplo, los módulos de node, has ejecutado npm install una vez, tal vez si tu package.json no ha cambiado realmente, tal vez eso sea suficiente por ahora, no necesitas actualizar todas las dependencias. Tal vez solo puedas almacenarlas y extraerlas de la caché la próxima vez para no tener que cargarlas en cada momento individual. Tal vez estés utilizando algunas técnicas de almacenamiento en caché avanzadas, técnicas de pruebas con algunas utilidades de pruebas, y para eso tal vez no quieras instalar todo en tu contenedor Docker, tal vez puedas usar una imagen de Docker que ya tenga todo eso preinstalado.
Comments