Infra vs Apps: ¿Dónde están mis Pipelines?

Rate this content
Bookmark

La automatización de una única aplicación monolítica es bastante sencilla. Divídela en una parte frontal y una parte trasera y aún es manejable. Agrega más componentes o infraestructura y de repente te estarás rascando la cabeza preguntándote por qué se ejecutó o no se ejecutó una compilación. ¿Cuántos pipelines necesito? ¿Cuántos repositorios de git debería tener? Vamos a revisar casos de uso desde equipos pequeños que poseen toda su pila hasta organizaciones con unidades de TI centralizadas que administran infraestructura compartida. Aprende qué escenarios y criterios determinan cómo dividir pero no convertir en espagueti tus pipelines.

This talk has been presented at DevOps.js Conf 2021, check out the latest edition of this JavaScript Conference.

FAQ

CICD se refiere a la integración continua y la entrega continua, un método para entregar aplicaciones e infraestructura de manera eficiente y segura a través de la automatización en las fases de desarrollo, prueba y producción.

Julie ha trabajado como ingeniera full-stack, Arquitecta Empresarial en Allianz Alemania y actualmente es ingeniera en Microsoft, formando parte del programa Fast Track para Azure.

Julie prefiere Jenkins porque lo considera su servidor de compilación favorito, a pesar de también utilizar Azure DevOps y GitHub Actions.

En el contexto de CICD, las aplicaciones monolíticas pueden ser manejadas mediante un mono repositorio, donde los cambios se empujan a la rama principal y se implementan automáticamente en el entorno de producción utilizando herramientas como Jenkins.

Julie destaca que al dividir una aplicación, como separar el backend del frontend, surge la confusión sobre qué componente implementar y cómo manejar múltiples componentes y disparadores en el sistema CICD.

Las pruebas de extremo a extremo son críticas en CICD para asegurar que las aplicaciones funcionen como se espera antes de su despliegue en producción, ya que permiten verificar la funcionalidad completa del sistema.

Julie menciona que Kubernetes puede complicar el proceso de CICD debido a su enfoque en la infraestructura, que incluye manejar múltiples almacenes de datos y configuraciones de enrutamiento, lo que aumenta la complejidad y los puntos de fallo potenciales.

Julie enfatiza la coordinación entre equipos y la importancia de la comunicación efectiva para manejar la complejidad en CICD, especialmente en grandes organizaciones donde los equipos deben trabajar juntos para resolver problemas y mejorar procesos.

Julie Ng
Julie Ng
32 min
01 Jul, 2021

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla sobre CI/CD abarca varios casos de uso, desafíos y mejores prácticas. Se enfatiza la importancia de las personas y el aprendizaje en CI/CD, así como la complejidad de coordinar equipos y administrar infraestructura. El orador comparte ideas sobre el desarrollo frontend, los microservicios y las consideraciones de seguridad. La charla concluye con discusiones sobre archivos Jenkins, scripts bash y los desafíos de DevOps en las organizaciones.

1. Introducción a CICD y Mi Experiencia

Short description:

Hola, mi nombre es Julie. Soy ingeniera en Microsoft y hoy voy a hablarles sobre CICD y cómo funciona todo, y cómo funciona cuando tienes aplicaciones e infraestructura. Formo parte del programa Fast Track para Azure, lo que significa que ayudo a incorporar a los clientes a Azure. Antes de eso, fui Arquitecta Empresarial en Allianz Alemania, que es una compañía de seguros multimillonaria, y en realidad muchas de las opiniones y recomendaciones que les voy a dar hoy provienen de esa experiencia, así como de mi experiencia en Microsoft. Vengo del mundo Mac, de código abierto. Me gusta Node.js, Ruby, realmente no me gusta Windows. Soy una persona muy opinativa, así que trataré de mencionar cuando algo es mi opinión personal y recomendación. La foto que puse aquí es nostálgica porque fue literalmente la última semana de febrero antes del confinamiento debido a la Corona. Así que se siente muy extraño no solo trabajar de forma remota sin haber conocido nunca a tus colegas, sino también dar una charla en este momento a través de video. Pero parece funcionar.

Hola, mi nombre es Julie. Soy ingeniera en Microsoft y hoy voy a hablarles sobre CICD y cómo funciona todo, y cómo funciona cuando tienes aplicaciones e infraestructura.

Así que un poco sobre mí. Como dije, soy ingeniera en Microsoft. Formo parte del programa Fast Track para Azure, lo que significa que ayudo a incorporar a los clientes a Azure. Antes de eso, fui Arquitecta Empresarial en Allianz Alemania, que es una compañía de seguros multimillonaria, y en realidad muchas de las opiniones y recomendaciones que les voy a dar hoy provienen de esa experiencia, así como de mi experiencia en Microsoft. Antes de eso, fui ingeniera full-stack, y todavía lo soy, y diseñadora.

Así que vengo del mundo Mac, de código abierto. Me gusta Node.js, Ruby, realmente no me gusta Windows. Soy una persona muy opinativa, así que trataré de mencionar cuando algo es mi opinión personal y recomendación. La foto que puse aquí es nostálgica porque fue literalmente la última semana de febrero antes del confinamiento debido a la Corona. Así que se siente muy extraño no solo trabajar de forma remota sin haber conocido nunca a tus colegas, sino también dar una charla en este momento a través de video. Pero parece funcionar.

2. CICD Use Cases and Mono Repo with Jenkins

Short description:

Hoy les voy a presentar varios casos de uso para CICD. Comencemos con un mono repositorio y Jenkins como servidor de compilación. Después de hacer un push a la rama principal, Jenkins implementa en el entorno de producción. Para asegurarnos de que funcione, necesitamos entrega continua y promoción automatizada. Ejecutar pruebas de extremo a extremo en la aplicación implementada ayuda a verificar su funcionalidad. Si las pruebas fallan, el trabajo se detiene. Si pasan, Jenkins realiza los cambios en la rama de producción, lo que desencadena otro trabajo para implementarlo.

De acuerdo, comencemos con un ejemplo muy simple. Hoy les voy a presentar varios casos de uso. Voy a intentar empezar de forma sencilla, y luego se vuelve realmente complicado muy rápidamente, pero la idea es enseñarles a pescar, y no darles un pez, cuando se trata de descubrir CICD por ustedes mismos.

Así que empecemos con lo más fácil posible, ¿verdad? Un mono repositorio, porque venimos de los monolitos. Muy simple. Voy a hacer un push y un servidor de compilación lo recogerá. Así que aquí tengo Jenkins. Jenkins es mi servidor de compilación favorito de todos los tiempos. Sí, también uso Azure DevOps y GitHub Actions, pero aún prefiero Jenkins.

De todos modos, digamos que hago un push a la rama principal. Se implementará en mi entorno de producción. Digamos que eventualmente estoy satisfecho. De alguna manera, en mi computadora local, hago cambios sin piedad en producción, y luego hago push de los cambios a producción y Jenkins los implementa en mi entorno de producción. Todo está bien, creo. ¿Cómo sabes que realmente funciona? Sabes, como ese tipo de CI que simplemente va allí. Hace algunas tareas. Pero ¿realmente funciona? ¿Cómo llegas al punto de la entrega continua? ¿Puedes hacer promoción automatizada? Eso es un poco más complicado de lo que muchas personas esperan cuando lo hacen por primera vez.

Entonces, todavía tenemos el mismo mono repositorio, la misma especie de aplicación monolítica. Vamos a hacer un push a nuestra rama principal, que recuerden, corresponde a nuestro entorno de desarrollo. Jenkins lo habrá implementado. Todo está listo. Ejecutemos algunas pruebas de extremo a extremo. Así que en este ejemplo teórico, digamos que tengo una aplicación de una sola página que en realidad tiene un conjunto de pruebas de extremo a extremo, que abrirá un navegador, hará clic en todo. Y lo que mi usuario final intenta hacer en la aplicación, podemos verificar que funcione como se espera. Así que tal vez pueda comprar una camiseta, por ejemplo. Según los resultados de esa prueba, si no funcionan, entonces decimos, oh, falló, fin del trabajo, fin de la historia, fin del trabajo de compilación, eso es. Digamos que realmente funciona. Lo que puedes hacer es hacer que Jenkins haga ese commit por ti en esa rama de producción. Mientras antes, tal vez hayas hecho clic en todo manualmente para asegurarte de que funcione, ahora puedes ejecutar un conjunto de pruebas de extremo a extremo y decir, okay, tengo confianza, implementémoslo en producción, lo que iniciará otro trabajo, y luego lo implementaremos en producción.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

¿Por qué es tan lento el CI?
DevOps.js Conf 2022DevOps.js Conf 2022
27 min
¿Por qué es tan lento el CI?
Slow CI has a negative impact on productivity and finances. Debugging CI workflows and tool slowness is even worse. Dependencies impact CI and waiting for NPM or YARN is frustrating. The ideal CI job involves native programs for static jobs and lightweight environments for dynamic jobs. Improving formatter performance and linting is a priority. Performance optimization and fast tools are essential for CI and developers using slower hardware.
Poner fin al dolor: Repensando CI para Monorepos Grandes
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Poner fin al dolor: Repensando CI para Monorepos Grandes
Today's Talk discusses rethinking CI in monorepos, with a focus on leveraging the implicit graph of project dependencies to optimize build times and manage complexity. The use of NX Replay and NX Agents is highlighted as a way to enhance CI efficiency by caching previous computations and distributing tasks across multiple machines. Fine-grained distribution and flakiness detection are discussed as methods to improve distribution efficiency and ensure a clean setup. Enabling distribution with NX Agents simplifies the setup process, and NX Cloud offers dynamic scaling and cost reduction. Overall, the Talk explores strategies to improve the scalability and efficiency of CI pipelines in monorepos.
Despliegue Atómico para Hipsters de JavaScript
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Despliegue Atómico para Hipsters de JavaScript
This Talk discusses atomic deployment for JavaScript and TypeScript, focusing on automated deployment processes, Git hooks, and using hard links to copy changes. The speaker demonstrates setting up a bare repository, configuring deployment variables, and using the post-receive hook to push changes to production. They also cover environment setup, branch configuration, and the build process. The Talk concludes with tips on real use cases, webhooks, and wrapping the deployment process.
Cómo construir tuberías de CI/CD para una aplicación de microservicios
DevOps.js Conf 2021DevOps.js Conf 2021
33 min
Cómo construir tuberías de CI/CD para una aplicación de microservicios
Top Content
This Talk discusses the benefits of microservices and containers for building CI-CD pipelines. It explains how container technology enables portability and scalability. The challenges of microservices include network communication and testing in isolation. The Talk introduces Tacton, a cloud-native CICD pipeline for Kubernetes, and highlights the use of GitOps and Argo CD. It also discusses the importance of maintaining referential integrity between microservices and the evolving role of operators in the DevOps world.
Pruebas automatizadas de regresión de rendimiento con Reassure
React Advanced Conference 2022React Advanced Conference 2022
16 min
Pruebas automatizadas de regresión de rendimiento con Reassure
Today's Talk introduces Reacher, a performance monitoring tool for React and React Native codebases. It highlights the need for catching performance regressions early in the development process and identifies JavaScript misusage as a common source of performance issues. ReaSure, developed by Covstack, is presented as a promising library that integrates with existing ecosystems and provides reliable render time measurements and helpful insights for code review. Considerations for operating in a JavaScript VM are discussed, including JIT, garbage collection, and module resolution caching. Statistical analysis using the z-score is mentioned as a method for determining the significance of measurement results.
Cómo hacer CI/CD correctamente en 2021: Una guía para CI y CD
DevOps.js Conf 2021DevOps.js Conf 2021
9 min
Cómo hacer CI/CD correctamente en 2021: Una guía para CI y CD
This talk provides an introduction to CI/CD, discussing its key components and how to succeed with it. It emphasizes the importance of speed, safety, and scaling in CI/CD, highlighting the need for unit tests, value stream management, metrics, and addressing deployment challenges. The talk also emphasizes the continuous nature of DevOps and the importance of gathering feedback and releasing changes to a subset of users.

Workshops on related topic

Despliega una aplicación de componentes web y configura un flujo de integración continua
DevOps.js Conf 2022DevOps.js Conf 2022
111 min
Despliega una aplicación de componentes web y configura un flujo de integración continua
Workshop
Philippe Ozil
Philippe Ozil
Únete a nosotros en un masterclass en el que desplegarás una aplicación Node.js simple construida con componentes web y configurarás un flujo de integración continua (CI). Aprenderás sobre el poder del Lightning Web Runtime (LWR) y las GitHub Actions.
Aporta Calidad y Seguridad al pipeline de CI/CD
DevOps.js Conf 2022DevOps.js Conf 2022
76 min
Aporta Calidad y Seguridad al pipeline de CI/CD
WorkshopFree
Elena Vilchik
Elena Vilchik
En esta masterclass repasaremos todos los aspectos y etapas al integrar tu proyecto en el ecosistema de Calidad y Seguridad del Código. Tomaremos una aplicación web simple como punto de partida y crearemos un pipeline de CI que active el monitoreo de calidad del código. Realizaremos un ciclo completo de desarrollo, comenzando desde la codificación en el IDE y abriendo una Pull Request, y te mostraré cómo puedes controlar la calidad en esas etapas. Al final de la masterclass, estarás listo para habilitar esta integración en tus propios proyectos.
Potenciando tu CI/CD con GitHub Actions
DevOps.js Conf 2022DevOps.js Conf 2022
155 min
Potenciando tu CI/CD con GitHub Actions
Workshop
David Rubio Vidal
David Rubio Vidal
Obtendrás conocimiento sobre los conceptos de GitHub Actions, como:- El concepto de secretos de repositorio.- Cómo agrupar pasos en trabajos con un propósito determinado.- Dependencias y orden de ejecución de trabajos: ejecutar trabajos en secuencia y en paralelo, y el concepto de matriz.- Cómo dividir la lógica de los eventos de Git en diferentes archivos de flujo de trabajo (en empuje de rama, en empuje a master/principal, en etiqueta, en implementación).- Para respetar el concepto de DRY (No te repitas), también exploraremos el uso de acciones comunes, tanto dentro del mismo repositorio como desde un repositorio externo.
Depuración de aplicaciones JavaScript en CI/CD
DevOps.js Conf 2022DevOps.js Conf 2022
124 min
Depuración de aplicaciones JavaScript en CI/CD
Workshop
Cecelia Martinez
Cecelia Martinez
- Causas de compilaciones fallidas en pipelines de CI/CD- Enfoques para la depuración (revisión de registros, acceso a entornos, reproducción de problemas)- Depuración de causas relacionadas con la aplicación (pruebas fallidas, compilaciones de la aplicación fallidas)- Depuración de causas relacionadas con el pipeline (configuración del pipeline, problemas de entorno, problemas de contenedor)
CI/CD 101 con CircleCI
DevOps.js Conf 2021DevOps.js Conf 2021
149 min
CI/CD 101 con CircleCI
Workshop
Angel Rivera
Zan Markan
2 authors
Los conceptos de Integración Continua y Entrega/Despliegue Continuo (CI/CD) son cada vez más adoptados por muchas organizaciones y equipos tecnológicos. CI/CD permite a los equipos establecer procesos que aumentan la velocidad, colaboración y calidad de su código. CI/CD permite a los equipos de desarrollo y operaciones romper silos innecesarios y obtener un conocimiento más profundo de sus respectivas áreas.
En este masterclass, los participantes serán introducidos a los fundamentos básicos de la Integración Continua y Entrega/Despliegue Continuo. Los participantes aprenderán los principios fundamentales de CI/CD y tendrán la oportunidad de reforzar lo que han aprendido en un taller práctico con la plataforma CircleCI. El taller demostrará la configuración de construcción de CI/CD, confirmaciones de código, construcción de confirmaciones, pruebas de código y empaquetado. Los participantes se irán con una experiencia práctica y comprensión de lo que implica CI/CD.
Tabla de contenidos- Introducción al tema de CI/CD y motivación para ello- Cómo se construyen y despliegan diferentes tipos de proyectos JavaScript (desde sitios estáticos hasta APIs)- Resumen de los pasos manuales comunes y cómo podríamos automatizarlos- Implementación de un pipeline de CI/CD desde cero- Resumen de los orbs de CircleCI- Pruebas en múltiples versiones de Node- Depuración de construcciones con SSH- Caché de dependencias- Seguridad / escaneo de vulnerabilidades- Despliegue en diferentes salidas
Requisitos previos- Código y git instalados- Cuenta de GitHub
github.com/CircleCI-Public/cicd-workshop-js