Construyendo Backends Confiables con Ejecución Duradera

Rate this content
Bookmark
Sylwia Vargas
Sylwia Vargas
21 min
04 Apr, 2024

Comments

Sign in or register to post your comment.
  • James S
    James S
    I was disappointed that this ended up being an ad for a SaaS instead of ways to build reliable backends without throwing money at the problem.

Video Summary and Transcription

Esta Charla explora el paradigma de las colas de mensajes para la ejecución confiable de backends. Destaca los beneficios de las colas de mensajes, como la entrega garantizada y la descarga de procesos de larga duración. Se discuten las desventajas de usar colas, incluyendo la complejidad de gestionar la infraestructura y las aplicaciones. Se presenta la solución de usar una capa de confiabilidad llamada Ingest, que permite tareas en segundo plano sin bloqueo y proporciona un panel de control para monitorear y gestionar trabajos. La Charla también enfatiza la importancia de la confiabilidad en la construcción de sistemas de software e introduce el alcance y la funcionalidad en expansión de Ingest.

1. Introducción a las Colas de Mensajes

Short description:

Hola a todos. Bienvenidos a mi charla sobre confiabilidad, backend y ejecución. Discutiré el paradigma que facilita la vida. Ahora estamos viviendo en una constante nostalgia de los años 90. Los años 90 nos trajeron muchas cosas geniales, pero hay una cosa de la que podríamos despedirnos: las colas. Las colas de mensajes son una forma de comunicación asincrónica entre servicios. Permiten una entrega garantizada y la descarga de procesos de larga duración.

Hola a todos. Bienvenidos a mi charla donde, durante los próximos 20 minutos, hablaré sobre confiabilidad, backend y ejecución. Solo una breve introducción. Mi nombre es Sylvia Vargas. Soy de Polonia. Me encantan los pierogi y anteriormente trabajé en StackBlitz. Ahora soy líder de relaciones con desarrolladores en Ingest. Esta charla trata sobre el paradigma que facilita la vida. Pero antes de hablar de lo bueno, hablemos de lo malo. Ahora estamos viviendo en una constante nostalgia de los años 90. Y, por supuesto, esto no es sorprendente. Los años 90 nos trajeron muchas cosas diferentes, cosas geniales que todavía están con nosotros. Sin embargo, hay una cosa de la que posiblemente podríamos despedirnos. Y estas son las colas. Así que veamos qué son las colas de mensajes. Una cola de mensajes es una forma de comunicación asincrónica entre servicios utilizando una arquitectura de microservicios. Los mensajes se almacenan en la cola hasta que se procesan y se eliminan. Cada mensaje es procesado solo una vez por un único consumidor. Pero aquí necesito interrumpir porque en realidad, varios trabajadores pueden consumir mensajes de una cola. Para preservar el orden de las tareas, deberán ejecutarse en serie. Pero volviendo a la definición ahora. Y las colas de mensajes se pueden usar para desacoplar el procesamiento pesado para almacenar o agrupar trabajos y suavizar las cargas de trabajo pico. Entonces puedes pensar en que una vez que agregas algo a la cola, llegará a su destino uno por uno. La entrega está garantizada. Y lo que sucede en la cola no afecta otras partes de la infraestructura. Y las colas pueden ser realmente masivas. Así que recapitulemos. Con las colas, obtienes entrega garantizada porque sabes que una vez que algo se agrega a la cola, solo la dejará una vez que se procese. Y las colas permiten a los desarrolladores descargar procesos de larga duración al fondo para que tu aplicación no se atasque. Usarías colas para tareas intensivas de datos.

2. Drawbacks of Using Queues

Short description:

Y otra ventaja de las colas es la escalabilidad horizontal. Sin embargo, hay inconvenientes en el uso de colas. Construir infraestructura adicional y gestionar aplicaciones complejas puede ser mucho trabajo. En tiempos de presupuestos y recursos limitados, vale la pena considerar si gestionar colas es la elección correcta. En cambio, la ejecución duradera nos permite definir la lógica del flujo de trabajo en el código de nuestra aplicación y garantiza una ejecución confiable.

procesos o al integrarse con sistemas externos. Y otra ventaja es la escalabilidad horizontal porque se pueden procesar varios mensajes en paralelo. A medida que aumenta la carga de trabajo, las aplicaciones múltiples pueden manejar un alto rendimiento y seguir siendo confiables. Sin embargo, hay un pero. Así que veamos este comentario de Reddit. Las colas son geniales en procesos intensivos de datos, como dije, que no necesitan ejecutarse en el hilo principal porque se ejecutan de forma asincrónica. Las tareas se procesan en segundo plano y la aplicación sigue siendo receptiva. Sin embargo, hay algunos inconvenientes en las colas, que este usuario de Reddit menciona delicadamente en esta cita. Una vez que tomas algo de la cola, el resto depende de ti. Y el servicio de encolado ya no se preocupa. Entonces, ¿qué significa eso? Veamos eso. Las colas son geniales cuando tu aplicación es simple. Cuando crece en complejidad o si es distribuida, de repente necesitas preocuparte por toda una serie de infraestructura adicional que necesitas construir. Y serás tú quien tenga que construirla. Por ejemplo, deberás construir concurrency porque quieres poder controlar cuántos pasos se ejecutan al mismo tiempo. O, por ejemplo, debouncing porque todos sabemos lo costoso que es cuando las funciones se ejecutan varias veces. O persistencia y gestión de estado porque ahora que tienes una aplicación distribuida o compleja, debes compartir el estado entre diferentes funciones y colas. Luego también está el manejo de errores porque ¿qué pasa si hipotéticamente un proveedor de servicios tiene una interrupción? Deberás incluir reintentos y también fallos. Quiero decir, reintentos para fallos y también tiempos de espera. Y en ese caso, también necesitas herramientas de recuperación para comprender y procesar los errores y eventos fallidos. Esto ya suena como mucho trabajo y ni siquiera es una lista exhaustiva. Así que no tienes que escucharme a mí en eso. En momentos como este, cuando los presupuestos de ingeniería y las plantillas se reducen, nosotros como desarrolladores e ingenieros individuales debemos hacer más con menos. Entonces, realmente vale la pena preguntarse en este momento, ¿realmente quieres estar en el negocio de gestionar y operar tus propias colas? Bueno, Matthew Druker, el CEO de SoundCloud, no cree que debamos hacerlo. Entonces, si esto es ahora un conocimiento común, ¿por qué la gente sigue usando colas? Bueno, estamos acostumbrados a algo. Se siente familiar y acogedor incluso si no es la solución más acogedora. Puedes hacer que todo funcione con el esfuerzo suficiente. Afortunadamente, hay una mejor solución que se basa en el concepto de colas de mensajes. Entonces, en lugar de separar nuestra infraestructura, como las colas, de nuestro código, ¿qué tal si pudiéramos definir nuestra lógica de flujo de trabajo puramente en nuestro código de aplicación y asegurarnos de que se ejecute de manera confiable? Esto es lo que nos ofrece la ejecución duradera. La ejecución duradera es, como su nombre indica, duradera. Garantiza que nuestro código se ejecute.

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

Vite: Repensando las Herramientas de Frontend
JSNation Live 2021JSNation Live 2021
31 min
Vite: Repensando las Herramientas de Frontend
Top Content
Vite es una nueva herramienta de construcción que pretende proporcionar un flujo de trabajo más delgado, rápido y sin fricciones para la construcción de aplicaciones web modernas. Esta charla se sumergirá en el trasfondo del proyecto, la justificación, los detalles técnicos y las decisiones de diseño: qué problema resuelve, qué lo hace rápido y cómo encaja en el panorama de las herramientas JS.
Compilador React Forget - Entendiendo React Idiomático
React Advanced Conference 2023React Advanced Conference 2023
33 min
Compilador React Forget - Entendiendo React Idiomático
Top Content
React ofrece un contrato a los desarrolladores: cumple ciertas reglas y React puede actualizar eficiente y correctamente la interfaz de usuario. En esta charla exploraremos estas reglas en profundidad, entendiendo el razonamiento detrás de ellas y cómo desbloquean nuevas direcciones como la memoización automática.
Cómo Bun hace que la construcción de aplicaciones React sea más simple y rápida
React Day Berlin 2022React Day Berlin 2022
9 min
Cómo Bun hace que la construcción de aplicaciones React sea más simple y rápida
El transpilador JSX incorporado de Bun, las recargas en caliente en el servidor, el punning de propiedades JSX, la API de macros, las instalaciones automáticas de paquetes, el soporte de console.log JSX, el renderizado en el servidor 4 veces más rápido y más hacen de Bun el mejor entorno de ejecución para construir aplicaciones React
El funcionamiento interno de la construcción de Vite
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
El funcionamiento interno de la construcción de Vite
Vite, el servidor de desarrollo ESM desagregado y el HMR rápido, son revolucionarios para la experiencia de desarrollo (DX). Pero Vite también brilla al construir tus aplicaciones en producción.Esta charla profundizará en cómo encajan las piezas principales para empaquetar y minimizar tu código:La construcción de Vite como una configuración de Rollup con opiniones.Cómo se utiliza esbuild como un transpilador rápido de TS y JSX y un minificador.El pipeline de plugins de producción.Los frameworks modernos (Nuxt, SvelteKit, Astro, entre otros) han elegido Vite, mejorando la experiencia de desarrollo (DX) y las optimizaciones para su caso de uso objetivo.Descubriremos Vite como un conjunto de herramientas pulido y extensible para crear aplicaciones modernas optimizadas.

Workshops on related topic

Uso de CodeMirror para construir un editor de JavaScript con Linting y AutoCompletado
React Day Berlin 2022React Day Berlin 2022
86 min
Uso de CodeMirror para construir un editor de JavaScript con Linting y AutoCompletado
Top Content
WorkshopFree
Hussien Khayoon
Kahvi Patel
2 authors
Usar una biblioteca puede parecer fácil a primera vista, pero ¿cómo eliges la biblioteca correcta? ¿Cómo actualizas una existente? ¿Y cómo te abres camino a través de la documentación para encontrar lo que quieres?
En esta masterclass, discutiremos todos estos puntos finos mientras pasamos por un ejemplo general de construcción de un editor de código usando CodeMirror en React. Todo mientras compartimos algunas de las sutilezas que nuestro equipo aprendió sobre el uso de esta biblioteca y algunos problemas que encontramos.
Construyendo un Servidor Web Hiper Rápido con Deno
JSNation Live 2021JSNation Live 2021
156 min
Construyendo un Servidor Web Hiper Rápido con Deno
WorkshopFree
Matt Landers
Will Johnston
2 authors
Deno 1.9 introdujo una nueva API de servidor web que aprovecha Hyper, una implementación rápida y correcta de HTTP para Rust. El uso de esta API en lugar de la implementación std/http aumenta el rendimiento y proporciona soporte para HTTP2. En este masterclass, aprende cómo crear un servidor web utilizando Hyper en el fondo y mejorar el rendimiento de tus aplicaciones web.
Flujos de base de datos y desarrollo de API con Prisma
Node Congress 2022Node Congress 2022
98 min
Flujos de base de datos y desarrollo de API con Prisma
WorkshopFree
Nikolas Burk
Nikolas Burk
Prisma es un ORM de código abierto para Node.js y TypeScript. En esta masterclass, aprenderás los flujos de trabajo fundamentales de Prisma para modelar datos, realizar migraciones de base de datos y consultar la base de datos para leer y escribir datos. También aprenderás cómo Prisma se integra en tu stack de aplicaciones, construyendo una API REST y una API GraphQL desde cero utilizando SQLite como base de datos.
Tabla de contenidos:
- Configuración de Prisma, modelado de datos y migraciones- Explorando Prisma Client para consultar la base de datos- Construyendo rutas de API REST con Express- Construyendo una API GraphQL con Apollo Server
Construyendo un backend serverless nativo de GraphQL con Fauna
GraphQL Galaxy 2021GraphQL Galaxy 2021
143 min
Construyendo un backend serverless nativo de GraphQL con Fauna
WorkshopFree
Rob Sutter
Shadid Haque
2 authors
¡Bienvenido a Fauna! Este masterclass ayuda a los desarrolladores de GraphQL a construir aplicaciones de alto rendimiento con Fauna que se escalan a cualquier tamaño de base de usuarios. Comienzas con lo básico, utilizando solo el playground de GraphQL en el panel de Fauna, luego construyes una aplicación completa de pila completa con Next.js, agregando funcionalidad a medida que avanzas.

En la primera sección, Comenzando con Fauna, aprendes cómo Fauna crea automáticamente consultas, mutaciones y otros recursos basados en tu esquema de GraphQL. Aprendes cómo realizar tareas comunes con GraphQL, cómo usar el lenguaje de consulta de Fauna (FQL) para realizar tareas más avanzadas.

En la segunda sección, Construyendo con Fauna, aprendes cómo Fauna crea automáticamente consultas, mutaciones y otros recursos basados en tu esquema de GraphQL. Aprendes cómo realizar tareas comunes con GraphQL, cómo usar el lenguaje de consulta de Fauna (FQL) para realizar tareas más avanzadas.
Construyendo APIs GraphQL con la biblioteca Neo4j GraphQL
GraphQL Galaxy 2021GraphQL Galaxy 2021
175 min
Construyendo APIs GraphQL con la biblioteca Neo4j GraphQL
WorkshopFree
William Lyon
William Lyon
Este masterclass explorará cómo construir APIs GraphQL respaldadas por Neo4j, una base de datos de grafos nativa. La biblioteca Neo4j GraphQL permite a los desarrolladores diseñar e implementar rápidamente APIs GraphQL completamente funcionales sin escribir ningún resolvedor. Este masterclass mostrará cómo utilizar la biblioteca Neo4j GraphQL para construir una API GraphQL en Node.js, incluyendo la adición de lógica personalizada y reglas de autorización.

Tabla de contenidos:
- Visión general de GraphQL y construcción de APIs GraphQL
- Construcción de APIs GraphQL en Node.js respaldadas por una base de datos de grafos nativa utilizando la biblioteca Neo4j GraphQL
- Adición de lógica personalizada a nuestra API GraphQL utilizando la directiva de esquema @cypher y resolvedores personalizados
- Adición de reglas de autenticación y autorización a nuestra API GraphQL