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

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
¿Sabes qué está pasando realmente en tu carpeta node_modules? Los ataques a la cadena de suministro de software han explotado en los últimos 12 meses y solo están acelerándose en 2022 y más allá. Profundizaremos en ejemplos de recientes ataques a la cadena de suministro y qué pasos concretos puedes tomar para proteger a tu equipo de esta amenaza emergente.
Puedes consultar las diapositivas de la charla de Feross aquí.
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
Puedes revisar las diapositivas de la charla de James aquí.
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
El soporte nativo de ESM para Node.js fue una oportunidad para el proyecto de Node.js de lanzar soporte oficial para mejorar la experiencia de carga de módulos, permitiendo casos de uso como la transpilación sobre la marcha, la sustitución de módulos, el soporte para cargar módulos desde HTTP y la monitorización.
Aunque CommonJS tiene soporte para todo esto, nunca fue oficialmente compatible y se hacía mediante hackeo del código de ejecución de Node.js. ESM ha solucionado todo esto. Analizaremos la arquitectura de la carga de ESM en Node.js y discutiremos la API del cargador que lo admite. También veremos características avanzadas como la concatenación de cargadores y la ejecución fuera de hilo.
Diagnostics de Node.js listos para usar
Node Congress 2022Node Congress 2022
34 min
Diagnostics de Node.js listos para usar
En los primeros años de Node.js, los diagnósticos y la depuración eran puntos problemáticos considerables. Las versiones modernas de Node han mejorado considerablemente en estas áreas. Características como seguimiento de pila asíncrono, capturas de montón y perfilado de CPU ya no requieren módulos de terceros o modificaciones en el código fuente de la aplicación. Esta charla explora las diversas características de diagnóstico que se han incorporado recientemente a Node.
Puedes consultar las diapositivas de la charla de Colin aquí. 
Viviendo al Límite
React Advanced Conference 2021React Advanced Conference 2021
36 min
Viviendo al Límite
React 18 introduce nuevas APIs para renderizar aplicaciones de forma asíncrona en el servidor, permitiendo un modelo más simple para diseñar y enviar interfaces de usuario. Cuando se implementa en plataformas de redes en el borde como Cloudflare Workers, podemos obtener mejoras dramáticas en el rendimiento y la experiencia del usuario en nuestras aplicaciones. En esta charla, Sunil demostrará y explicará este nuevo modelo de escribir aplicaciones React, con algunas ideas sobre las implicaciones para la obtención de datos, el estilo y la dirección general del ecosistema de React.
Compatibilidad con Node.js en Deno
Node Congress 2022Node Congress 2022
34 min
Compatibilidad con Node.js en Deno
¿Puede Deno ejecutar aplicaciones y bibliotecas creadas para Node.js? ¿Cuáles son los compromisos? ¿Cómo funciona? ¿Qué sigue?

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 Conference 2022React Advanced Conference 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.
0 a Auth en una Hora Usando NodeJS SDK
Node Congress 2023Node Congress 2023
63 min
0 a Auth en una Hora Usando NodeJS SDK
WorkshopFree
Asaf Shen
Asaf Shen
La autenticación sin contraseña puede parecer compleja, pero es fácil de agregar a cualquier aplicación utilizando la herramienta adecuada.
Mejoraremos una aplicación JS de pila completa (backend de Node.JS + frontend de React) para autenticar usuarios con OAuth (inicio de sesión social) y contraseñas de un solo uso (correo electrónico), incluyendo:- Autenticación de usuario - Administrar interacciones de usuario, devolver JWT de sesión / actualización- Gestión y validación de sesiones - Almacenar la sesión para solicitudes de cliente posteriores, validar / actualizar sesiones
Al final del masterclass, también tocaremos otro enfoque para la autenticación de código utilizando Flujos Descope en el frontend (flujos de arrastrar y soltar), manteniendo solo la validación de sesión en el backend. Con esto, también mostraremos lo fácil que es habilitar la biometría y otros métodos de autenticación sin contraseña.
Tabla de contenidos- Una breve introducción a los conceptos básicos de autenticación- Codificación- Por qué importa la autenticación sin contraseña
Requisitos previos- IDE de tu elección- Node 18 o superior