El Edge y las Bases de Datos: Todo en Todas Partes al Mismo Tiempo

Rate this content
Bookmark

Cloudflare Workers y Edge Functions llevan el modelo Serverless al siguiente nivel al permitir a los desarrolladores implementar código instantáneamente a nivel global para brindar un rendimiento, confiabilidad y escalabilidad excepcionales.

Tener aplicaciones del lado del servidor ejecutándose cerca de donde se encuentran sus usuarios brinda un mayor rendimiento y mejora drásticamente la experiencia del usuario de una aplicación. Sin embargo, debido a su entorno de tiempo de ejecución limitado, trabajar con tu base de datos tradicional favorita es un desafío, ya que no se puede acceder directamente en CloudFlare Workers. Prisma resuelve este problema de varias formas.

El objetivo de la charla es que los desarrolladores comprendan lo que realmente significa el Edge, cómo funciona y cómo trabajar con su base de datos tradicional favorita en el Edge.

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

FAQ

Los principales desafíos incluyen la gestión de conexiones, los tiempos de espera de las funciones y el inicio en frío de las funciones, que pueden afectar la latencia y la eficiencia de las operaciones con bases de datos.

Algunas soluciones incluyen el uso de un tamaño de grupo de conexiones limitado, la definición de límites de concurrencia y el uso de un proxy de conexiones como PG Bouncer para manejar eficientemente las conexiones a la base de datos.

Accelerate es una herramienta lanzada por Prisma que permite almacenar en caché las respuestas de las consultas a la base de datos en el Edge o a nivel global, mejorando la velocidad de respuesta y la experiencia del desarrollador.

Una solución es utilizar un proxy que facilite la comunicación entre las funciones en el Edge y la base de datos a través de HTTP o WebSockets, superando así las restricciones de las conexiones TCP directas.

Una estrategia efectiva es utilizar un almacén de datos replicado globalmente, que permite distribuir y sincronizar los datos a través de múltiples regiones para reducir la latencia y mejorar la accesibilidad de los datos.

Edge se refiere a una forma de computación serverless que permite ejecutar aplicaciones lo más cerca posible de los usuarios, desplegándolas globalmente para minimizar la latencia y optimizar el rendimiento.

Alex Ruheni
Alex Ruheni
26 min
14 Apr, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Esta charla aborda el trabajo con bases de datos en el Edge, los desafíos de las aplicaciones sin servidor y las bases de datos, y los desafíos de trabajar con bases de datos en el Edge. Explora soluciones como el uso de conexiones proxy y almacenes de datos replicados a nivel global. La charla también destaca el uso de Prisma para el almacenamiento en caché de datos y las consideraciones para la migración al Edge. Además, menciona la estrategia de almacenamiento en caché con SWR y la disponibilidad de soluciones en el Edge para el almacenamiento en caché.

1. Introducción a las bases de datos en el Edge

Short description:

Hola a todos. Es bueno verlos aquí. En esta charla, hablaremos sobre qué significa trabajar con bases de datos en el Edge y cómo exactamente puedes usarlas si así lo deseas. Mi nombre es Alex y soy un Defensor del Desarrollador en Prisma. Hemos intensificado nuestros esfuerzos en comprender el ecosistema serverless, especialmente cuando se trata de trabajar con bases de datos. Esta charla se dividirá en cuatro secciones. Repasaremos el pasado y entenderemos cómo llegamos hasta aquí en el Edge. Hablaré sobre el Edge, qué es, las limitaciones y cómo puedes superar esas limitaciones en relación a las bases de datos. Te mostraré una demostración de una herramienta que construí. Concluiremos con algunas reflexiones finales y si tienes preguntas, no dudes en hacerlas después de la conclusión. ¿Cómo llegaste realmente hasta aquí? Bueno, la implementación de aplicaciones ha recorrido un largo camino. En el pasado, la mayoría de los equipos y empresas solían implementar sus aplicaciones en una computadora que solía estar en el sótano. Y luego, en 2006, Amazon o, um, infraestructura como servicio comenzó a existir.

Hola a todos. Es bueno verlos aquí. Y también ponerle cara a los nombres de las personas con las que suelo interactuar en Twitter y espero también después de la conferencia.

Como mencionó Ryan Darl en la charla anterior, ya saben, cuando envías una charla, generalmente solo envías algo. Y luego se me ocurrió un mejor título, que es, Edge y Bases de Datos. Todo, en todas partes y todo al mismo tiempo. En esta charla, hablaremos sobre qué significa trabajar con bases de datos en el Edge y cómo exactamente puedes usarlas si así lo deseas.

Sí. Así que mi nombre es Alex y soy un JavaScript... Oh, adicto. Lo siento. Sesión equivocada. Soy un Defensor del Desarrollador en Prisma, donde, como mencionó Kevin amablemente, trabajo en enseñarles cómo hacer que trabajar con bases de datos sea fácil para los desarrolladores. Como empresa, hemos intensificado nuestros esfuerzos en comprender el ecosistema serverless, especialmente cuando se trata de trabajar con bases de datos, para poder proporcionar herramientas que ofrezcan la mejor experiencia para ustedes como desarrolladores. Y una de ellas es Accelerate, que lanzamos hace un par de meses y que te permite almacenar en caché las respuestas de tus consultas a la base de datos... Sí, las respuestas de tus consultas a la base de datos en el Edge o a nivel global.

Esta charla se dividirá en cuatro secciones. En la primera sección, repasaremos el pasado y entenderemos cómo llegamos hasta aquí en el Edge y luego, en el segundo segmento, hablaré sobre el Edge, qué es, las limitaciones y cómo puedes superar esas limitaciones en relación a las bases de datos. Y luego, en la tercera parte, te mostraré una demostración de una herramienta que construí para mostrarte cómo sería con la solución que hemos construido. Y luego concluiremos con algunas reflexiones finales y si tienes preguntas, no dudes en hacerlas después de la conclusión. Así que empecemos. ¿Cómo llegaste realmente hasta aquí? Bueno, la implementación de aplicaciones ha recorrido un largo camino. Y a veces, cuando hablo de estas tecnologías, puedo parecer joven, pero tengo la mente de una persona de 56 años. Así que espero que tú tampoco te sientas viejo realmente. Um, en el pasado. Eones atrás, incluso antes de que comenzara a aprender a usar computadoras, la mayoría de los equipos y empresas solían implementar sus aplicaciones en una computadora que solía estar en el sótano, por ejemplo, el sótano es solo un ejemplo. Y esto funcionaba bien. Y los desarrolladores o equipos de DevOps eran responsables de administrar todo el proceso. Y el servidor de la aplicación vivía junto con tu base de datos, lo cual era ideal. Y luego, en 2006, Amazon o, um, infraestructura como servicio comenzó a existir.

Read also

2. Desafíos con Serverless y Bases de Datos

Short description:

Y esto cambió la responsabilidad de tener que pensar en las computadoras y simplemente dejarlo todo en manos de Amazon. Nos preocupamos menos por nuestros servidores y nos enfocamos en construir el código que ejecuta nuestras aplicaciones. Sin embargo, trabajar con bases de datos relacionales planteó desafíos, como la gestión de conexiones. Cuando ocurre un aumento repentino de tráfico, múltiples conexiones pueden abrumar la base de datos, lo que lleva a errores. Los tiempos de espera de las funciones y los inicios en frío también afectan el rendimiento del serverless. Las soluciones incluyen establecer el tamaño del grupo de conexiones en uno, definir un límite de concurrencia o utilizar un grupo de conexiones externo como PG Bouncer.

Y esto cambió la responsabilidad de tener que pensar en las computadoras y simplemente dejarlo todo en manos de Amazon. Y luego, unos años después, comenzamos a ver el surgimiento de plataformas como servicio, lo que transfirió más responsabilidad donde tenías que preocuparte menos por la computadora en la que se ejecuta tu aplicación y simplemente dejar eso en manos de tu proveedor de la nube. Y luego, unos años después, nuevamente, vimos el surgimiento de funciones como servicio con AWS Lambda, um, en la nube. No puedo pensar en otros ejemplos en este momento, pero fue genial porque nos preocupamos menos por nuestros servidores. Y nos enfocamos únicamente en construir el código que ejecuta nuestras aplicaciones. Y esto fue genial porque podías escalar tu aplicación casi infinitamente porque, en caso de que haya un aumento repentino de tráfico en tu aplicación, puedes escalar hasta tener 1,000 instancias de funciones ejecutándose al mismo tiempo.

Y luego, en caso de que no haya tráfico, se reduciría a cero y solo pagarías por lo que realmente uses en lugar de tener un servidor en funcionamiento durante mucho tiempo. Pero esto trajo algunos desafíos, especialmente cuando se trataba de trabajar con bases de datos relacionales. En esta charla, hablaré sobre tres desafíos concretos que, um, bueno, los desarrolladores y los equipos experimentaron. Y el más grande de todos ellos fue la gestión de conexiones y cómo manejar las conexiones a tu base de datos. Tomemos como ejemplo una función, que está representada por este hermoso OVNI aquí. Um, si tu función tuviera que interactuar con la base de datos y estás utilizando un generador de consultas o un conector de base de datos, si sigues la configuración predeterminada, es probable que se abran múltiples conexiones. Y esto está bien si tienes un solo Lambda que se ejecuta una vez cada mucho tiempo, porque tu base de datos estaría bastante relajada, pero el desafío principal surge cuando tienes un aumento repentino de tráfico y tienes un enjambre completo de Lambdas.

Y no uno o dos, tres, tantos cuatro, sino un enjambre completo. Y en este caso, tu base de datos está en un estado de pánico porque generalmente tiene un número limitado de conexiones en un momento dado. Y antes de que te des cuenta, te quedarás sin conexiones y tus datos y tus funciones comenzarán a generar errores y fallarán. Y esto no es ideal porque lamentablemente tu base de datos no puede escalar junto con tus funciones en el entorno serverless. Otros problemas que aún experimentamos con serverless incluyen los tiempos de espera de las funciones, lo cual no es ideal para trabajar con procesos de larga duración. Por ejemplo, si tienes una operación por lotes que tarda una hora en completarse, la mayoría de los proveedores de la nube suelen tener un tiempo establecido de cuánto tiempo debe ejecutarse tu función, lo cual no es ideal si tienes un proceso que dura mucho tiempo. Otro desafío con el que todavía nos encontramos es el inicio en frío, lo cual afecta la latencia de tu función y no brinda una experiencia óptima para tus usuarios. Pero no todo es tan malo porque encontramos soluciones y eso es genial, porque impulsa la innovación. Y una de ellas fue establecer el tamaño del grupo de conexiones al conectarse a tu base de datos en uno. Entonces, en lugar de tener múltiples conexiones, puedes limitarlo a solo una. Sin embargo, esto no es ideal, porque si tienes, por ejemplo, una operación por lotes que inserta mil registros, entonces se ejecutarían de forma secuencial en lugar de paralela, lo que lo hace un poco lento. Eso está bien. Tenemos otra posibilidad, que es definir un límite de concurrencia. Entonces, en caso de que haya un aumento repentino de tráfico, tu proveedor de la nube generalmente establece cuántas Lambdas puedes ejecutar en un momento dado. Entonces, en este caso, puedes ir a tu consola de AWS, por ejemplo, y luego puedes limitar en lugar de tener 100 Lambdas ejecutándose simultáneamente, puedes tener, digamos, 10 o 20 en cualquier momento. Pero la solución más robusta de todas es utilizar un grupo de conexiones externo como PG Bouncer, que se encargará de administrar todas las conexiones que van a tu base de datos.

QnA

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

Nuxt en el Edge
Vue.js London 2023Vue.js London 2023
30 min
Nuxt en el Edge
Nuxt is a web framework with many features including server-side rendering, client-side rendering, static site generation, edge site rendering, and more. The Edge is a limited environment running on CDN nodes, such as Cloudflare network. Database options on the Edge include Postgre with Neon, Versel on Neon, Superbase, MySQL with plan scale, HyperDB, and KV with redis and Cloudflare storage. The speaker demonstrates creating a demo with a votes table, handling API requests, adding authentication, saving votes, and displaying results. The roadmap to a full stack Nuxt 3 with an edge-first experience is in progress. Copilot is a helpful tool for developers. Integrating SSO with GitHub and improving the developer experience are important considerations for Nuxt 3.
Deno 2.0
Node Congress 2023Node Congress 2023
36 min
Deno 2.0
Top Content
The Talk discusses forced optimization with Node and Deno, with Deno aiming to pursue the same goals in a more expansive and modern way. Deno has built-in support for NPM and enforces security constraints. It also has a key-value database called Deno KV, which will be a core part of the Deno 2 API. Deno Deploy is a serverless Edge Functions platform powered by FoundationDB, optimized for fast reading and ideal for building eCommerce sites or application servers at the edge. Deno 2.0 is coming soon with more features under development.
TypeScript y la Base de Datos: ¿Quién Posee los Tipos?
TypeScript Congress 2022TypeScript Congress 2022
27 min
TypeScript y la Base de Datos: ¿Quién Posee los Tipos?
Top Content
The Talk discusses the use of TypeScript and SQL together in software development. It explores different approaches, such as using an ORM like TypeORM or a schema generator like pg2ts. Query builders like connects JS and tools like PGTyped are also discussed. The benefits and trade-offs of using TypeScript and SQL are highlighted, emphasizing the importance of finding a middle ground approach.
Nunca usaría un ORM
JSNation 2023JSNation 2023
29 min
Nunca usaría un ORM
Top Content
Welcome to a talk on Object-Relational Mapping (ORM) and its potential pitfalls. The speaker discusses issues with modals and the MVC pattern, as well as the benefits of structuring code around system features instead. They introduce PlatformaticDB as a solution for easy backend development, showcasing its deployment and testing capabilities. The talk also covers integrating with Next.js, writing custom SQL queries, and the speaker's plans for future support and database compatibility.
Acceso a la base de datos en el Edge con Cloudflare Workers y Prisma
Node Congress 2022Node Congress 2022
31 min
Acceso a la base de datos en el Edge con Cloudflare Workers y Prisma
This Talk discusses database access on the edge with CloudFlare workers and the challenges of serverless platforms. It explores solutions for database access, including CloudFlare-specific solutions and using Prisma data proxy. The Prisma toolkit and demo are showcased, demonstrating how to convert an application to use a database. The process of setting up Prisma Data Platform and deploying the application to CloudFlare workers is explained. The Talk concludes with insights on database usage and the differences between serverless, CDN, and the Edge.
Lleva la búsqueda basada en IA a tu aplicación web
JSNation 2023JSNation 2023
31 min
Lleva la búsqueda basada en IA a tu aplicación web
The Talk discusses the use of machine learning in search engines, specifically focusing on semantic search and vector embeddings. It explores the integration of JavaScript and machine learning models, using Weaviate as an open-source vector database. The Talk demonstrates how to connect to Weaviate, query data, and perform machine learning queries. It also highlights the benefits of Weaviate, such as its superior developer experience and performance. Additionally, the Talk addresses customization options, data privacy concerns, and the varying effectiveness of different machine learning models.

Workshops on related topic

Cómo Resolver Problemas del Mundo Real con Remix
Remix Conf Europe 2022Remix Conf Europe 2022
195 min
Cómo Resolver Problemas del Mundo Real con Remix
Featured Workshop
Michael Carter
Michael Carter
- ¿Errores? Cómo renderizar y registrar tus errores del servidor y del clientea - Cuándo devolver errores vs lanzar excepcionesb - Configurar servicios de registro como Sentry, LogRocket y Bugsnag- ¿Formularios? Cómo validar y manejar formularios de varias páginasa - Usar zod para validar los datos del formulario en tu acciónb - Pasar por formularios de varias páginas sin perder datos- ¿Atascado? Cómo solucionar errores o funciones faltantes en Remix para que puedas continuara - Usar patch-package para solucionar rápidamente tu instalación de Remixb - Mostrar herramienta para gestionar múltiples parches y seleccionar solicitudes de extracción abiertas- ¿Usuarios? Cómo manejar aplicaciones de varios inquilinos con Prismaa - Determinar el inquilino por el host o por el usuariob - Base de datos múltiples o base de datos única/múltiples esquemasc - Asegura que los datos del inquilino siempre estén separados de los demás
Modelado de Bases de Datos Relacionales para GraphQL
GraphQL Galaxy 2020GraphQL Galaxy 2020
106 min
Modelado de Bases de Datos Relacionales para GraphQL
Top Content
WorkshopFree
Adron Hall
Adron Hall
En esta masterclass profundizaremos en el modelado de datos. Comenzaremos con una discusión sobre varios tipos de bases de datos y cómo se mapean a GraphQL. Una vez que se haya establecido esa base, el enfoque se desplazará a tipos específicos de bases de datos y cómo construir modelos de datos que funcionen mejor para GraphQL en varios escenarios.
Índice de contenidosParte 1 - Hora 1      a. Modelado de Datos de Bases de Datos Relacionales      b. Comparando Bases de Datos Relacionales y NoSQL      c. GraphQL con la Base de Datos en menteParte 2 - Hora 2      a. Diseño de Modelos de Datos Relacionales      b. Relación, Construcción de Tablas Multijoin      c. Complejidades de Consulta de Modelado de Datos Relacionales y GraphQL
Prerrequisitos      a. Herramienta de modelado de datos. El formador utilizará dbdiagram      b. Postgres, aunque no es necesario instalar esto localmente, ya que estaré utilizando una imagen de Dicker de Postgres, de Docker Hub para todos los ejemplos      c. Hasura
Escalando tu base de datos con ReadySet
Node Congress 2023Node Congress 2023
33 min
Escalando tu base de datos con ReadySet
WorkshopFree
Aspen Smith
Nick Marino
2 authors
La base de datos puede ser una de las partes más difíciles de escalar en una aplicación web. Muchos proyectos terminan utilizando sistemas de caché ad-hoc que son complejos, propensos a errores y costosos de construir. ¿Qué pasaría si pudieras implementar un sistema de caché listo para usar para mejorar el rendimiento y la optimización de consultas sin necesidad de realizar cambios en el código de tu aplicación?
Únete a los desarrolladores Aspen Smith y Nick Marino para ver cómo puedes cambiar una línea de configuración en tu aplicación y utilizar ReadySet para escalar el rendimiento de tus consultas en órdenes de magnitud hoy mismo.
Crear una aplicación React Native de pila completa con Oracle 23ai
React Summit 2024React Summit 2024
37 min
Crear una aplicación React Native de pila completa con Oracle 23ai
WorkshopFree
Doug Drechsel
Doug Drechsel
En este masterclass, configurarás un entorno de pila completa local y crearás una aplicación móvil React Native que se ejecuta en esa pila.
Agenda:- Instalar el contenedor Docker de Oracle 23ai- Construir y ejecutar Parse Server con el nuevo adaptador de almacenamiento de Oracle- Construir y ejecutar una aplicación móvil React Native de Walking History en la pila
Walking History es una aplicación React Native que te permite caminar por la ciudad de Nueva York (o simularlo en un emulador de dispositivos) y te muestra la atracción o punto de interés más cercano.
Revelando la Salsa Secreta de Next.js en el Edge
React Summit 2024React Summit 2024
48 min
Revelando la Salsa Secreta de Next.js en el Edge
Workshop
Mustafa Azim
Mustafa Azim
Next.js en el Edge con su nueva salsa secreta para una mejor experiencia de usuario y alto rendimiento. Revelaremos la salsa secreta de Next.js y la forma de trabajar para ofrecer la mejor experiencia de usuario en la red Edge y las nuevas características, incluyendo la pre-renderización parcial. Cómo aprovechar el componente del servidor y su alto rendimiento en la red Edge.
Tabla de contenidos:- Introducción a la red Edge- Tiempo de ejecución en el Edge con V8- Casos de uso de las funciones en el Edge- Desplegar un servicio en la red Edge
Construyendo una aplicación en tiempo real con Remix y Supabase
Remix Conf Europe 2022Remix Conf Europe 2022
156 min
Construyendo una aplicación en tiempo real con Remix y Supabase
Workshop
Jon Meyers
Jon Meyers
Supabase y Remix hacen que sea fácil construir aplicaciones fullstack. En este masterclass, vamos a aprender cómo usar Supabase para implementar autenticación y autorización en una aplicación en tiempo real con Remix. Únete a Jon Meyers mientras construye esta aplicación desde cero y demuestra cómo puedes aprovechar el poder de las bases de datos relacionales!