Construyendo y Operando un Monolito Componible Moderno

Rate this content
Bookmark

Todo comenzó con la fisión del monolito en microservicios. Esto estableció límites lógicos y físicos, fusionando las dimensiones de infraestructura y software. Si bien los microservicios simplificaron cómo los equipos desarrollan de forma independiente, agregaron complejidades adicionales en torno al rendimiento, la corrección, la gestión general y, en última instancia, un ciclo de desarrollo más lento. En esta charla, profundizaremos en cómo diseñar e implementar un monolito componible basado en Fastify, la comunicación sin red entre servicios y cómo manejar un desarrollo eficiente entre equipos al implementar un único artefacto en Kubernetes. ¿Suena como magia? ¡Descubramos el truco juntos!

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

FAQ

Un monolito componible es un concepto de desarrollo de software que implica escribir aplicaciones monolíticas modularizadas en componentes. Esta metodología permite que los componentes sean gestionados y escalados de manera más eficiente, lo cual es especialmente relevante en el contexto de Node.js.

Luca Maraschi es cofundador y CEO de Platformatic, una empresa enfocada en cambiar la construcción de aplicaciones Node.js en la era moderna.

El monolito componible permite despliegues atómicos sin necesidad de despliegues independientes para cada componente, facilitando así la gestión de versiones y la integración de los componentes, lo que puede ofrecer un rendimiento superior en comparación con los microservicios.

Fastify es un framework de Node.js que apoya el concepto de monolito componible mediante la utilización elegante de complementos y rutas que se pueden agrupar en una sola aplicación, facilitando así la composición y modularidad de la aplicación.

Platformatic es una empresa que ofrece un tiempo de ejecución que permite ejecutar aplicaciones modulares y monolíticas como si fueran componentes independientes, simplificando la gestión de la complejidad en el desarrollo de aplicaciones.

Meraki es una aplicación de Electron desarrollada por Platformatic que proporciona una interfaz de usuario para construir monolitos componibles fácilmente, permitiendo a los usuarios agregar complementos y crear aplicaciones de manera guiada y estructurada.

Platformatic utiliza un enfoque de comunicación entre módulos basado en HTTP sin red, lo que permite un acoplamiento débil y una integración efectiva sin la complejidad de la gestión de redes.

Luca Maraschi
Luca Maraschi
19 min
15 Feb, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
En esta charla, Luca introduce el concepto del monolito componible moderno y discute los desafíos de los microservicios. Él enfatiza la importancia de desarrollar monolitos modulares e introduce Fastify y la Plataforma de Ejecución como herramientas para este enfoque. La Plataforma de Ejecución simplifica la ejecución de aplicaciones modulares y monolíticas, y la estandarización de interfaces y comunicación es crucial en este contexto. Por último, Luca presenta Meraki como una herramienta basada en interfaz de usuario para construir monolitos componibles e invita a los desarrolladores a unirse a su mercado para revolucionar la experiencia operativa de los microservicios.

1. Introducción al Monolito Componible Moderno

Short description:

Hola a todos, soy Luca, cofundador y CEO de Platformatic. Hoy tenemos microservicios, pero ¿hacia dónde nos lleva el futuro? En esta charla, intentaré despertar su curiosidad sobre un nuevo concepto y mostrarles un adelanto de algunos de los materiales que ya hemos construido en Platformatic sobre este tema. Los microservicios unen los límites lógicos con los límites físicos, lo que implica una transformación tecnológica, cultural y de personas. Ofrecen un impulso de rendimiento increíble y una mayor tolerancia a fallos, pero afectan el rendimiento y dificultan la corrección.

Hola a todos, estoy muy emocionado de estar aquí en JS Nation hoy y llevarlos en un viaje, el viaje del monolito componible moderno. Permítanme comenzar presentándome, soy Luca, cofundador y CEO de Platformatic, y junto con mi amigo Matteo Collina y nuestro increíble equipo, tenemos la misión de cambiar completamente el mundo de la construcción de aplicaciones Node.js en la época moderna.

Pueden conectarse conmigo, por favor háganlo en cualquier red social y pueden encontrarme como Luca Maraschi, estoy emocionado de conectarme con ustedes. Pero comencemos con nuestro viaje. Mi abuela Piera siempre me decía que la vida es como una rueda giratoria y en ese momento, créanme, no lo entendía. Pero hoy quiero mostrarles y demostrarles que ella tenía razón. Comencemos.

Como toda historia que hemos escuchado en los últimos años, especialmente en Node, es que una vez hubo un monolito y ahora microservicios. Bueno, hoy, comencemos desde donde dejamos la historia. Hoy tenemos microservicios, pero ¿hacia dónde nos lleva el futuro? En esta charla, intentaré despertar su curiosidad sobre un nuevo concepto, pero especialmente mostrarles un adelanto de algunos de los materiales que ya hemos construido en Platformatic sobre este tema y conectarnos directamente para hacer cualquier pregunta.

Pero comencemos desde donde terminó y se dejó sobre los microservicios. Entonces, los microservicios, unen los límites lógicos con los límites físicos. Y ¿qué significa eso? Básicamente, no solo son una transformación tecnológica, sino también una transformación cultural y una transformación de personas, como decimos en cualquier organización. Siempre que pensamos en Microsoft, pensamos en todos estos hexágonos, ¿verdad? Siendo compuestos entre sí y luego siendo estandarizados en APIs. Porque estamos en la era de las APIs modernas y de la economía de las APIs, como dicen mis amigos de Kong. Y estoy de acuerdo con ellos.

Estamos en medio de la economía de las APIs. Y por un lado, hemos sido extremadamente capaces y motivados por cambiar el mundo de las APIs. Sin embargo, nos hemos estancado un poco en cómo construimos la lógica que respalda todas estas APIs. El núcleo del negocio de todos. Y así, los microservicios por un lado ofrecieron un impulso de rendimiento increíble, ¿verdad? Porque podemos escalar de forma independiente, pensamos en partículas micro de la lógica empresarial de una manera mucho más aislada, ¿verdad? Se volvieron más tolerantes a fallos porque no tenemos estas transacciones enormes que están unificadas en un solo conjunto de lógica empresarial, sino que se distribuyen en varios nodos. Y si un nodo se cae, podemos restaurarlo porque nos dijeron que deben ser sin estado. Así que comenzamos a crear estos límites de abstracción. Creamos esta fachada que nos permite intercambiar las diferentes implementaciones del servicio sin interrumpir a los clientes, ¿verdad? Y esto suena extremadamente emocionante y positivo. Sin embargo, en toda buena historia hay un sin embargo, ya saben, ¿verdad? Esto realmente afectó el rendimiento porque ahora tienes muchos servicios que imaginemos en Kubernetes o en cualquier otro sistema, básicamente se distribuyen en varios nodos y estos nodos necesitan comunicarse. Y cómo se comunican se llama red, ¿verdad? Por otro lado, la corrección se volvió mucho más difícil. Es un sistema distribuido. Es muy difícil gestionar un estado consistente en todos estos servicios diferentes. Y especialmente cuando digo estado, me refiero a estado lógico y estado físico. ¿Está todo igualmente distribuido? ¿Todo se está desarrollando de la misma manera? Y guarden este concepto para más adelante.

2. Desafíos de los Microservicios y el Momento Eureka

Short description:

Se vuelven extremadamente difíciles de gestionar porque son como un sistema distribuido. Impacta directamente a los desarrolladores, ralentizando el ciclo de desarrollo y generando frustraciones. Acoplamos nuestra lógica de aplicación a la estructura de red, lo que dificulta desenredarla. La solución es mirar hacia atrás al monolito componible, un concepto no nuevo pero respaldado por Google en un documento técnico.

Se vuelven extremadamente difíciles de gestionar porque acabamos de decirlo, ¿verdad? Son como un sistema distribuido. Todos se desarrollan, implementan y gestionan de forma independiente, ¿verdad? Esto causa un gran bloqueo en las APIs, ¿verdad? Porque como dijimos antes, las APIs son la agregación de todos estos microservicios. Al final del día, esto impacta directamente a los desarrolladores. Ralentiza el ciclo de desarrollo y añade frustraciones porque hay más barreras que superar antes de que podamos llevar nuestros microservicios a producción.

Pero diría aún más, acoplamos nuestra lógica de aplicación, nuestras aplicaciones, a la estructura de red con una taxonomía de red, y esto se vuelve extremadamente difícil de desenredar. También complica mucho la versión porque los binarios de la aplicación se lanzan de forma independiente. Cada microservicio tiene su propio ciclo de vida. ¿Alguna vez te has preguntado qué versión debería tener este servicio? Esa es una muy buena pregunta. Pero hubo un momento de revelación. Hubo un momento en el que dijimos, hmm, vimos la luz. Y ese fue el momento del monolito componible.

Entonces, ¿cuál es la solución a todos estos problemas? Bueno, probablemente sea mirar hacia atrás y ver dónde comenzamos, ¿verdad? Todos comenzamos criticando y diciendo que el monolito representaba a Java y .NET, ¿verdad? Y al final, si todos recuerdan, esas tecnologías se implementaban como un paquete que se transfería mediante SFTP a un servidor de aplicaciones. Y funcionaba, ¿verdad? Pero lo que realmente no encajaba era el modelo de desarrollo, cómo se creaba este paquete. Este no es un concepto nuevo, ¿verdad? Y no soy el primero. No estamos locos al hablar de este monolito componible. Pero Google escribió un documento técnico diciendo que el futuro del desarrollo moderno en la nube está con un monolito componible. Este es el documento técnico. Recomiendo encarecidamente que lo descarguen y lo lean. Es un documento fenomenal. Personalmente, creo que ofrece una visión fenomenal de las formas modernas de interpretar el desarrollo de software.

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.

Workshops on related 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
Desacoplamiento en Práctica
Node Congress 2023Node Congress 2023
102 min
Desacoplamiento en Práctica
WorkshopFree
Chad Carlson
Chad Carlson
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
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.