El Auge de la Pila Transaccional Moderna

Rate this content
Bookmark
Slides

Las bases de datos y los backends transaccionales son el latido de nuestra vida cotidiana: alimentan casi todas las transacciones en el mundo moderno, desde reservar boletos de avión hasta pedir comida en Doordash. El estado actual de impulsar estas transacciones hoy en día se basa en una arquitectura pesada de microservicios, aprovechando cachés y colas para preservar el estado de la transacción y OLTP que garantiza la idempotencia y la consistencia. La próxima evolución de esta pila es reemplazar la caché/colas con un orquestador central: motores de flujo como Cadence y Conductor. Todo esto sucede en lo que tradicionalmente llamamos "el backend", pero está surgiendo una nueva pila para el mundo de JavaScript: cada vez más proyectos nuevos se escriben solo en JavaScript/TypeScript, y este grupo de proyectos comparte una pila única a diferencia de lo que hemos visto anteriormente. La presentación profundizará en la historia y evolución de los cambios de plataforma, y se centrará en los problemas transaccionales más emocionantes presentados en el mundo de los monolitos modernos que son nativos de la periferia, 100% JavaScript, y argumentará por qué la palabra "serverless" está desactualizada :)

7 min
06 Jun, 2023

Video Summary and Transcription

La charla de hoy explora los cambios arquitectónicos en las transacciones, destacando la dominancia de JavaScript en la pila transaccional moderna y la eliminación de la división entre frontend y backend. El uso de herramientas sin servidor y basadas en componentes permite la provisión de infraestructura escalable y elimina la necesidad de equipos de DevOps. Además, los motores de flujo desempeñan un papel crucial en la orquestación de funciones asíncronas en el mundo nativo sin servidor.

Available in English

1. Architectural Shifts in Transactions

Short description:

Hoy compartiré interesantes cambios arquitectónicos en el contexto de las transacciones. JavaScript está ganando en la arquitectura antigua, donde los microservicios se dividen entre el cliente y el servidor. En la pila transaccional moderna, el servidor sin servidor y JavaScript son los únicos que alimentan toda la aplicación. Ya no hay frontend y backend, y plataformas como Superbase, Convex y Upsash eliminan la necesidad de gestionar la infraestructura del backend.

Hola a todos. Mi nombre es Yoko. Soy una dibujante técnica, desarrolladora, gerente de productos y, por último, socia en H16z invirtiendo en el ecosistema de JavaScript y herramientas para desarrolladores. Hoy me gustaría compartir algunos cambios arquitectónicos interesantes que he visto después de hablar con cientos de desarrolladores y empresas tecnológicas. Estoy poniendo las arquitecturas en el contexto de las transacciones, ya que son tan fundamentales para nuestra vida diaria. Son la base de cosas como la emisión de boletos de avión, la entrega de alimentos a nuestras puertas y la reserva de cuidadores de gatos y perros. Y estamos viendo un cambio importante en cómo los desarrolladores utilizan y razonan sobre las tecnologías aquí.

Bueno, spoiler alert, JavaScript siempre gana. Así que hablemos de por qué y cómo. Ahora, aquí está la arquitectura que verás en el mundo antiguo. Como puedes ver, hay un montón de microservicios divididos entre el cliente y el servidor porque utilizan diferentes lenguajes, y también porque los desarrolladores frontend y backend no pueden ponerse de acuerdo entre sí. Cuando ves la ruta de una solicitud, por ejemplo, al realizar un pedido, esta se autentica y luego se envía a una API. El punto final de la API deberá orquestar cientos de microservicios para entregar una transacción comercial al usuario. Luego pasará por servicios de gestión de inventario, procesamiento de pedidos, procesamiento de pagos, entre otros. En este punto, los desarrolladores utilizan colas y cachés, como se puede ver en la mitad inferior de la imagen, para almacenar lo que llamamos estados de la aplicación, como `pedido recibido` o `pedido pagado`. Los desarrolladores también codificarán manualmente la lógica de reintento para obtener los datos en las bases de datos y cruzarán los dedos y esperarán lo mejor. Hemos descubierto que a medida que el sistema escala, también lo hace la complejidad de gestionar colas, cachés y casos especiales. Ahora vemos que muchas empresas comienzan a construir sus nuevos proyectos de manera muy diferente.

Ahora ingresa a la pila transaccional moderna, donde ya no necesitas aprovisionar y gestionar cientos y miles de microservicios. En su lugar, hemos llegado a un punto en el que el servidor sin servidor y JavaScript por sí solos son suficientes para alimentar toda la aplicación. Es posible que te preguntes qué es la pila transaccional moderna. En primer lugar, es completamente JavaScript y el backend es atendido por un proveedor. A veces, el proveedor es sin servidor. Ya no hay lo que llamamos frontend y backend. Todos son ingenieros full stack y ya no hay APIs, ya que está escrito en el mismo lenguaje de programación. Ahora tienes cosas como componentes de servidor y TRPC simplemente llamando a una función. Vemos que cada vez más empresas adoptan este patrón a medida que avanzan. Lo que tradicionalmente llamamos backend, ahora tenemos plataformas como Superbase, Convex, Upsash y otros que pueden eliminar por completo la necesidad de que los desarrolladores de aplicaciones gestionen directamente la infraestructura del backend.

2. Modern Transactional Stack and Workflow Engines

Short description:

Solía aprovisionar infraestructura todo el tiempo y no es divertido. En esta arquitectura, también utilizarás servicios que pueden escalar hasta 0 y escalar rápidamente según la demanda. Eliminando por completo la necesidad de equipos de DevOps. Otra característica de la pila transaccional moderna es que está impulsada por herramientas impulsadas por componentes. Para la autenticación, ya no necesitas lidiar con herramientas de nivel inferior que tradicionalmente usan los ingenieros de backend. Ahora puedes simplemente elegir herramientas como Clerc y usar un componente de firma de React. Para el almacenamiento de objetos, puedes usar algo llamado UploadThing nativamente en React en lugar de usar AWS S3 directamente. Por último, a medida que las empresas utilizan más APIs y aceptan más webhooks, deben lidiar con funciones asíncronas a gran escala. Los motores de flujo desempeñan un papel central en el mundo nativo sin servidor, orquestando funciones asíncronas. Si quieres hablar más, no dudes en enviarme un mensaje directo en Twitter a staff Yoko Draws. Gracias.

Créeme, no quieres trabajar en AWS. Solía aprovisionar infraestructura todo el tiempo y no es divertido. En esta arquitectura, también utilizarás servicios que pueden escalar hasta 0 y escalar rápidamente según la demanda. Eliminando por completo la necesidad de equipos de DevOps. Upsash es un gran ejemplo de esto.

En segundo lugar, otra característica de la pila transaccional moderna es que está impulsada por herramientas impulsadas por componentes. Para la autenticación, ya no necesitas lidiar con herramientas de nivel inferior que tradicionalmente usan los ingenieros de backend. Ahora puedes simplemente elegir herramientas como Clerc y usar un componente de firma de React. Otro buen ejemplo aquí es un proyecto de código abierto llamado React Email. Ya no tienes que codificar HTML básico para correos electrónicos transaccionales y ahora puedes usar React y Tailwind directamente en tu correo electrónico. Para el almacenamiento de objetos, esto es algo de lo que muchos ingenieros me hablan, incluso yo mismo, cómo aprender AWS. Pero ahora puedes usar algo llamado UploadThing nativamente en React en lugar de usar AWS S3 directamente.

Por último, un aspecto destacado de esta pila es que a medida que las empresas utilizan más APIs, más funciones y aceptan más webhooks, básicamente tienen que lidiar con funciones asíncronas a gran escala. Entonces, cuando esto sucede, debe haber un lugar central para orquestar estas cosas, ya que los reintentos hechos a mano son difíciles. Ahora comenzamos a ver motores de flujo desempeñando un papel central en el mundo nativo sin servidor. Y la forma de entenderlos es que son los orquestadores de funciones asíncronas. Aquí está la intuición. Si tu aplicación maneja cientos de registros de usuarios y luego envía un montón de correos electrónicos de bienvenida a los usuarios, puedes usar herramientas como ingest para escribir unas pocas líneas de código TypeScript para definir qué funciones se deben activar cuando ocurre un evento de registro. También volverá a intentar esta parte de la lógica automáticamente con un retraso exponencial si ese proceso falla. Y en el lado del cliente, si quieres, puedes usar la capa de autoría de la máquina de estados llamada xState. Lo conecto con el motor de flujo. Es un proyecto súper genial, hace que las cosas sean mucho más fáciles de entender en comparación con Redux, que solía usar todo el tiempo.

Probablemente haya horas y días de cosas de las que hablar en una pila que vemos una y otra vez aquí en la era sin servidor. Si quieres hablar más, no dudes en enviarme un mensaje directo en Twitter a staff Yoko Draws. Y eso es todo lo que tengo hoy. Gracias. Espero poder hablar más en persona.

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

Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Scaling Up with Remix and Micro Frontends
Top Content
Do you have a large product built by many teams? Are you struggling to release often? Did your frontend turn into a massive unmaintainable monolith? If, like me, you’ve answered yes to any of those questions, this talk is for you! I’ll show you exactly how you can build a micro frontend architecture with Remix to solve those challenges.
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Full Stack Components
Top Content
Remix is a web framework that gives you the simple mental model of a Multi-Page App (MPA) but the power and capabilities of a Single-Page App (SPA). One of the big challenges of SPAs is network management resulting in a great deal of indirection and buggy code. This is especially noticeable in application state which Remix completely eliminates, but it's also an issue in individual components that communicate with a single-purpose backend endpoint (like a combobox search for example).
In this talk, Kent will demonstrate how Remix enables you to build complex UI components that are connected to a backend in the simplest and most powerful way you've ever seen. Leaving you time to chill with your family or whatever else you do for fun.
React Advanced Conference 2022React Advanced Conference 2022
29 min
Understanding React’s Fiber Architecture
Top Content
We've heard a lot about React's Fiber Architecture, but it feels like few of us understand it in depth (or have the time to). In this talk, Tejas will go over his best attempt at understanding Fiber (reviewed by other experts), and present it in an 'explain-like-I'm-five years old' way.
React Finland 2021React Finland 2021
36 min
The Eternal Sunshine of the Zero Build Pipeline
For many years, we have migrated all our devtools to Node.js for the sake of simplicity: a common language (JS/TS), a large ecosystem (NPM), and a powerful engine. In the meantime, we moved a lot of computation tasks to the client-side thanks to PWA and JavaScript Hegemony.
So we made Webapps for years, developing with awesome reactive frameworks and bundling a lot of dependencies. We progressively moved from our simplicity to complex apps toolchains. We've become the new Java-like ecosystem. It sucks.
It's 2021, we've got a lot of new technologies to sustain our Users eXperience. It's time to have a break and rethink our tools rather than going faster and faster in the same direction. It's time to redesign the Developer eXperience. It's time for a bundle-free dev environment. It's time to embrace a new frontend building philosophy, still with our lovely JavaScript.
Introducing Snowpack, Vite, Astro, and other Bare Modules tools concepts!
React Summit 2022React Summit 2022
17 min
Composition vs Configuration: How to Build Flexible, Resilient and Future-proof Components
Top Content
There are many ways of authoring components in React, and doing it right might not be that easy, especially when components get more complex. In this talk, you will learn how to build future-proof React components. We will cover two different approaches to building components - Composition and Configuration, to build the same component using both approaches and explore their advantages and disadvantages.
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Remix Architecture Patterns
Top Content
Remix provides amazing flexibility and can be deployed anywhere where JavaScript is running. But how does Remix fit into the bigger application landscape of an organization? Remix provides great utility, but how to best take advantage of it? What things should be handled inside of Remix, and what things are better off done elsewhere? Should we use the express adapter to add a WebSocket server or should that be a standalone microservice? How will enterprise organizations integrate Remix into their current stacks? Let’s talk architecture patterns! In this talk, I want to share my thoughts about how to best integrate Remix into a greater (enterprise) stack.

Workshops on related topic

DevOps.js Conf 2024DevOps.js Conf 2024
163 min
AI on Demand: Serverless AI
Top Content
Featured WorkshopFree
In this workshop, we discuss the merits of serverless architecture and how it can be applied to the AI space. We'll explore options around building serverless RAG applications for a more lambda-esque approach to AI. Next, we'll get hands on and build a sample CRUD app that allows you to store information and query it using an LLM with Workers AI, Vectorize, D1, and Cloudflare Workers.
React Summit 2022React Summit 2022
50 min
High-performance Next.js
Workshop
Next.js is a compelling framework that makes many tasks effortless by providing many out-of-the-box solutions. But as soon as our app needs to scale, it is essential to maintain high performance without compromising maintenance and server costs. In this workshop, we will see how to analyze Next.js performances, resources usage, how to scale it, and how to make the right decisions while writing the application architecture.