GraphQL envuelve una consulta alrededor de una solicitud, lo que permite obtener información particular, en lugar del enfoque único de REST. Esto conduce a importantes beneficios de rendimiento.
A pesar de su popularidad, muchas empresas experimentan serios problemas para implementar y crecer con esta tecnología. Es complejo y toma mucho tiempo desarrollar una API que funcione de manera efectiva. GraphQL a menudo se puede implementar de manera deficiente si los desarrolladores no tienen experiencia, por lo que esto también puede representar un problema.
Es por ello que surgen nuevas alternativas como tRPC, que se trata de una alternativa más ligera a GraphQL y que puede acelerar el desarrollo y mejorar drásticamente el rendimiento.
¿Qué es tRPC?
tRPC significa ‘TypeScript Remote Procedure Call’ y es la biblioteca más simple y liviana para llamar de forma remota a funciones de backend desde el cliente. Su objetivo es proporcionar a los desarrolladores la experiencia de TypeScript para que la comunicación entre el backend y el frontend sea más productiva.
Esto significa que necesitará TypeScript tanto en el backend como en el frontend, pero si ya tienes tu aplicación configurada de esta manera, tRPC es fácil de implementar. A diferencia de GraphQL, tRPC no es un esquema, sino un protocolo (o 'método') para exponer las funciones del backend al frontend. Simplifica tu API al hacer que el backend y el frontend trabajen más juntos para finalmente dar como resultado una aplicación más liviana y de mejor rendimiento .
Cómo funciona tRPC
tRPC no usa esquemas o generación de código para construir API. Dado que está diseñado para ser una opción más fácil y eficiente para los desarrolladores, crear API de tRPC es relativamente simple. El frontend utiliza procedimientos para llamar de forma remota a los datos del backend. Los procedimientos son componibles, lo que significa que están formados por componentes. Hay dos tipos de procedimientos: consultas y mutaciones:
- Consultas: una consulta es una solicitud enviada por el cliente para obtener datos del backend.
- Mutaciones: una mutación puede crear, actualizar o eliminar datos en el backend.
Cuando trabajes con tRPC, generalmente te resultará mucho más fácil usar un monorepo, y la biblioteca fomenta a hacerlo. La arquitectura de aplicaciones modernas se ha movido hacia el uso de múltiples repositorios para separar el backend, el frontend y otras áreas clave. Un monorepo es solo un repositorio que contiene todo el código de una aplicación. Las definiciones de tipo de tRPC se generan a partir de tu propio código TypeScript , por lo que si eliges no usar un monorepo, probablemente encontrarás una variedad de problemas que comienzan a ocurrir cuando se trata de trabajar con diferentes versiones.
Beneficios de usar tRPC
Aunque tRPC es mucho menos popular que GraphQL, para muchos desarrolladores es una opción mucho mejor. Estos son algunos de sus mayores beneficios.
1. Sencillo y ligero
tRPC es una biblioteca muy liviana que puedes usar para crear API completas y funcionales sin esquemas ni generación de código. Cuando el cliente solicita información del servidor, solo llama a los tipos en lugar del código en sí, lo que implica mucho menos procesamiento. Además, tRPC usa TypeScript, que es un lenguaje de tipado estático. Las definiciones de tipo se verifican durante la compilación, en lugar de durante el tiempo de ejecución, lo que aumenta la velocidad de tus aplicaciones.
2. Fomenta los monorepos
Con tRPC, generalmente es mucho más fácil usar un monorepo. Si bien puede parecer una desventaja tener esta limitación, en realidad es muy beneficioso para cosas como el control de versiones y el historial de git. Si estás ejecutando una versión anterior de tu aplicación, tu interfaz podrá consultar la versión que corresponda de tu backend. Sin un monorepo, al ejecutar una versión anterior de tu interfaz, la aplicación consultará la última versión, que puede no ser compatible con la versión que estás ejecutando actualmente.
3. Desarrollo rápido
tRPC es la forma más rápida y sencilla de desarrollar una API. TypeScript permite que tRPC utilice la inferencia de tipos, lo que significa que el tipo de datos se detecta (o infiere) automáticamente. La inferencia de tipos ayuda a que el desarrollo avance mucho más rápido, especialmente en las primeras etapas. tRPC también puede integrarse cómodamente con la mayoría de los IDE para optimizar aún más el desarrollo.
Desventajas de usar tRPC
Como con cualquier cosa, tRPC no es perfecto y no es adecuado para todos. Tiene fuertes limitaciones, que a menudo son desventajas de la tecnología.
1. Requiere TypeScript
tRPC está completamente centrado en TypeScript y puede ser molesto verse obligado a usarlo, especialmente en un proyecto pequeño o algún tipo de utilidad donde normalmente no sería necesario. Si decides comenzar a usar tRPC en una aplicación que no sea de TypeScript, tendrás que implementar esto antes de poder comenzar a usar tRPC.
Conclusión
GraphQL es una poderosa herramienta, pero agrega más complejidad a un proyecto del que a menudo es necesario. tRPC es una excelente solución para llamar a funciones de backend en la interfaz que aprovecha muchos de los beneficios de GraphQL, con una complejidad significativamente menor. Si tu próximo proyecto necesita un frontend y un backend pero no deseas separarlos, ¡entonces podrías considerar usar tRPC!