Despliegue Atómico para Hipsters de JavaScript

Rate this content
Bookmark

Desplegar una aplicación no es un proceso fácil. Te encontrarás con muchos problemas y puntos de dolor que resolver para que funcione correctamente. Lo peor es: ahora que puedes desplegar tu aplicación en producción, ¿cómo no vas a poder desplegar también todas las ramas del proyecto para tener acceso a vistas previas en vivo? ¿Y poder hacer un revert rápido a pedido?

Afortunadamente, el clásico conjunto de herramientas de DevOps tiene todo lo que necesitas para lograrlo sin comprometer tu salud mental. Al mezclar expertamente Git, herramientas de Unix y llamadas a API, y orquestar todo ello con JavaScript, dominarás el secreto de los despliegues atómicos seguros.

No necesitarás depender de servicios comerciales: ¡conviértete en el maestro perfecto de las herramientas y netlifica tu aplicación desde casa!

FAQ

Una implementación atómica implica desplegar solo los cambios entre dos versiones de una aplicación, de manera que cada versión es autocontenida y se puede revertir fácilmente sin afectar otras partes del sistema.

Netlify utiliza implementaciones atómicas al permitir que los cambios se desplieguen automáticamente a través de un push a una rama en un servidor de versiones como GitHub, facilitando la gestión y visualización de versiones previas y nuevas.

Matt busca que las implementaciones sean configurables, compatibles a largo plazo con cualquier proveedor de alojamiento y que incluyan un micro-CI para la gestión de dependencias y construcción, todo manejado automáticamente por la solución.

Matt utiliza comandos de Git y Bash para automatizar el proceso de implementación, y se apoya en ganchos de Git como post-receive para manejar actualizaciones y despliegues automáticos en el servidor.

Matt emplea una estrategia de enlaces duros para copiar solo los archivos que han cambiado desde la última versión, lo que minimiza el tiempo de inactividad y mantiene cada versión autocontenida y optimizada.

Matt configura las implementaciones para que sean agnósticas a cualquier proveedor de alojamiento y utiliza configuraciones locales de Git para ajustar el entorno del proyecto, garantizando flexibilidad y adaptabilidad a largo plazo.

m4dz
m4dz
25 min
15 Feb, 2024

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla discute el despliegue atómico para JavaScript y TypeScript, centrándose en los procesos de despliegue automatizados, los ganchos de Git y el uso de enlaces duros para copiar los cambios. El orador demuestra cómo configurar un repositorio vacío, configurar variables de despliegue y utilizar el gancho post-receive para enviar los cambios a producción. También se cubre la configuración del entorno, la configuración de las ramas y el proceso de compilación. La charla concluye con consejos sobre casos de uso reales, webhooks y la envoltura del proceso de despliegue.

Available in English: Atomic Deployment for JS Hipsters

1. Introducción a la implementación atómica

Short description:

Vamos a hablar sobre la implementación atómica para Hipsters de JavaScript y TypeScript. En una implementación atómica, tomas dos versiones de una aplicación existente y despliegas los cambios entre ellas. Es autocontenido y elimina la necesidad de preocuparse por las dependencias y la construcción. El objetivo es tener una solución funcional, trabajable y compatible con una experiencia de desarrollo sencilla.

Hola, amigos. Bienvenidos a esta charla para nosotros, la Conferencia de DevOps JS. Vamos a hablar sobre la implementación atómica para Hipsters de JavaScript y TypeScript. Justo antes de comenzar, un poco de información sobre qué es la implementación atómica y la implementación inmutable. En una implementación atómica, tomas dos versiones de una aplicación existente y solo despliegas los cambios entre esas dos versiones, pero todo está autocontenido. Por lo tanto, puedes tomar un archivo completo de una versión en cualquier momento y todo está autocontenido y no tienes que preocuparte por nada al respecto. Esto es lo que hizo que Netlify fuera tan exitoso en el pasado porque de repente solo tenías que hacer push a una rama en tu servidor de versiones como GitHub o cualquier otro, y se desplegaba automáticamente en tu servidor de producción en una URL de preparación como mybranch slash myapp.mydomain.com. Es realmente poderoso porque solo tienes que hacer push de algunos cambios en cualquier tipo de rama y automáticamente tienes muchas vistas previas accesibles directamente. Y cada vez que actualizas tu rama, como actualizar tu PR, la vista previa se actualiza de la misma manera. Así que definitivamente es útil, especialmente cuando el despliegue es un proceso doloroso cuando tienes que preocuparte por las dependencias y la construcción, y así sucesivamente. Entonces, ¿cuál es la forma hipster de hacer este tipo de implementaciones atómicas o inmutables? Mi idea es mantener que funcione. Quiero adherirme a los principios de las implementaciones atómicas e inmutables. Quiero que sea funcional, trabajable y compatible con cualquier proveedor de alojamiento, cualquiera que sea. Y quiero mantener la experiencia de desarrollo sencilla. Como, solo quiero hacer push a mi rama y mi vista previa se despliega o actualiza automáticamente, y eso es todo. Y no me importa cómo usarlo y cómo trabajar con él, y así sucesivamente. Entonces, ¿cuáles son las características esperadas en estas implementaciones específicamente? Quiero que sea configurable porque no quiero rehacer todo el proceso para cada proyecto. Quiero tener algo que se pueda desplegar fácilmente en cualquier tipo de repositorio y donde solo tenga que ajustar algunas variables para configurarlo para este proyecto específico en un momento dado. Quiero que sea compatible a largo plazo, que funcione en cualquier tipo de proveedor de alojamiento en el mundo real. Quiero algún tipo de micro-CI integrado como dependencias de despliegue y construcción, y así sucesivamente. Todo manejado por la solución en sí misma. Por lo tanto, no tengo que preocuparme por nada al respecto. Pero sin las pruebas y demás, no importa. Quiero que el tiempo de inactividad en el despliegue sea mínimo para mantenerlo realmente funcionando. Por lo tanto, no quiero romper algo en producción solo porque hice push a una rama que de repente no se construyó o algo más. Entonces, quiero algún tipo de salvaguardias en algunos puntos para asegurarme de que nada pueda fallar en algún momento. Y quiero que sea auto-publicable. Así que solo quiero hacer push en una rama y boom, mis ramas, mi vista previa asociada a mi rama se actualiza automáticamente. Soy Matt, amigos. Soy un ingeniero de experiencia de desarrollo en Always Data, que es un proveedor de alojamiento, uno independiente.

2. Configuración de la implementación automatizada

Short description:

Te mostraré los fundamentos de nuestro proceso de implementación automatizada con características de implementación atómica e inmutable. Trabajaremos en el servidor, tendremos los hosts web y los repositorios en el mismo lugar y nos basaremos en el acceso remoto SSH. Inicializaré un repositorio vacío y lo vincularé a una nueva aplicación.

Entonces, mi responsabilidad en Always Data es trabajar en la experiencia del desarrollador, más específicamente en la CLI y las herramientas asociadas a la plataforma misma. Lo que te mostraré es definitivamente la base de nuestro proceso de implementación automatizada con características de implementación atómica e inmutable. Actualmente está en proceso de desarrollo en la CLI, pero estará disponible pronto. Estoy muy feliz de compartirlo contigo porque es definitivamente el resultado de mi búsqueda. Así que sumerjámonos en el código para ver cómo funciona. Nuestras premisas para esta charla específica son que trabajaremos en el servidor y todo en un servidor, lo que significa que, sea lo que sea, un contenedor, VPS, metal desnudo, lo que quieras para compartir el contenido en un proveedor de alojamiento, no me importa. Pero la idea es que quiero tener en el mismo lugar los hosts web y los repositorios que son responsables de la implementación atómica, la versión, etc. No es obligatorio para esta solución, pero definitivamente es más simple de explicar. Me basaré en una cuenta de sistema única de alojamiento web como `www` para cualquier distribución basada en Debian, pero digamos que todo será manejado por el mismo usuario del sistema en algún momento, repositorio y hosts web. Nos basaremos mucho en el acceso remoto SSH. Por lo tanto, necesitas un acceso remoto SSH a tu solución. Y no utilizaré webhooks para esto, no es que no me gusten, pero está totalmente fuera del alcance de esta charla. Así que hablaré un poco de ellos en la conclusión. Obviamente, cuando vuelva a hablar de ellos, habremos alcanzado

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

Elevando Monorepos con los Espacios de Trabajo de npm
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Elevando Monorepos con los Espacios de Trabajo de npm
Top Content
Aprenda más sobre cómo aprovechar las características predeterminadas de los espacios de trabajo de npm para ayudarlo a administrar su proyecto monorepo, mientras también explora algunas de las nuevas características de npm cli.
Remix Flat Routes – Una Evolución en el Enrutamiento
Remix Conf Europe 2022Remix Conf Europe 2022
16 min
Remix Flat Routes – Una Evolución en el Enrutamiento
Top Content
Esta charla presenta la nueva convención Flat Routes que probablemente será la predeterminada en una futura versión de Remix. Simplifica la convención existente y también te brinda nuevas capacidades.
Automatizando Todo el Código y las Pruebas con GitHub Actions
React Advanced Conference 2021React Advanced Conference 2021
19 min
Automatizando Todo el Código y las Pruebas con GitHub Actions
Top Content
Las tareas de código como linting y pruebas son partes críticas del flujo de trabajo de un desarrollador que nos ayudan a mantenernos cuerdos, como prevenir problemas de sintaxis o estilo y fortalecer nuestra lógica de negocio central. Hablaremos de cómo podemos usar GitHub Actions para automatizar estas tareas y ayudar a mantener nuestros proyectos funcionando sin problemas.
Ajustando DevOps para las Personas sobre la Perfección
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Ajustando DevOps para las Personas sobre la Perfección
Top Content
La demanda de DevOps ha aumentado en los últimos años a medida que más organizaciones adoptan tecnologías nativas de la nube. La complejidad también ha aumentado y una mentalidad de "cero a héroe" deja a muchas personas persiguiendo la perfección y FOMO. Esta sesión se centra en cambio en por qué tal vez no deberíamos adoptar una práctica tecnológica y cómo a veces los equipos pueden lograr los mismos resultados priorizando a las personas sobre la automatización y controles de operaciones. Veamos las cantidades y el ajuste fino de todo como código, solicitudes de extracción, DevSecOps, Monitoreo y más para priorizar el bienestar del desarrollador sobre la perfección de la optimización. Puede ser una decisión válida desplegar menos y dormir mejor. Y finalmente examinaremos cómo la práctica manual y la disciplina pueden ser la clave para productos y experiencias superiores.
¿Por qué es tan lento el CI?
DevOps.js Conf 2022DevOps.js Conf 2022
27 min
¿Por qué es tan lento el CI?
Todos nos hemos preguntado esto mientras esperamos una eternidad a que termine nuestro trabajo de CI. Un CI lento no solo arruina la productividad del desarrollador, rompiendo nuestra concentración, sino que también cuesta dinero en tarifas de computación en la nube y desperdicia enormes cantidades de electricidad. Vamos a adentrarnos en por qué ocurre esto y cómo podemos solucionarlo con herramientas mejores y más rápidas.
La filosofía de Yarn
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
La filosofía de Yarn
En los últimos años, Yarn se ha convertido en una de las herramientas más comunes utilizadas para desarrollar proyectos de JavaScript, en gran parte gracias a un conjunto de principios rectores. Pero, ¿cuáles son? ¿Cómo se aplican en la práctica a Yarn? Y, lo que es igual de importante, ¿cómo te benefician a ti y a tus proyectos?
En esta charla no nos adentraremos en pruebas de rendimiento o conjuntos de características: en su lugar, aprenderás cómo abordamos el desarrollo de Yarn, cómo exploramos nuevos caminos, cómo mantenemos nuestro código saludable y, en general, por qué creemos que Yarn se mantendrá firmemente establecido en nuestro ecosistema en los próximos años.

Workshops on related topic

Despliegue de aplicaciones React Native en la nube
React Summit 2023React Summit 2023
88 min
Despliegue de aplicaciones React Native en la nube
WorkshopFree
Cecelia Martinez
Cecelia Martinez
Desplegar aplicaciones React Native manualmente en una máquina local puede ser complejo. Las diferencias entre Android e iOS requieren que los desarrolladores utilicen herramientas y procesos específicos para cada plataforma, incluidos los requisitos de hardware para iOS. Los despliegues manuales también dificultan la gestión de las credenciales de firma, las configuraciones de entorno, el seguimiento de las versiones y la colaboración en equipo.
Appflow es la plataforma de DevOps móvil en la nube creada por Ionic. Utilizar un servicio como Appflow para construir aplicaciones React Native no solo proporciona acceso a potentes recursos informáticos, sino que también simplifica el proceso de despliegue al proporcionar un entorno centralizado para gestionar y distribuir tu aplicación en múltiples plataformas. Esto puede ahorrar tiempo y recursos, permitir la colaboración, así como mejorar la confiabilidad y escalabilidad general de una aplicación.
En este masterclass, desplegarás una aplicación React Native para su entrega en dispositivos de prueba Android e iOS utilizando Appflow. También aprenderás los pasos para publicar en Google Play y Apple App Stores. No se requiere experiencia previa en el despliegue de aplicaciones nativas, y obtendrás una comprensión más profunda del proceso de despliegue móvil y las mejores prácticas para utilizar una plataforma de DevOps móvil en la nube para enviar rápidamente a gran escala.
Despliegue de Aplicación MERN Stack en Kubernetes
DevOps.js Conf 2022DevOps.js Conf 2022
152 min
Despliegue de Aplicación MERN Stack en Kubernetes
Workshop
Joel Lord
Joel Lord
Desplegar y gestionar aplicaciones JavaScript en Kubernetes puede volverse complicado. Especialmente cuando una base de datos también debe formar parte del despliegue. MongoDB Atlas ha facilitado mucho la vida de los desarrolladores, sin embargo, ¿cómo se integra un producto SaaS con su clúster de Kubernetes existente? Aquí es donde entra en juego el Operador de MongoDB Atlas. En este masterclass, los asistentes aprenderán cómo crear una aplicación MERN (MongoDB, Express, React, Node.js) localmente y cómo desplegar todo en un clúster de Kubernetes con el Operador de Atlas.
Pruebas automatizadas de accesibilidad con jest-axe y Lighthouse CI
TestJS Summit 2021TestJS Summit 2021
85 min
Pruebas automatizadas de accesibilidad con jest-axe y Lighthouse CI
Workshop
Bonnie Schulkin
Bonnie Schulkin
¿Incluyen tus pruebas automatizadas verificaciones de accesibilidad? Este masterclass cubrirá cómo comenzar con jest-axe para detectar violaciones de accesibilidad basadas en código, y Lighthouse CI para validar la accesibilidad de las páginas completamente renderizadas. Ninguna cantidad de pruebas automatizadas puede reemplazar las pruebas manuales de accesibilidad, pero estas verificaciones se asegurarán de que tus probadores manuales no estén haciendo más trabajo del necesario.
Azure Static Web Apps (SWA) con Azure DevOps
DevOps.js Conf 2022DevOps.js Conf 2022
13 min
Azure Static Web Apps (SWA) con Azure DevOps
WorkshopFree
Juarez Barbosa Junior
Juarez Barbosa Junior
Las Azure Static Web Apps se lanzaron a principios de 2021 y, de forma predeterminada, pueden integrar su repositorio existente y implementar su aplicación web estática desde Azure DevOps. Este masterclass demuestra cómo publicar una Azure Static Web App con Azure DevOps.
Cómo desarrollar, construir e implementar microservicios Node.js con Pulumi y Azure DevOps
DevOps.js Conf 2022DevOps.js Conf 2022
163 min
Cómo desarrollar, construir e implementar microservicios Node.js con Pulumi y Azure DevOps
Workshop
Alex Korzhikov
Andrew Reddikh
2 authors
El masterclass ofrece una perspectiva práctica de los principios clave necesarios para desarrollar, construir y mantener un conjunto de microservicios en el stack Node.js. Cubre los detalles específicos de la creación de servicios TypeScript aislados utilizando el enfoque de monorepo con lerna y yarn workspaces. El masterclass incluye una descripción general y un ejercicio en vivo para crear un entorno en la nube con el framework Pulumi y los servicios de Azure. Las sesiones están dirigidas a los mejores desarrolladores que deseen aprender y practicar técnicas de construcción e implementación utilizando el stack Azure y Pulumi para Node.js.