Desacoplamiento en Práctica

Rate this content
Bookmark

Desplegar aplicaciones desacopladas y de microservicios no es solo un problema que se resuelve el día de la migración. Avanzar con estas arquitecturas depende completamente de cómo será la experiencia del flujo de trabajo de su equipo día a día después de la migración.


La parte más difícil de esto a menudo es la cantidad de proveedores involucrados. Algunos objetivos son más adecuados para frameworks frontend específicos, mientras que otros son más adecuados para CMS y APIs personalizadas. Desafortunadamente, sus suposiciones, flujos de trabajo, APIs y conceptos de seguridad pueden ser bastante diferentes. Si bien hay ciertas ventajas en confiar en un contrato estricto entre aplicaciones, donde el trabajo del equipo backend y frontend se limita a un solo proveedor, esto no siempre es realista. Esto podría ser porque aún están experimentando, o simplemente porque el tamaño de su organización aún no permite este tipo de especialización.


En este masterclass, tendrás la oportunidad de explorar un enfoque diferente y de un solo proveedor para microservicios utilizando Strapi y Next.js como ejemplo. Desplegarás cada aplicación individualmente, estableciendo un flujo de trabajo desde el principio que simplifica la personalización, introduce nuevas características, investiga problemas de rendimiento e incluso permite la intercambiabilidad de frameworks desde el principio.


Estructura:

- Comenzando

- Descripción general de Strapi

- Descripción general del flujo de trabajo de Platform.sh

- Desplegar el proyecto

- Cambiar servicios

- Agregar el frontend


Requisitos previos:

- Crear una cuenta de prueba en Platform.sh

- Instalar la CLI de Platform.sh

This workshop has been presented at Node Congress 2023, check out the latest edition of this JavaScript Conference.

FAQ

Platform.SH es un proveedor de plataforma como servicio que admite varios entornos de ejecución y lenguajes de programación sin restricciones sobre los tipos de frameworks que se pueden implementar. Ofrece soporte para Node.js, Gatsby, Nuxt, Express, Remix, Django, FastAPI, Drupal, Magento, entre otros.

El entorno decoupled en Platform.SH permite la separación del front end y el back end en diferentes contenedores, facilitando el desarrollo y la implementación independiente de cada parte, además de permitir el despliegue de versiones en ambientes separados para modificación o prueba sin afectar el entorno de producción.

Platform.SH permite crear entornos de desarrollo que pueden desinfectar y obfuscar datos de producción, asegurando la protección de la información de identificación personal (PII) y otros datos sensibles durante las pruebas y el desarrollo.

Strapi es un CMS headless que permite definir fácilmente tipos de contenido a través de una interfaz de usuario. En Platform.SH, Strapi se utiliza para crear y gestionar APIs que el front end puede consumir, facilitando la creación de sitios web dinámicos y aplicaciones.

El uso de microservicios en Platform.SH ofrece escalabilidad, facilita la gestión de diferentes servicios de manera independiente y mejora la capacidad de implementar, probar y reparar aplicaciones rápidamente sin afectar todo el sistema.

Chad Carlson
Chad Carlson
102 min
11 Apr, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Platform.SH es un proveedor de plataforma como servicio que admite varios frameworks y entornos de ejecución. En este masterclass, se despliega un proyecto de dos aplicaciones llamado food adviser utilizando Next.js como frontend y Strapi como backend. El proceso implica crear una aplicación de Strapi, gestionar colecciones de contenido, construir la API de Strapi, configurar la base de datos y el panel de administración, desplegar el proyecto en Platform.SH, integrarse con GitHub, configurar rutas y desplegar el backend. El masterclass también cubre el despliegue del frontend, la configuración del frontend y backend, y temas adicionales como la configuración de correo electrónico en Strapi.
Available in English: Decoupling in Practice

1. Introducción a Platform.SH

Short description:

Hola, soy Chad Carlson, el gerente del equipo de DevRel en Platform.SH. Brindamos una plataforma como servicio con soporte para varios frameworks y entornos de ejecución.

Hola de nuevo, mi nombre es Chad Carlson. Soy el encargado del equipo de DevRel en Platform.SH. Esta es mi segunda Node.Congress, la segunda vez que hago una masterclass. Anteriormente, también hice una versión de esta.

Mi experiencia está principalmente en Python, pero desde que trabajo en Platform, se me asignó hace unos años la tarea de explorar mucho sobre este tema de desacoplamiento en nuestra plataforma. Y muchas veces, o al menos cuando me he encontrado con ello, y lo que mucha gente hace, es que a menudo tienen dos objetivos separados para implementar un front end y un back end de una architecture como esta, ya sea muchos, muchos microservicios o simplemente el back end de un CMS y el front end de un framework como Next.JS o Gatsby, sea cual sea. Por ejemplo, implementar el back end en Netlify, y el front end en Purcell, y luego tener que codificar la relación entre los dos. Y luego tener un verdadero desacoplamiento, tanto en los equipos que trabajan en el front end como en el back end, y también en los flujos de trabajo entre estas dos cosas. Por lo tanto, si genero un entorno de desarrollo para el front end, esa nueva versión del front end está obteniendo datos de producción desde donde sea que se haya implementado el back end en el mundo, y viceversa.

2. Despliegue de proyectos multiaplicación en PaS

Short description:

Platform.SH es un proveedor de plataforma como servicio que admite varios frameworks y entornos de ejecución. Le permite implementar aplicaciones utilizando diferentes frameworks y entornos de ejecución, como Next.js, Gatsby, Nuxt, Express, Remix, Django, FastAPI, Drupal y Magento. Platform.SH también le permite agregar recursos a un entorno singular e implementar copias de contenedores en cada entorno. Esto es especialmente útil para la seguridad y la obfuscación de datos, así como para realizar cambios tanto en el front end como en el back end simultáneamente. En esta masterclass, implementaremos un proyecto de dos aplicaciones llamado food adviser, con Next.js como cliente de front end y Strapi como CMS de back end headless. Exploraremos la lógica del back end, configuraremos la plataforma e implementaremos el proyecto en producción.

Entonces, lo que hace que Platform sea un poco diferente es que, en primer lugar, somos un proveedor de plataforma como servicio, y no tenemos restricciones en los tipos de frameworks que puede implementar en nuestra plataforma. Por lo tanto, puede ser Next.js, Gatsby, Nuxt, Express, Remix, pero también puede ser Django, FastAPI, Drupal, Magento, todas estas cosas diferentes que pueden pertenecer a varios entornos de ejecución. Por lo tanto, los admitimos a todos. Si está interesado, probablemente estaremos consultando la documentación mientras hacemos las cosas. Aquí están nuestros documentos públicos, y todos los entornos de ejecución, todos los lenguajes de programación que vienen con soporte incorporado en nuestra plataforma.

Como veremos en un momento, si quiero definir una aplicación que use Node18, puedo hacerlo al mismo tiempo, digamos que estoy extrayendo de un CMS backend de Drupal, con el que muchos de ustedes probablemente estén familiarizados, tienes a mi equipo de contenido en la parte posterior, puedo implementarlo con la misma clave pero usando PHP 8.2 en su lugar. Y además de eso, en lugar de tener este soporte agnóstico del lenguaje, también le permitimos seguir agregando recursos a un entorno singular, ya sea producción, preparación o desarrollo para que pueda implementar copias de estos contenedores en cada entorno. Entonces, cuando hablaba de si tengo dos objetivos de implementación diferentes para el front end y el back end, flujos de trabajo separados y equipos separados mientras realizamos cambios en el front end y el back end. Pero en Platform, como veremos, puedo tener en un solo entorno en lo que llamaremos un proyecto para nuestro repositorio de un conjunto completo de aplicaciones implementadas que incluye el front end y el back end en ese entorno único. Y luego, a medida que realizamos cambios, creo una nueva rama, un nuevo entorno. Obtendré copias exactas de ambos contenedores de aplicaciones en cada entorno. Y así, no necesariamente será lo más importante todo el tiempo para desarrollar nuevas funciones. Pero dos razones por las que me he encontrado, esto se vuelve especialmente útil. Uno es el ángulo de seguridad y PII, información de identificación personal. Si tenemos un sitio web de producción en el que los usuarios inician sesión y queremos crear entornos de desarrollo para cualquier cambio en particular. Es muy fácil dentro de este modelo desinfectar la base de datos para excluir, obfuscar o falsificar por completo ese tipo de datos de producción en estos entornos. Todo forma parte del mismo flujo de trabajo. Y luego, lo segundo es si estamos haciendo algún tipo de migración para agregar un front end diferente o agregar un front end secundario para móviles o cualquier otro caso, Y necesitamos no solo realizar cambios en el front end o solo en el back end, realmente estamos lidiando con cambios en ese contrato en el medio de esa API. Por lo tanto, es posible que necesitemos realizar cambios en ambas aplicaciones simultáneamente. Por lo tanto, resulta realmente útil tenerlas en su propio entorno separado para hacer eso.

Entonces, eso es un resumen rápido del proyecto, ¿qué vamos a hacer hoy? Nuestro objetivo aquí es implementar un proyecto de dos aplicaciones en nuestra plataforma en Platform SH, y el proyecto en el que vamos a trabajar se llama food adviser. Estoy seguro de que muchos de ustedes están familiarizados con Next JS, que será nuestro cliente de front end. Y va a consumir datos de un CMS de back end headless llamado strappy. Si no lo ha escuchado, simplemente proporciona una interfaz de usuario para definir colecciones, ya sea una publicación de blog o en este caso, la cosa que estamos implementando es un sitio web de reseñas de restaurantes que incluye blogs, usuarios, reseñas, restaurantes, comida, categorías, cosas así. Strapi facilita bastante la creación de esos tipos de contenido en la interfaz de usuario en el back end, para luego armar esta API de producción que puede ser consumida por algo como Next JS. Y así, incluso para Strapi, que es su demostración principal. Y no me atribuyo ningún mérito en el desarrollo de las aplicaciones en sí, pero podemos echar un vistazo a cómo se juntan para comprender la lógica, especialmente del back end de Strapi. Y luego agregar la configuración de la plataforma a su alrededor para implementar esto en producción. Eso es en lo que nos enfocaremos hoy. Entonces, voy a compartir un enlace con todos ustedes. Este es un repositorio que he configurado para que pasemos por esta masterclass, así que lo agregaré tanto a Discord como al chat de Zoom. Y básicamente es el punto de partida de cómo vamos a construir esta demostración y luego implementarla pieza por pieza. Así que deshagámonos de eso por ahora. Desde este repositorio principal que acabo de compartir. Bien, lo siento. Hagamos las plantillas de usuarios y creemos una nueva en nuestro espacio de nombres. Y vamos a hacer todo eso. Este soy yo. Si tienen alguna pregunta, soy prácticamente Chad W Carlson en todo. Chad Carlson ha tomado prácticamente todo. Así que vamos a clonar este repositorio localmente. Y mientras eso sucede, la forma en que está estructurado es una breve descripción de la masterclass en el archivo de lectura principal, información de licencia para las demostraciones de food adviser en el upstream incluido en esta nota principal, y luego una. Disculpen, estructura de lo que vamos a pasar aquí. Como dije, el objetivo aquí es hablar un poco sobre este back end y cómo se compone. Implementarlo, conectarse al front end. Y luego, si tenemos tiempo, comenzar a hablar sobre lo que significaría comenzar a cambiar a servicios de producción y desarrollar nuevas funciones como agregar soporte de correo electrónico. La mayoría de los pasos estarán dentro de este conjunto de subdirectorios de pasos de ayuda, y luego el cliente es el código de front end al que llegaremos al final. Veamos, ¿está listo? Sí. Bien, así que abramos esto en VS code.

Watch more workshops on topic

Descomponiendo Monolito NestJS API en Microservicios GRPC
Node Congress 2023Node Congress 2023
119 min
Descomponiendo Monolito NestJS API en Microservicios GRPC
Workshop
Alex Korzhikov
Alex Korzhikov
El masterclass se centra en conceptos, algoritmos y prácticas para descomponer una aplicación monolítica en microservicios GRPC. Presenta una visión general de los principios de arquitectura, patrones de diseño y tecnologías utilizadas para construir microservicios. Cubre la teoría del marco de trabajo GRPC y el mecanismo de protocol buffers, así como técnicas y especificidades de la construcción de servicios TypeScript aislados en el stack de Node.js. El masterclass incluye una demostración en vivo de un caso de uso de descomposición de una aplicación API en un conjunto de microservicios. Es adecuado para arquitectos, líderes técnicos y desarrolladores que deseen aprender patrones de microservicios.
Nivel: AvanzadoPatrones: DDD, MicroserviciosTecnologías: GRPC, Protocol Buffers, Node.js, TypeScript, NestJS, Express.js, PostgreSQL, TurborepoEstructura de ejemplo: configuración de monorepo, configuración de paquetes, utilidades comunes, servicio de demostraciónEjercicio práctico: refactorizar la aplicación monolítica
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.
Cómo Convertir Criptomonedas con Microservicios GRPC en Node.js
JSNation 2023JSNation 2023
117 min
Cómo Convertir Criptomonedas con Microservicios GRPC en Node.js
Workshop
Alex Korzhikov
Andrew Reddikh
2 authors
El masterclass presenta los principios de arquitectura clave, patrones de diseño y tecnologías utilizadas para construir microservicios en el stack de Node.js. Cubre la teoría del marco de trabajo GRPC y el mecanismo de protocol buffers, así como técnicas y especificaciones para construir servicios aislados utilizando el enfoque de monorepo con lerna y yarn workspaces, TypeScript. El masterclass incluye una tarea práctica en vivo para crear una aplicación de conversión de moneda que sigue los paradigmas de microservicios. Es adecuado para desarrolladores que deseen aprender y practicar el patrón de microservicios GRPC con la plataforma Node.js.
Requisitos previos:- Buen entendimiento de JavaScript o TypeScript- Experiencia con Node.js y escribir aplicaciones de backend- Preinstalar Node.js, npm- Preinstalar el Compilador de Protocol Buffer- Preferimos usar VSCode para una mejor experiencia con JavaScript y TypeScript (otros IDE también son aceptables)
Cómo Convertir Criptomonedas con Microservicios en Node.js y gRPC
Node Congress 2022Node Congress 2022
162 min
Cómo Convertir Criptomonedas con Microservicios en Node.js y gRPC
Workshop
Alex Korzhikov
Andrew Reddikh
2 authors
La masterclass ofrece una visión general de los principios de arquitectura clave, patrones de diseño y tecnologías utilizadas para construir microservicios en el stack de Node.js. Cubre la teoría del marco de trabajo gRPC y el mecanismo de protocol buffers, así como técnicas y especificidades para construir servicios aislados utilizando el enfoque de monorepo con lerna y yarn workspaces, TypeScript. La masterclass incluye una tarea práctica en vivo para crear una aplicación de conversión de moneda que sigue los paradigmas de los microservicios. La masterclass "Microservicios en Node.js con gRPC" es ideal para desarrolladores que deseen aprender y practicar el patrón de microservicios gRPC con la plataforma Node.js.

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

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.
Microscopios: Cómo construir una aplicación moderna modular en un mundo de paquetes
JSNation Live 2021JSNation Live 2021
21 min
Microscopios: Cómo construir una aplicación moderna modular en un mundo de paquetes
This Talk discusses the importance of bundling code in the modern JavaScript world and introduces Webpack as the de facto standard for bundling modules. It explores techniques such as code splitting, multiple entry points, and controlling the build process to optimize code organization and improve performance. The Talk also delves into concepts like Universal Model Definition (UMD) and using externals in Webpack to avoid code duplication. It highlights the benefits of separating and maintaining code in an application, as well as the use of micro-frontends and monorepos for scalability and collaboration. Overall, the Talk emphasizes the significance of code separation, dependency management, and efficient bundling strategies for developing robust and modular applications.
Optimizando la Arquitectura de Microservicios para Alto Rendimiento y Resiliencia
Node Congress 2024Node Congress 2024
24 min
Optimizando la Arquitectura de Microservicios para Alto Rendimiento y Resiliencia
Today's Talk discusses microservices optimization strategies for distributed systems, specifically focusing on implementing casual consistency to ensure data synchronization. Vector clocks are commonly used to track the casual relationship between write events in distributed systems. Casual consistency allows for concurrent and independent operations without synchronization, maximizing parallelism and system resource utilization. It enables effective scalability, better latency, and fault tolerance in distributed systems through coordination, resilience, reconfiguration, recovery, and data replication.
Construyendo y Operando un Monolito Componible Moderno
DevOps.js Conf 2024DevOps.js Conf 2024
19 min
Construyendo y Operando un Monolito Componible Moderno
In this talk, Luca introduces the concept of the modern composable monolith and discusses the challenges of microservices. He emphasizes the importance of developing modular monoliths and introduces Fastify and the Platformatic Runtime as tools for this approach. The Platformatic Runtime simplifies running modular, monolithic applications, and standardizing interfaces and communication is crucial in this context. Lastly, Luca introduces Meraki as a UI-driven tool for building composable monoliths and invites developers to join their marketplace for revolutionizing the operational experience of microservices.