Acceso a la base de datos en el Edge con Cloudflare Workers y Prisma

Rate this content
Bookmark

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í.

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

FAQ

El borde es una forma de cómputo sin servidor que está distribuido y se implementa en la red de centros de datos de CloudFlare, permitiendo ejecutar el código de tu aplicación mucho más cerca de tu usuario.

Los trabajadores de CloudFlare son más ligeros y distribuidos, utilizando el motor V8 para ejecutar código de aplicación, lo que reduce el tiempo de inicio y la latencia en comparación con las plataformas sin servidor tradicionales que utilizan contenedores completos.

Dado que el motor V8 solo admite conexiones basadas en HTTP y las bases de datos tradicionales dependen de conexiones TCP de larga duración, esto genera un desafío para conectar bases de datos desde los trabajadores de CloudFlare, que son sin estado y pueden agotar rápidamente las conexiones disponibles.

Prisma ofrece el Proxy de Datos de Prisma, que actúa como un intermediario entre tu aplicación serverless y tu base de datos, ayudando a gestionar grupos de conexiones y evitar agotar los límites de conexiones que podrían provocar solicitudes fallidas.

Prisma aumenta la productividad y la confianza del desarrollador al ofrecer un modelo de datos legible y seguro en cuanto a tipos, soporte para autocompletado y una API robusta para interactuar con la base de datos, funcionando con diversos sistemas de bases de datos.

La migración involucra inicializar Prisma en el proyecto, modelar los datos en Prisma, cargar los datos existentes en la base de datos y refactoring la aplicación para utilizar Prisma Client para realizar consultas a la base de datos.

Prisma Studio es una interfaz gráfica de usuario moderna e intuitiva que permite visualizar y manipular datos de tu base de datos de manera sencilla, siendo uno de los tres componentes principales de Prisma.

Alex Ruheni
Alex Ruheni
31 min
17 Feb, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Esta charla discute el acceso a la base de datos en el Edge con CloudFlare Workers y los desafíos de las plataformas sin servidor. Explora soluciones para acceder a la base de datos, incluyendo soluciones específicas de CloudFlare y el uso del Proxy de Datos de Prisma. Se presentan el kit de herramientas y la demostración de Prisma, demostrando cómo convertir una aplicación para usar una base de datos. Se explica el proceso de configuración de la Plataforma de Datos de Prisma y la implementación de la aplicación en CloudFlare Workers. La charla concluye con ideas sobre el uso de la base de datos y las diferencias entre sin servidor, CDN y el Edge.

1. Introducción a Cloud Flarewalkers

Short description:

Hola, amigos. Hoy hablaré sobre el acceso a la base de datos en el borde con Cloud Flarewalkers. Discutiremos qué es, cómo es diferente de las plataformas sin servidor tradicionales y los dolores de crecimiento de las sin servidor. Los trabajadores de CloudFlare ejecutan el código de su aplicación mucho más cerca de su usuario, que incluso podría estar en la misma ciudad. Los trabajadores de CloudFlare son significativamente más ligeros porque la plataforma se basa en el motor V8. Los trabajadores de CloudFlare también ofrecen un alto rendimiento, con un tiempo de inicio más corto y una latencia más baja. Sin embargo, la conexión a bases de datos sigue siendo un desafío desde los trabajadores de CloudFlare debido a las limitaciones del motor V8.

Hola, amigos. Hoy hablaré sobre el acceso a la base de datos en el borde con Cloud Flarewalkers. Mi nombre es Alex, y soy un defensor del desarrollo en Prisma. No dudes en contactarme después de la charla si tienes alguna pregunta, o simplemente cualquier pregunta aleatoria o conexión.

Esta charla se dividirá en cuatro secciones. La primera parte tratará sobre Cloud Flarewalkers, o el borde. Discutiremos qué es, cómo es diferente de las plataformas sin servidor tradicionales y los dolores de crecimiento de las sin servidor. La segunda sección echará un vistazo a Prisma y al Proxy de Datos de Prisma, explorando cómo el Proxy de Datos te ayuda a interactuar con tu base de datos en el borde. Y la tercera parte, o la tercera sección, será la parte emocionante, donde tendremos una demostración. Migraremos una aplicación que utiliza un archivo JSON para almacenar y recuperar citas, y moveremos los datos a una base de datos y lo desplegaremos en el borde. Finalmente, haremos un resumen de la charla al final. Y por ahora, vamos a empezar.

Entonces, ¿qué es el borde? Parece ser una palabra de moda que se usa mucho, pero ¿qué significa? El borde es una forma de cómputo sin servidor que está distribuido. Y en el contexto de los trabajadores de CloudFlare, se implementa en la red de centros de datos de CloudFlare.

Ahora que entiendes qué es el borde y cómo funciona CloudFlare, echemos un vistazo a cómo los trabajadores de CloudFlare son diferentes de los servidores sin servidor tradicionales. Como mencioné antes, está distribuido. Las funciones sin servidor tradicionales se implementan en centros de datos o regiones específicas. En contraste, los trabajadores de CloudFlare ejecutan el código de tu aplicación mucho más cerca de tu usuario, incluso podría estar en la misma ciudad. Los trabajadores de CloudFlare también son significativamente más ligeros porque la plataforma se basa en el motor V8. Es el mismo motor que alimenta los navegadores basados en Chromium como Chrome y Edge, y también el tiempo de ejecución de Node.js. Por lo tanto, cada vez que se invoca tu trabajador de CloudFlare, en lugar de aprovisionar un contenedor completo para tu función sin servidor, el trabajador de CloudFlare crea un aislamiento de V8 que es significativamente más pequeño. Y si has oído hablar del problema de inicio en frío en los servidores sin servidor, entonces entenderás por qué esta es una tecnología emocionante.

Los trabajadores de CloudFlare también ofrecen un alto rendimiento. Esto se suma a los dos primeros puntos. Debido a que el entorno es significativamente más ligero, lo que conduce a un tiempo de inicio más corto, o incluso posiblemente ninguno. Y también experimentarás una latencia más baja cada vez que invoques tu función porque se invocará desde el centro de datos que está más cerca de ti. Ahora sé que todo esto suena encantador, pero los trabajadores de CloudFlare todavía sufren los mismos problemas que las funciones sin servidor tradicionales en el contexto de las bases de datos. Por lo tanto, la conexión a las bases de datos sigue siendo un desafío desde los trabajadores de CloudFlare. Esto se debe a que el motor V8 solo admite conexiones basadas en HTTP. Sin embargo, las bases de datos tradicionales dependen de conexiones TCP de larga duración.

2. Desafíos y soluciones para el acceso a la base de datos

Short description:

Las diferentes bases de datos tienen diferentes implementaciones para conectarse a ellas, lo que puede ser caótico. Las conexiones a la base de datos en entornos sin servidor pueden agotarse fácilmente, lo que provoca fallas en las solicitudes. Las posibles soluciones incluyen soluciones específicas de CloudFlare, usar Postgres para convertir una base de datos existente en una API RESTful, modificar los controladores de Postgres y MySQL para usar HTTP con Deno y usar el proxy de datos de Prisma.

Esto se vuelve frustrante. Las diferentes bases de datos presentan diferentes implementaciones de las interfaces de cómo puedes conectarte a ellas, lo cual es caótico y está en marcha. Las conexiones a la base de datos también son estado-dependientes, mientras que los entornos sin servidor son sin estado, lo que significa que puedes quedarte fácilmente sin conexiones a la base de datos porque cada trabajador crea un nuevo grupo de conexiones. Y cuando te quedas sin conexiones, las solicitudes en tu aplicación comenzarán a fallar.

Entonces, ¿cómo puedes resolver este problema? Bueno, tienes varias opciones disponibles, al igual que en el resto del ecosistema de JavaScript. Una opción sería utilizar soluciones específicas de CloudFlare como el almacén de clave-valor del trabajador y los objetos duraderos. La segunda opción, si tienes una base de datos existente, es usar Postgres, que convierte tu base de datos Postgres existente en una API RESTful. Otra opción sería convertir, usar los controladores de Postgres y MySQL y modificar para usar HTTP con Deno, creo. Y finalmente, la esencia de esta charla, que es el proxy de datos de Prisma y esta charla se centrará en esto, pero siéntete libre de probar las otras opciones por ti mismo también.

Entonces, Prisma es un ORM de última generación y seguro en cuanto a tipos para NodeJS que funciona tanto con JavaScript como TypeScript. Admite varias bases de datos como SQLite, MySQL, Postgres, SQL Server y también CockroachDB y MongoDB, que aún están en vista previa. Los principales beneficios de Prisma es que aumenta la productividad al permitir a los desarrolladores consultar los datos de manera natural y familiar, y también proporciona un modelo de datos legible para los humanos. Prisma también aumenta la confianza del desarrollador con la seguridad de tipos, el autocompletado, y la API robusta para interactuar con tu base de datos. Entonces, incluso si no usas TypeScript en tu proyecto, la mayoría de los editores proporcionarán autocompletado para tus consultas de base de datos cuando estés usando Prisma.

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

Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Node Congress 2022Node Congress 2022
26 min
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Top Content
The talk discusses the importance of supply chain security in the open source ecosystem, highlighting the risks of relying on open source code without proper code review. It explores the trend of supply chain attacks and the need for a new approach to detect and block malicious dependencies. The talk also introduces Socket, a tool that assesses the security of packages and provides automation and analysis to protect against malware and supply chain attacks. It emphasizes the need to prioritize security in software development and offers insights into potential solutions such as realms and Deno's command line flags.
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Node Congress 2022Node Congress 2022
34 min
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Top Content
There is a need for a standard library of APIs for JavaScript runtimes, as there are currently multiple ways to perform fundamental tasks like base64 encoding. JavaScript runtimes have historically lacked a standard library, causing friction and difficulty for developers. The idea of a small core has both benefits and drawbacks, with some runtimes abusing it to limit innovation. There is a misalignment between Node and web browsers in terms of functionality and API standards. The proposal is to involve browser developers in conversations about API standardization and to create a common standard library for JavaScript runtimes.
ESM Loaders: Mejorando la carga de módulos en Node.js
JSNation 2023JSNation 2023
22 min
ESM Loaders: Mejorando la carga de módulos en Node.js
ESM Loaders enhance module loading in Node.js by resolving URLs and reading files from the disk. Module loaders can override modules and change how they are found. Enhancing the loading phase involves loading directly from HTTP and loading TypeScript code without building it. The loader in the module URL handles URL resolution and uses fetch to fetch the source code. Loaders can be chained together to load from different sources, transform source code, and resolve URLs differently. The future of module loading enhancements is promising and simple to use.
Diagnostics de Node.js listos para usar
Node Congress 2022Node Congress 2022
34 min
Diagnostics de Node.js listos para usar
This talk covers various techniques for getting diagnostics information out of Node.js, including debugging with environment variables, handling warnings and deprecations, tracing uncaught exceptions and process exit, using the v8 inspector and dev tools, and generating diagnostic reports. The speaker also mentions areas for improvement in Node.js diagnostics and provides resources for learning and contributing. Additionally, the responsibilities of the Technical Steering Committee in the TS community are discussed.
Viviendo al Límite
React Advanced 2021React Advanced 2021
36 min
Viviendo al Límite
The Talk discusses the future of React and introduces new APIs, including streaming rendering and server components. React Suspense allows for asynchronous loading of components and data fetching. The use of serverless computing, specifically Cloudflare Workers, is explored as a way to improve performance. The Talk emphasizes the potential for simplifying the React ecosystem and the excitement about the new API.
Compatibilidad con Node.js en Deno
Node Congress 2022Node Congress 2022
34 min
Compatibilidad con Node.js en Deno
Deno aims to provide Node.js compatibility to make migration smoother and easier. While Deno can run apps and libraries offered for Node.js, not all are supported yet. There are trade-offs to consider, such as incompatible APIs and a less ideal developer experience. Deno is working on improving compatibility and the transition process. Efforts include porting Node.js modules, exploring a superset approach, and transparent package installation from npm.

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
Seguridad de tipo de extremo a extremo con React, GraphQL y Prisma
React Advanced 2022React Advanced 2022
95 min
Seguridad de tipo de extremo a extremo con React, GraphQL y Prisma
Featured WorkshopFree
Sabin Adams
Sabin Adams
En este masterclass, obtendrás una visión de primera mano de lo que es la seguridad de tipo de extremo a extremo y por qué es importante. Para lograr esto, construirás una API de GraphQL utilizando herramientas modernas y relevantes que serán consumidas por un cliente de React.
Prerrequisitos: - Node.js instalado en tu máquina (12.2.X / 14.X)- Se recomienda (pero no es obligatorio) utilizar VS Code para las tareas prácticas- Un IDE instalado (se recomienda VSCode)- (Bueno tener) *Un conocimiento básico de Node.js, React y TypeScript
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
Masterclass de Node.js
Node Congress 2023Node Congress 2023
109 min
Masterclass de Node.js
Top Content
Workshop
Matteo Collina
Matteo Collina
¿Alguna vez has tenido dificultades para diseñar y estructurar tus aplicaciones Node.js? Construir aplicaciones que estén bien organizadas, sean probables y extensibles no siempre es fácil. A menudo puede resultar ser mucho más complicado de lo que esperas. En este evento en vivo, Matteo te mostrará cómo construye aplicaciones Node.js desde cero. Aprenderás cómo aborda el diseño de aplicaciones y las filosofías que aplica para crear aplicaciones modulares, mantenibles y efectivas.

Nivel: intermedio
Construye y Despliega un Backend con Fastify y Platformatic
JSNation 2023JSNation 2023
104 min
Construye y Despliega un Backend con Fastify y Platformatic
WorkshopFree
Matteo Collina
Matteo Collina
Platformatic te permite desarrollar rápidamente APIs GraphQL y REST con un esfuerzo mínimo. La mejor parte es que también te permite aprovechar todo el potencial de Node.js y Fastify cuando lo necesites. Puedes personalizar completamente una aplicación de Platformatic escribiendo tus propias características y complementos adicionales. En el masterclass, cubriremos tanto nuestros módulos de código abierto como nuestra oferta en la nube:- Platformatic OSS (open-source software) — Herramientas y bibliotecas para construir rápidamente aplicaciones robustas con Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (actualmente en beta) — Nuestra plataforma de alojamiento que incluye características como aplicaciones de vista previa, métricas integradas e integración con tu flujo de Git (https://platformatic.dev/).
En este masterclass aprenderás cómo desarrollar APIs con Fastify y desplegarlas en la nube de Platformatic.
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.