Computación sin servidor y GraphQL: Desarrollo de aplicaciones modernas

En este artículo, guiaré a través del proceso de creación de una API GraphQL sin servidores utilizando TypeScript, AWS Lambda y Apollo Server.

Computación en la nube sin servidores

La computación en la nube sin servidores es un modelo de ejecución de computación en la nube en el que los proveedores de nube automáticamente gestionan la infraestructura para ejecutar aplicaciones. En este modelo, los desarrolladores escriben código, y el proveedor de nube se encarga de ejecutar, escalar y mantener los servidores, lo que significa que los desarrolladores no necesitan preocuparse por la gestión de servidores, la provisión de infraestructuras o la escalabilidad. El término “sin servidores” no significa que no hay servidores involucrados, sino que las tareas de gestión de servidores se abstractean de los desarrolladores. AWS Lambda es un servicio de computación sin servidores proporcionado por Amazon Web Services (AWS) que permite ejecutar código sin tener que proveer o gestionar servidores

GraphQL

GraphQL es un lenguaje de consulta para API y un tiempo de ejecución para ejecutar esas consultas. Permite a los clientes solicitar exactamente la información que necesitan, lo que resulta más eficiente en comparación con REST, que puede recuperar demasiada información o muy poca. Con GraphQL, los clientes especifican la forma y estructura de la respuesta, recuperando varios recursos en una sola solicitud. Esta flexibilidad mejora el rendimiento y reduce la carga de red. GraphQL es de tipado estricto, con un esquema que define los tipos disponibles y las operaciones. Es ampliamente utilizado en aplicaciones modernas para optimizar la comunicación entre el frente y el back end, permitiendo un manejo de datos más responsivo y eficiente.

Apollo Server

Es un popular servidor GraphQL de código abierto que ayuda a los desarrolladores a crear una API GraphQL con facilidad. Simplifica el proceso de construcción de una API GraphQL robusta y escalable al manejar la definición del esquema, la ejecución de consultas y la formateación de respuestas. Apollo Server admite características como la carga de datos, la caché y la autenticación, lo que lo hace muy adaptable para aplicaciones modernas. Funciona sin problemas con varias fuentes de datos, incluyendo API REST, bases de datos y microservicios. Con herramientas integradas para el monitoreo de rendimiento y la manutención de errores, Apollo Server se utiliza comúnmente para agilizar el desarrollo backend, proporcionando una comunicación eficiente y flexible entre clientes y servidores en entornos GraphQL.

¿Por qué TypeScript?

Es un superconjunto de JavaScript que agrega tipado estático al lenguaje. Ayuda a capturar errores durante el desarrollo, mejora la lexicografía del código y enhance refactorización. Mediante la seguridad de tipos y la funcionalidad de herramientas, TypeScript permite aplicaciones más mantenibles y escalables, lo que es ideal para proyectos grandes o equipos.

¿Por qué encuentro que el serverless y GraphQL funcionan tan bien juntos (o “una historia de amor en código”)

  1. Uso óptimo de recursos: La precisión en la carga de datos de GraphQL se ajusta perfectamente al modelo de pago por uso de los servicios serverless, garantizando un uso eficiente de los recursos.
  2. Backend simplificado: Las funciones serverless pueden manejar eficientemente los resolvers GraphQL, simplificando la arquitectura del backend.
  3. Mejora del rendimiento: La capacidad de GraphQL para reducir la sobrecarga de datos se traduce en aplicaciones más rápidas, especialmente combinadas con la arquitectura serverless.
  4. Escalabilidad: Ambas tecnologías sobresalen en la manejo de cargas variables, lo que hace que la combinación sea altamente escalable.
  5. Economía de costos: El modelo de pago por uso de la computación en la nube sin servidores, junto con la eficiente transferencia de datos de GraphQL, puede llevar a ahorros significativos.

“La combinación de computación sin servidores y GraphQL permite el desarrollo rápido de API escalables y eficientes. Son una pareja poderosa que puede reducir significativamente el tiempo de desarrollo y los costos de operación.” – Nader Dabit, “Full Stack Serverless

A continuación, se proporciona una guía paso a paso para desplegar un servicio con GraphQL en AWS Lambda.

  • Paso 1: Inicializar un proyecto de TypeScript nuevo e instalar las dependencias.
Shell

 

  • Paso 2: Definir el esquema de GraphQL con los elementos necesarios.
TypeScript

 

  • Paso 3: Implementar resolvers:
TypeScript

 

  • Paso 4: Crear el manejador Lambda:
TypeScript

 

  • Paso 5: Configurar el despliegue serverless. Crear un archivo serverless.yml:
service: serverless-graphql-api

provider:
  name: aws
  runtime: nodejs16.x
  stage: dev
  region: us-east-1

functions:
  graphql:
    handler: handler.graphqlHandler
    events:
      - http:
          path: graphql
          method: post
      - http:
          path: graphql
          method: get

plugins:
  - serverless-offline

Puedes escribir el código directamente en una función de lambda en AWS (Quick Hello World) y usar opciones de despliegue adecuadas como CDK o Terraform. Como tanto el computo sin servidor como GraphQL continúan evolucionando, podemos esperar que surjan aún más herramientas y prácticas poderosas.

Conclusión

Al adoptar GraphQL sin servidor, los desarrolladores pueden crear API que escalan sin esfuerzo y entreguen exactamente lo que los clientes necesitan. Es como tener un cristal que siempre sabe exactamente qué datos buscar y escalar.

Source:
https://dzone.com/articles/serverless-computing-and-graphql