Éxito de CI/CD para Desarrolladores de Vue

Rate this content
Bookmark

Esta charla cubrirá las mejores prácticas para el rendimiento, estabilidad, seguridad y mantenibilidad de los pipelines de CI/CD, cada uno respaldado con ejemplos prácticos y contraejemplos y adaptado a los desarrolladores de Vue.js.

23 min
21 Oct, 2021

Video Summary and Transcription

La charla de hoy discute el éxito de CI y CD con Vue.js, enfatizando la importancia de la automatización en la entrega de software. El orador comparte consejos aplicables a todos los sistemas de CI-CD y lenguajes de programación, explicando el concepto de integración continua (CI) y su papel en la construcción y prueba automática de cambios. La atención a la velocidad, el tiempo de recuperación y las consideraciones organizativas son cruciales para el éxito de CI-CD. Técnicas como el almacenamiento en caché y la división de trabajos pueden mejorar la velocidad, mientras que la automatización y el escaneo de seguridad ayudan a mantener un entorno seguro. En última instancia, CI-CD es una responsabilidad del equipo que permite lanzamientos frecuentes y adaptabilidad al cambio.

Available in English

1. Introducción al éxito de CI/CD con Vue.js

Short description:

Hoy hablaremos sobre el éxito de CI y CD con Vue.js. La diferencia entre las dos opciones radica en la automatización. El ciclo de vida de entrega de software se puede comparar con el cultivo y cuidado de cultivos. El trabajo manual cumple con el objetivo, pero no es tan reproducible.

Muy bien. Hola. Gracias por recibirme. Hoy hablaremos sobre el éxito de CI y CD con Vue.js en particular. Pero primero, comencemos con un ejercicio de reflexión. Piensa en un momento en el que te estabas preparando para lanzar un software. Tal vez sea algo en lo que hayas estado trabajando durante la última semana. Tal vez sean las últimas cuatro semanas. Tal vez sean los últimos seis meses. Esperemos que no sea mucho más tiempo que eso.

De todos modos, todo ha sido probado, todo está listo. Solo está esperando que presiones ese gran botón rojo, que luego inicia el proceso de implementación y pone el software en manos de tus usuarios. Entonces, sin más preámbulos, presionas ese gran botón rojo. Tiene un agradable clic audible. Es muy satisfactorio, con una agradable retroalimentación táctil. Como solo puede tener un buen teclado mecánico. Y luego comienza la carrera. El software está fuera de tus manos y se está implementando. Y en cuestión de minutos, tal vez horas, dependiendo de lo que estés implementando y cómo se haga, este software será utilizado por tus usuarios. Y todo lo que puedes hacer es contener la respiración y quedarte en silencio.

Y luego tienes dos opciones. Opción uno. Sigues conteniendo la respiración, sudando, y esperando nerviosamente a que comience a explotar, que aparezcan algunos errores y tus usuarios se quejen. Opción B, empacas y te vas a casa, porque son las 4 pm de un viernes y has hecho tu trabajo. Yo ciertamente prefiero la opción B, en parte porque son las 4 pm de un viernes cuando estoy grabando esto, pero también porque es algo más agradable de hacer si quieres disfrutar de tu fin de semana. De todos modos, la diferencia entre las dos, sin embargo, siempre se reduce a la automatización, y siempre se reduce a la automatización, desde el software hasta los procesos, la fabricación, y sí, también la agricultura. Bueno, hoy no hablaremos de agricultura. Me gusta comparar el ciclo de vida de entrega de software con el proceso de cultivar y cuidar cultivos. Entonces, si imaginas que tienes un campo como este, puedes tener cientos de personas trabajando en ese campo, plantando todo, recogiendo todo manualmente, regando, deshierbando, todas esas cosas. Haciéndolo manualmente con cientos de personas, cumple con el objetivo, pero no es tan reproducible como uno quisiera.

2. CI-CD Success with Vue.js

Short description:

Los sistemas de CI-CD, como un invernadero perfectamente ajustado con procesos automatizados, pueden mejorar enormemente la eficiencia. Sin embargo, es importante recordar que cualquier problema que surja generalmente se debe a errores humanos. El ponente, En Marken, un defensor del desarrollo en CircleCI, comparte consejos y trucos aplicables a todos los sistemas de CI-CD y lenguajes de programación. En Marken explica el concepto de integración continua (CI) y su papel en la construcción y prueba automática de cambios enviados a repositorios remotos. El proceso de CI incluye la ejecución de pruebas, el escaneo de seguridad y la generación de una aplicación construida en un entorno aislado.

Por supuesto, puedes hacerlo con muchas menos personas si utilizas algunos tractores, si implementas sistemas de riego o llevas esto unos cuantos pasos más allá y pones todo en un invernadero con atmósfera controlada, iluminación controlada, nutrientes controlados que se alimentan directamente a cada planta individual, y me gusta imaginar que estas manos robóticas utilizan la visión por computadora para recoger las plantas en su mejor madurez para venderlas óptimamente. Y eso es a lo que me gusta comparar un sistema de CI-CD realmente ajustado.

Todo está automatizado. Todo está fuera de tus manos y las cosas simplemente funcionan. Hasta que, por supuesto, no lo hacen. Y aunque no espero que tu sistema de CI-CD y los robots en un invernadero se levanten de repente y se conviertan en dinosaurios que intenten matarnos a todos, definitivamente pueden A, arruinar tus cultivos, y B, tu sistema de CI-CD definitivamente puede arruinarte el día si has implementado algo que no es realmente desplegable. Pero no te preocupes. Nunca es culpa de la máquina. Siempre somos nosotros, ya sabes. Siempre somos los humanos que programamos estas máquinas, y es nuestra culpa romper las cosas.

Y con ese pensamiento en mente, mi nombre es En Marken. Soy un defensor del desarrollo en CircleCI y rompo muchas cosas. Y a menudo soy el problema entre el teclado y la silla. Esta charla se titula Éxito de CI-CD con Vue.js y para desarrolladores de Vue.js. Pero los consejos y trucos que estoy compartiendo aquí son esencialmente universales para todos los sistemas de CI-CD, para todos los lenguajes de programación, sin importar lo que estés construyendo o cómo lo estés haciendo. La mayoría de las cosas siempre serán ciertas. Como mencioné, trabajo para CircleCI. Hemos estado aquí durante 10 años. Somos el proveedor líder mundial de CI-CD y un gran número de equipos de todo el mundo que trabajan en muchas plataformas diferentes, lenguajes de programación y paradigmas de programación nos utilizan, incluyendo partes de Vue.js también, lo cual es realmente genial poder hablarles sobre esto ahora. Así que sí, esto no es para hablar de CircleCI. Esta es una charla sobre las mejores prácticas, optimización, consejos y trucos de CI-CD en general para ayudarte a aprovechar al máximo. Pero como estamos hablando de CI-CD, ¿qué significa realmente? ¿Qué significa en realidad?

Entonces, es un doble acrónimo donde CI significa integración continua. Esta es la práctica de construir y probar automáticamente todos los cambios a medida que se envían a repositorios remotos por parte de los desarrolladores. Así que si estás trabajando en un proyecto de GitHub con un equipo, cada vez que haces un commit, el proceso de CI ejecutará esencialmente todas tus pruebas, realizará todas las verificaciones que puedas tener, como el escaneo de seguridad, análisis de código estático y, en última instancia, producirá una aplicación construida. Además de que esto sucede automáticamente, todo también ocurre en aislamiento. Ahí es donde viene la analogía del invernadero. Porque todas las construcciones, todas las pruebas se ejecutan en máquinas virtuales o contenedores Docker, que se crean desde cero. Simplemente especificas el tipo de entorno que deseas y luego todos los pasos necesarios. Todo también está configurado con un archivo de configuración que se encuentra dentro del mismo repositorio, en CircleCI usamos YAML, pero podrías usar cualquier otro formato para eso. Pero en última instancia, sí, codificas, todo está vinculado al mismo commit y todo es reproducible.

3. Dimensiones de CI-CD y Consideraciones de Velocidad

Short description:

Ahora que la aplicación está construida y probada, comienza la fase de implementación. El éxito de CI-CD requiere atención a múltiples dimensiones, incluyendo la velocidad, el tiempo de recuperación de compilaciones fallidas y las consideraciones de velocidad organizativa. La configuración basada en código también facilita la integración de nuevos miembros del equipo. Para mejorar la velocidad, considera los recursos asignados a tu CI, como el tamaño de la máquina, y utiliza técnicas de almacenamiento en caché para reutilizar el trabajo previo.

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.

4. Speed, Failures, and Signal in CI/CD

Short description:

Puedes almacenar en caché y dividir trabajos para acelerar el proceso. Elige qué pruebas ejecutar según tus necesidades. Recupérate de las fallas más rápido comprendiendo tus compilaciones y depurándolas. La velocidad de CI-CD debería ser como una ambulancia, rápida pero manteniendo la señal de calidad.

Estas son todas las cosas que puedes almacenar en caché y realmente ayudarte a acelerar todo el proceso en muchas ejecuciones. Hablando de ejecuciones, los propios trabajos, como la construcción, testing, varios tipos de testing también se pueden ejecutar en paralelo. Y también se pueden dividir, especialmente si tienes una suite de pruebas de integración de larga duración o muchas pruebas funcionales que abarcan diferentes partes de tu aplicación como lo haría un usuario. Puedes dividir esas pruebas dentro de una sola suite de pruebas en múltiples trabajos de prueba paralelos, que esencialmente ejecutan solo una parte de eso, lo que obviamente reduce significativamente el tiempo.

Y, por supuesto, puedes elegir qué se ejecuta cuando quieras ejecutarlo. Por ejemplo, tal vez, sí, quieres ejecutar tus pruebas, tal vez quieres ejecutar algunas pruebas funcionales, pero no necesitas ejecutar todas ellas. Solo necesitas hacer esa parte mínima y luego hacer esa implementación previa de tu sitio web, que es suficiente para la mayoría de los casos de uso. Pero luego, cuando estés listo para fusionar esto en la rama principal, prepararte para un lanzamiento, quieres ejecutar todas las pruebas.

Entonces, esa es la velocidad en general. Pero, ¿qué pasa cuando las cosas no salen como se planean? A veces simplemente rompes las cosas. Para eso, realmente quieres recuperarte de las fallas mucho más rápido. El primero es comprender qué está sucediendo en tus compilaciones. Como registrar todo, poder obtener esos registros. Esto depende de tus frameworks, de tus herramientas. Pero realmente invierte tiempo en comprenderlos, comprender cómo leer los registros, cómo obtener esa información y aprovechar al máximo tu CI-CD. Porque hay información ahí dentro.

Y mi cosa favorita es poder debug tus compilaciones cuando fallan. A veces tu entorno fallará, algo en tu entorno fallará. Con CircleCI, por ejemplo, tenemos esta función genial llamada SSH debug. Entonces, básicamente, te conectas por SSH a ese entorno y puedes ver qué está sucediendo cuando tus pruebas han fallado. Tal vez haya algo mal con el estado. Tal vez haya algo mal con la database a la que te estás conectando. Y realmente te ayuda a debug rápidamente las cosas. Pero sí, la velocidad está bien. Todos estamos tratando de ir lo más rápido posible. Pero sabes qué, no es una carrera. Es muy importante, pero sí, no es una carrera. Y la velocidad de CI-CD debería verse más como una ambulancia. Así que definitivamente debería ir rápido, pero aún mantener esa carga, mantener esa señal viva. Entonces, la señal significa la calidad de tu aplicación que te dice, eh, todas mis pruebas han pasado o algunas han fallado.

5. CI-CD Seguridad y Responsabilidad del Equipo

Short description:

Cuando se trata de seguridad, es importante mantener las credenciales dentro del sistema CI/CD y automatizar el escaneo de seguridad. También existen otras características y servicios externos más allá de la herramienta CI/CD que se pueden integrar. El CI/CD es una responsabilidad del equipo y ayuda a recuperarse de las fallas y permite lanzamientos frecuentes y propensos a errores. El objetivo final es poder entregar software según tus propios términos, enfocarte en la calidad y la felicidad del equipo, y adaptarte más rápido al cambio.

Y sí, obviamente cuando las luces rojas están parpadeando, cuando la compilación está en rojo en tu rama principal, arréglalo lo antes posible. No lo dejes esperando. De todos modos, esa velocidad.

Ahora, pensemos en algunas otras cosas como security, algo que realmente puede ralentizarte mientras estás construyendo cosas. Como muchos de ustedes probablemente saben, sí, una revisión de security definitivamente puede ralentizarte. Pero también hay formas de controlar la security con un sistema CI/CD. El primero y más importante es mantener las credenciales dentro del sistema CI/CD y utilizarlo para afinar tus políticas de control de acceso y permitir solo a quienes tienen los permisos adecuados enviar o implementar en un entorno específico o simplemente mantener las credenciales fuera de tus repositorios de Git, al menos. Eso es algo que puedes hacer. Y el siguiente es automatizar el escaneo de security. Sabes lo vulnerables que son, lo fácil que es introducir una biblioteca vulnerable o incluso comprometida en tu aplicación y existen herramientas disponibles que se integran en tu flujo CI/CD y automatizan todo eso por ti para que no estés filtrando los números de tarjeta de crédito o los números de pasaporte de tus clientes desde el frontend, lo cual es horrible. Entonces, sí, estas son las cosas en las que puedes pensar cuando piensas en la security.

Pero sí, hay más en el ecosistema que solo el sistema CI/CD y hay características más allá de la herramienta CI/CD. Primero, obviamente, están las características incorporadas, ¿hay algo disponible que no estás utilizando? Vale la pena leer los registros de lanzamiento, las notas de lanzamiento cada par de meses y ver, hey, tal vez han lanzado algo genial y realmente podemos utilizar esto y pensar si hay algún servicio externo que estás utilizando, tal vez herramientas de gestión de proyectos que estás utilizando que podrías integrar y simplemente vincularlo a tu flujo CI/CD e informar a todos sobre tu proceso. Y, por supuesto, nunca es una charla de DevOps si no hablamos del equipo. Y sí, mencioné que tu configuración es definitivamente una ayuda para la incorporación, pero también vale la pena reiterar que el CI/CD nunca es responsabilidad de una sola persona. Siempre es responsabilidad del equipo y lograr que todos estén a bordo para al menos comprender lo que está sucediendo, si no para poder introducir y sugerir mejoras a todo el proceso porque eso les beneficiará a todos. Y obviamente hemos iniciado la implementación al principio y a veces todo va bien, pero a veces no. Sucederán cosas que romperán algún software, romperán algunas implementaciones, y deberás volver a un estado funcional. Afortunadamente, tenemos una máquina del tiempo porque todo está vinculado a un commit. Simplemente podemos revertir a un commit anterior y reiniciar ese proceso, y tu proceso CI/CD definitivamente puede ayudarte a recuperarte mucho más rápido de lo que tendrías que... que podrías pensar en hacerlo manualmente. Y sí, otra cosa es porque estamos haciendo todas esas testing, todas estas testing, todas esas verificaciones todo el tiempo, podemos enviar cambios mucho más pequeños mucho más frecuentemente y tener lanzamientos que son mucho menos propensos a errores porque hay menos cosas que hacer. Y, sí. Lo mejor para esto es, lo mejor para prepararse es planificar y realmente prepararse y practicar para comprender, hey, hemos roto algo, ¿cómo lo recuperamos? Hagamos una prueba en seco. Implementémoslo de nuevo en el entorno de pruebas, veamos cómo funciona, cómo está preparado el equipo. En última instancia, sin embargo, para mí, tener éxito con un sistema CI/CD significa ser libre. Y ser libre significa poder entregar software en los términos que realmente controlas. Y eso es lo mejor que puedes obtener de ello. Y puedes enfocarte en la calidad, puedes enfocarte en la felicidad del equipo. Y siempre puedes adaptarte más rápido al cambio porque puedes enviar constantemente y lanzar cosas mucho más rápido de lo que lo harías sin todo el enfoque de... un enfoque de invernadero. Y sí, como beneficio tienes este proceso de compilación, prueba e implementación auto-documentado que cualquiera puede leer y utilizar y, obviamente, recuperarte de las fallas mucho más rápido porque a, todos comprenden todo el proceso y b, todo es reproducible. Mi nombre es Anne Marken. Esta fue una charla sobre el éxito con CI/CD para Vue.js. Espero que lo hayas disfrutado.

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

Vue.js London Live 2021Vue.js London Live 2021
34 min
Everything Beyond State Management in Stores with Pinia
Top Content
When we think about Vuex, Pinia, or stores in general we often think about state management and the Flux patterns but not only do stores not always follow the Flux pattern, there is so much more about stores that make them worth using! Plugins, Devtools, server-side rendering, TypeScript integrations... Let's dive into everything beyond state management with Pinia with practical examples about plugins and Devtools to get the most out of your stores.
Vue.js London Live 2021Vue.js London Live 2021
20 min
One Year Into Vue 3
Top Content
Vue 3 may still sound new to many users, but it's actually been released for over a year already. How did Vue 3 evolve during this period? Why did it take so long for the ecosystem to catch up? What did we learn from this process? What's coming next? We will discuss these questions in this talk!
Vue.js London Live 2021Vue.js London Live 2021
8 min
Utilising Rust from Vue with WebAssembly
Top Content
Rust is a new language for writing high-performance code, that can be compiled to WebAssembly, and run within the browser. In this talk you will be taken through how you can integrate Rust, within a Vue application, in a way that's painless and easy. With examples on how to interact with Rust from JavaScript, and some of the gotchas to be aware of.

Workshops on related topic

Vue.js London Live 2021Vue.js London Live 2021
169 min
Vue3: Modern Frontend App Development
Top Content
Featured WorkshopFree
The Vue3 has been released in mid-2020. Besides many improvements and optimizations, the main feature of Vue3 brings is the Composition API – a new way to write and reuse reactive code. Let's learn more about how to use Composition API efficiently.

Besides core Vue3 features we'll explain examples of how to use popular libraries with Vue3.

Table of contents:
- Introduction to Vue3
- Composition API
- Core libraries
- Vue3 ecosystem

Prerequisites:
IDE of choice (Inellij or VSC) installed
Nodejs + NPM
Vue.js London Live 2021Vue.js London Live 2021
117 min
Using Nitro – Building an App with the Latest Nuxt Rendering Engine
Top Content
Workshop
We'll build a Nuxt project together from scratch using Nitro, the new Nuxt rendering engine, and Nuxt Bridge. We'll explore some of the ways that you can use and deploy Nitro, whilst building a application together with some of the real-world constraints you'd face when deploying an app for your enterprise. Along the way, fire your questions at me and I'll do my best to answer them.
Vue.js London 2023Vue.js London 2023
137 min
TresJS create 3D experiences declaratively with Vue Components
Workshop
- Intro 3D - Intro WebGL- ThreeJS- Why TresJS- Installation or Stackblitz setup - Core Basics- Setting up the Canvas- Scene- Camera- Adding an object- Geometries- Arguments- Props- Slots- The Loop- UseRenderLoop composable- Before and After rendering callbacks- Basic Animations- Materials- Basic Material- Normal Material- Toon Material- Lambert Material- Standard and Physical Material- Metalness, roughness - Lights- AmbientLight- DirectionalLight- PointLights- Shadows- Textures- Loading textures with useTextures- Tips and tricks- Misc- Orbit Controls- Loading models with Cientos- Debugging your scene- Performance
Vue.js London Live 2021Vue.js London Live 2021
176 min
Building Vue forms with VeeValidate
Workshop
In this workshop, you will learn how to use vee-validate to handle form validation, manage form values and handle submissions effectively. We will start from the basics with a simple login form all the way to using the composition API and building repeatable and multistep forms.

Table of contents:
- Introduction to vee-validate
- Building a basic form with vee-validate components
- Handling validation and form submissions
- Building validatable input components with the composition API
- Field Arrays and repeatable inputs
- Building a multistep form
Prerequisites:
VSCode setup and an empty Vite + Vue project.
DevOps.js Conf 2022DevOps.js Conf 2022
152 min
MERN Stack Application Deployment in Kubernetes
Workshop
Deploying and managing JavaScript applications in Kubernetes can get tricky. Especially when a database also has to be part of the deployment. MongoDB Atlas has made developers' lives much easier, however, how do you take a SaaS product and integrate it with your existing Kubernetes cluster? This is where the MongoDB Atlas Operator comes into play. In this workshop, the attendees will learn about how to create a MERN (MongoDB, Express, React, Node.js) application locally, and how to deploy everything into a Kubernetes cluster with the Atlas Operator.