SCROLL
TO EXPLORE

GraphQL, la "A" en JAMstack para la gestión de datos

Felipe SilbersteinAugust 20, 2021

Cuando te aventuras a usar JAMstack como metodología de desarrollo web por primera vez, hay varios paradigmas que debes replantearte. Uno de ellos es la manera en que se gestionan los datos en tu plataforma, tanto desde el lado del desarrollo como del cliente.

GraphQL es un lenguaje de consulta para API ("QL" viene de Query Lenguage) que permite describir esquemas de datos del lado del backend, brindando la posibilidad de que el cliente consulte específicamente los datos que busca.

graphqL-la-a-en-jamstack-para-la-gestion-de-datos-1
spare-parts
spare-parts

¿Dónde quedan los datos cuando desarrollamos en JAMstack?

Lo que más nos encanta de JAMstack es su filosofía API-First. Crear nuevas plataformas con nuestros equipos, con la tranquilidad de saber que las funcionalidades que necesitemos podrán ser integradas con facilidad es algo fantástico. Dejas de perder el valioso tiempo de tus colaboradores en la búsqueda de soluciones restringidas a un solo framework o lenguaje, situación común en las plataformas monolíticas tradicionales.

Con foco en una arquitectura mínima, esta metodología no necesita el clásico servidor que aloja tu información, más bien emplea una solución serverless que establece comunicación con tus datos mediante llamados API. Así, mientras tú te preocupas del contenido de tus datos, la infraestructura serverless estará a cargo de tus proveedores.

Sin necesidad de configurar tu servidor para cuando requieras llamar datos, podrás consultarlos tú y tus clientes desde una simple llamada API. Suena muy similar a lo que ya hacemos hace años con API-Rest, pero aquí es donde entra la innovación de GraphQL.

El origen de GraphQL

Este lenguaje fue creado en el año 2012 por Facebook, pero recién el 2015 lo conocimos. El gigante tecnológico se tomó 3 años en publicar su creación; buscaban innovar la aplicación para móviles a fin de aumentar la velocidad, eficiencia y seguridad en un dispositivo con una conexión inferior a los equipos de escritorio.

Cuando este lenguaje se convirtió a código abierto, muchas empresas comenzaron a implementarlo. La facilidad con la que permite navegar por los datos del lado del cliente de una manera rápida -sin complicar la plataforma- lo convierte en el favorito para establecer el sistema de consultas.

Así, desde el 2018 a la actualidad, GraphQL es una fundación del mismo nombre respaldada por Linux Foundation y se encarga de incentivar el desarrollo de un ecosistema propicio para la adopción de este lenguaje en las implementaciones web.

Cambia la forma como piensas en tus datos

GraphQL proporciona como solución un middleware que agrega toda la información necesaria para atender una solicitud completa. Se conecta a las fuentes de datos de backend y gestiona la solicitud del frontend consultando las diferentes fuentes de datos como un mismo llamado y end-point.

  • Usualmente en el desarrollo web se usan REST API para responder a una consulta (query) utilizando el método GET. El cliente solicita información de una entidad y la API responde al llamado mediante el método POST, entregando el resultado como JSON. En resumen: comunicación HTTP aunque en REST implica un llamado por entidad.
  • En GraphQL existe solo un punto de acceso, no necesitarás realizar una consulta ni un end-point de API para cada entidad que el cliente necesite. Con una misma consulta defines lo que necesitas y de ella recibes una respuesta solo con la información solicitada.
graphqL-la-a-en-jamstack-para-la-gestion-de-datos-2

Crea un esquema de datos acorde a tu negocio

La magia de GraphQL es la creación de un esquema de datos, que es la estructura fundamental de entendimiento que permitirá a este lenguaje recorrer cada elemento según las relaciones y nodos trazados en el esquema. En este punto es vital incorporar al equipo de desarrollo completo, ya que la creación de este esquema de datos debe venir desde un entendimiento natural de las reglas de negocio que componen tu marca.

Pensemos en un e-commerce, con tu equipo deberán analizar cómo el cliente busca productos y recorre aquellos otros que se relacionan directa e indirectamente. Aún siendo entidades diferentes, podrás establecer una relación complementaria entre ellas, siendo así información disponible para tus clientes. Esta es la libertad que otorga crear tu propio esquema.

  • Del lado del cliente no existirá una gran diferencia y seguirá pudiendo solicitar datos por llamados API, sin manipular el servidor donde se aloja la información; muy similar a utilizar un OOP (object-oriented programming).
  • Por el lado del servidor podrás emplear tu backend favorito, esto ya que GraphQL es agnóstico en cuanto a framework para el backend. Esto favorece la implementación tanto para nuevas plataformas JAMstack como para antiguos sistemas heredados utilizando los mismos end-point de REST. Si aún te estás preguntando “¿entonces cuál es la diferencia?”, presta atención a lo siguiente.

La "A" en JAMstack para la gestión de datos

Tal como te lo mencionamos anteriormente, GraphQL permite consultar lo que necesites en la escala que requieres.

  • A⁠⁠l definir un esquema de datos, GraphQL está formateado para permitir la obtención de cualquier objeto a través del nodo en el objeto de consulta base. Con esto obtienes objetos que se ajustan a una interfaz "nodo" y que emplea métodos estandarizados para abordar las relaciones.
  • Adiós a los problemas de underfetching y overfetching en la consulta de datos; una de las razones originales que motivaron GraphQL eran las dificultades asociadas a llamados que no entregaban toda la información (underfetching) o en caso contrario, respuestas con más datos de los requeridos. Cuando llevas este comportamiento a grandes plataformas obtienes eficiencia en el uso de recursos informáticos de tus servicios serverless, porque se necesitarán menos consultas para satisfacer los requerimientos.
  • Implementar una gestión de datos serverless es más fácil de lo que suena, gracias a desarrollos de tipo cliente como es el caso de Netlify. Estos permiten ejecutar piezas de código en AWS Lambda sin requerir cuenta en Amazon, así la infraestructura escala de manera automática en caso de experimentar un aumento en las consultas y libera a tu empresa de estar manteniendo servidores.
    • Mirándolo en retrospectiva, desarrollar plataformas basadas en integraciones API entrega mayores libertades a las organizaciones. Ya sea visto desde la gestión de datos como GraphQL, o también desde la administración de contenido con Netlify, la visión que impulsan estas tecnologías de JAMstack es poder tener mayor control sobre tu plataforma manteniendo la simpleza de su infraestructura.

      Reign será tu partner para evolucionar hacia la filosofía JAMstack. Somos fieles seguidores de esta metodología y conocemos en profundidad cada integración. Encontrarás el apoyo experto que necesitas para implementar tecnología preparada para crecer con tu organización.