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.

FAQ

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.

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.

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.

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
Aprende cómo construir una aplicación Vue implementada en el edge para brindar una experiencia ultrarrápida a tus usuarios finales.
Deno 2.0
Node Congress 2023Node Congress 2023
36 min
Deno 2.0
Top Content
Deno 2.0 está a punto de llegar y trae consigo grandes cambios para el entorno de ejecución de JavaScript. En esta charla, presentaremos las nuevas características, incluyendo mapas de importación, auto-descubrimiento de package.json y especificadores desnudos. Discutiremos cómo estas mejoras ayudarán a abordar problemas como las dependencias duplicadas y las dependencias que desaparecen. Además, profundizaremos en el soporte incorporado para los especificadores de deno en el registro deno.land/x y su papel en proporcionar un camino recomendado para la publicación. Ven a aprender cómo estas actualizaciones darán forma al futuro del ecosistema de JavaScript y mejorarán la compatibilidad con las aplicaciones Node.
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
Todos amamos escribir tipos en TypeScript, pero a menudo nos encontramos teniendo que escribir tipos en otro lenguaje también: SQL. Esta charla presentará la historia de elige-tu-propia-aventura que enfrentas al combinar TypeScript y SQL y te guiará a través de los compromisos entre las diversas opciones. Combinados de manera deficiente, TypeScript y SQL pueden ser duplicativos y una fuente de dolores de cabeza, pero si se hacen bien, pueden complementarse entre sí al abordar las debilidades de cada uno.
Nunca usaría un ORM
JSNation 2023JSNation 2023
29 min
Nunca usaría un ORM
Top Content
¿Qué es un ORM? Una herramienta de Mapeo Objeto-Relacional (ORM) es una biblioteca para mapear una tabla SQL a una Clase. En la mayoría de los casos, los ORM obligan a los usuarios a estructurar su código para tener objetos Modelo que incluyen tanto el acceso a los datos como la lógica de negocio.
Había una vez, hice varios proyectos usando ORM siguiendo la creencia común de que simplificarían el desarrollo y mantenimiento de los proyectos. Estaba equivocado. Los ORM a menudo son un obstáculo a superar para la parte más compleja de un proyecto.
Como la siguiente parada de mi viaje, recomendé a las personas que usaran los lenguajes nativos de sus bases de datos, por ejemplo, SQL. Esto funciona muy bien en su mayor parte, pero crea una lucha bastante grande: hay mucho código de plantilla que escribir que puede ser bastante tedioso. Estaba equivocado, de nuevo.
Hoy les presento Platformatic DB.
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
Las funciones en el Edge están empujando los límites de la computación sin servidor, pero con nuevas herramientas surgen nuevos desafíos. Debido a sus limitaciones, las funciones en el Edge no permiten conectarse a bases de datos populares como PostgreSQL y MySQL. En esta charla, aprenderás cómo puedes conectar e interactuar con tu base de datos desde Cloudflare Workers utilizando el Proxy de Datos de Prisma.
Puedes consultar las diapositivas de la charla de Alex aquí.
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
ChatGPT causó sensación en el mundo tecnológico. Todo el mundo habla de ello, desde tu CTO hasta tu peluquero (al menos el mío lo hace). Y hay muchas razones por las que todos deberíamos estar emocionados al respecto y muchas otras innovaciones de IA/ML.
Pero, ¿cómo las incorporas a tu pila tecnológica, a tu sitio web/backend, para trabajar con tus datos y proporcionar búsqueda impulsada por IA y aumento de datos?
Existe una nueva generación de bases de datos nativas de IA, que utilizan modelos de aprendizaje profundo para encontrar respuestas a consultas en lenguaje natural. Estamos hablando de la capacidad de buscar a través de texto, imágenes, videos, ADN o cualquier dato no estructurado, todo con una sola consulta.
La regla general es: si hay un modelo de ML, podemos buscar a través de él.
Únete a mí para aprender sobre los bloques fundamentales (LLMs y vector embeddings, Bases de datos vectoriales), cómo interactúan todos ellos y, lo más importante, cómo puedes construir algo tú mismo con tecnología de código abierto.
Y, por supuesto!!! Habrá una demostración de codificación en vivo, donde te guiaré a través de la experiencia de construir una búsqueda basada en IA, con Weaviate, una base de datos vectorial de código abierto, y agregarla a una aplicación. Ahora la pregunta... ¿deberíamos hacer esto en Angular, React, Vue o simplemente JS puro? ;)
#QueLosDiosesDeLaDemoEsténConNosotros

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!