Calcolo serverless e GraphQL: sviluppo di app moderne

In questo articolo, vi guiderò attraverso il processo di creazione di un API GraphQL serverless utilizzando TypeScript, AWS Lambda e Apollo Server.

Calcolo serverless

Il calcolo serverless è un modello di esecuzione cloud computing in cui i fornitori cloud gestiscono automaticamente l’infrastruttura per l’esecuzione delle applicazioni. In questo modello, i programmatori scrivono il codice, e il fornitore cloud si occupa di eseguire, scalare e mantenere i server, ovvero i programmatori non devono preoccuparsi della gestione dei server, della provisioning dell’infrastruttura o dell’scaling. Il termine “serverless” non significa che non ci siano server coinvolti, ma piuttosto che le attività di gestione server sono astratte dai programmatori. AWS Lambda è un servizio di calcolo serverless fornito da Amazon Web Services (AWS) che vi permette di eseguire il codice senza la necessità di pianificare o gestire server

GraphQL

GraphQL è un linguaggio di query per le API e un runtime per l’esecuzione di questi query. Permette ai clienti di richiedere esattamente i dati necessari, rendendolo più efficiente rispetto a REST, che può fornire dati in eccesso o mancanti. Con GraphQL, i clienti specificano la forma e la struttura della risposta, recuperando molti risorse in una singola richiesta. questa flessibilità migliora le prestazioni e riduce l’overhead della rete. GraphQL è fortemente tipizzato, con un schema che definisce i tipi disponibili e le operazioni. È ampiamente utilizzato in applicazioni moderne per ottimizzare la comunicazione tra il front-end e il back-end, consentendo una gestione dati più reattiva e efficiente.

Apollo Server

È un popolare server GraphQL open-source che aiuta i sviluppatori a creare con facilità una API GraphQL. Riduce il processo di creazione di una API GraphQL robusta e scalabile, occupandosi della definizione dello schema, dell’esecuzione delle query e della formattazione delle risposte. Apollo Server supporta funzionalità come il recupero dati, il caching e l’autenticazione, rendendolo adattabile a applicazioni moderne. Funziona senza problemi con varie fonti dati, comprese API REST, database e microservizi. Dotato di strumenti integrati per il monitoraggio delle prestazioni e la gestione degli errori, Apollo Server viene comunemente usato per semplificare lo sviluppo backend, fornendo una comunicazione efficiente e flessibile tra clienti e server negli ambienti GraphQL.

Perché TypeScript?

È un super set di JavaScript che aggiunge la tipografia statica al linguaggio. aiuta a catturare errori durante lo sviluppo, migliora la leggibilità del codice e ne aumenta la refattoring. Fornendo sicurezza di tipo e supporto agli strumenti, TypeScript consente applicazioni più maintainable e scalabili, rendendolo ideale per progetti grandi o team.

Perché ritengo che Serverless e GraphQL funzionino così bene insieme (o “Un amore nella storia del codice”)

  1. Uso ottimizzato delle risorse: L’esatto recupero dati di GraphQL si allinea perfettamente con il modello di utilizzo pay-per-use serverless, assicurando l’utilizzo efficiente delle risorse.
  2. Backend semplificato: Le funzioni serverless possono gestire i risolutori GraphQL efficientemente, semplificando l’architettura backend.
  3. Prestazioni migliorate: La capacità di GraphQL di ridurre l’overhead dati si traduce in applicazioni più veloci, specialmente quando combinata con l’architettura serverless.
  4. Scalabilità: Entrambe le tecnologie eccellono nel gestire carichi variabili, rendendo la combinazione altamente scalabile.
  5. Costi-efficiente: Il modello a pagamento progressivo del computing serverless, unito alla trasferimento efficiente di dati di GraphQL, può condurre a risparmi significativi.

“La combinazione di serverless e GraphQL consente un’evoluzione rapida di API scalabili e efficienti. È un potente sodalizio che può ridurre显著emente il tempo di sviluppo e i costi operativi.” – Nader Dabit, “Full Stack Serverless

Ecco il guide passo passo per la distribuzione di un servizio con GraphQL in AWS Lambda.

  • Step 1: Inizializza un nuovo progetto TypeScript e installa le dipendenze.
Shell

 

  • Step 2: Defini il schema GraphQL con gli elementi necessari.
TypeScript

 

  • Step 3: Implementazione dei risolutori:
TypeScript

 

  • Step 4: Creazione del gestore Lambda:
TypeScript

 

  • Step 5: Configura la distribuzione serverless. Crea un file 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

Puoi scrivere il codice direttamente in una funzione Lambda in AWS (Quick Hello World) e usare opzioni di distribuzione appropriate come CDK o Terraform. Poiché sia il calcolo serverless che GraphQL continuano a evolversi, ci possiamo aspettare di assistere all’emergere di strumenti e pratiche ancora più potenti.

Conclusione

Embracendo il serverless GraphQL, i sviluppatori possono creare API che scalano senza sforzo e che forniscono esattamente ciò di cui i clienti hanno bisogno. È come avere una pallina da cristallo che sa sempre esattamente quali dati recuperare e come scalare.

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