Computação sem servidor e GraphQL: desenvolvimento de aplicações modernas

Neste artigo, eu vai guiar-vos pelo processo de criação de uma API GraphQL sem servidor usando TypeScript, AWS Lambda, e Apollo Server.

Computação Sem Servidor

A computação sem servidor é um modelo de execução de computação em nuvem onde os fornecedores de nuvem gerenciam automaticamente a infraestrutura para executar aplicações. Neste modelo, os desenvolvedores escrevem código, e o fornecedor de nuvem cuida de executar, dimensionar e manter os servidores, o que significa que os desenvolvedores não precisam se preocupar com o gerenciamento de servidores, aprovisionamento de infraestrutura ou dimensionamento. O termo “sem servidor” não significa que não há servidores envolvidos, mas sim que as tarefas de gerenciamento de servidor são abstratas para os desenvolvedores. AWS Lambda é um serviço de computação sem servidor fornecido pela Amazon Web Services (AWS) que permite que você execute código sem aprovisionar ou gerenciar servidores

GraphQL

GraphQL é uma linguagem de consulta para APIs e um tempo de execução para executar essas consultas. Ele permite que os clientes solicitem exatamente o dado que precisam, fazendo com que seja mais eficiente em comparação com o REST, que pode sobrequilhar ou subequilibrar dados. Com GraphQL, os clientes especificam a forma e a estrutura da resposta, recuperando vários recursos em uma única solicitação. Esta flexibilidade melhora o desempenho e reduce a sobrecarga de rede. GraphQL é fortemente tipado, com um esquema definindo tipos disponíveis e operações. É amplamente usado em aplicações modernas para otimizar a comunicação entre o front-end e o back-end, permitindo um gerenciamento de dados mais responsivo e eficiente.

Apollo Server

É um popular servidor GraphQL de código aberto que ajuda os desenvolvedores a criar uma API GraphQL com facilidade. Ele simplifica o processo de construção de um robusto e escalável API GraphQL, lidando com a definição de esquema, execução de consultas e formatação de respostas. O Apollo Server suporta recursos como busca de dados, cache e autenticação, tornando-se altamente adaptável para aplicações modernas. Funciona de forma transparente com várias fontes de dados, incluindo APIs REST, bancos de dados e microserviços. Com ferramentas integradas para monitoramento de desempenho e tratamento de erros, o Apollo Server é comumente usado para agilizar o desenvolvimento de backend, fornecendo uma comunicação eficiente e flexível entre clientes e servidores em ambientes GraphQL.

Por que TypeScript?

É um superconjunto do JavaScript que adiciona tipagem estática à linguagem. Ajuda a pegar erros durante o desenvolvimento, melhora a leitura do código e melhora a refatoração. Fornecendo segurança de tipo e suporte à ferramentação, o TypeScript permite aplicações mais manutenveis e escaláveis, tornando-se ideal para projetos grandes ou equipes.

Tanto o Serverless quanto o GraphQL funcionam muito bem juntos (Ou “Uma História de Amor em Código”)

  1. Uso otimizado de recursos: A precisão na busca de dados de GraphQL se encaixa perfeitamente com o modelo de pagar-por-uso de recursos do serverless, garantindo otimizar o uso de recursos.
  2. Backend simplificado: As funções serverless podem processar resolvers GraphQL eficientemente, simplificando a arquitetura de backend.
  3. Melhoria no desempenho: A capacidade de GraphQL de reduzir a sobrecarga de dados resulta em aplicações mais rápidas, especialmente quando combinadas com arquiteturas serverless.
  4. Escalabilidade: Ambas as tecnologias se destacam em lidar com cargas variáveis, tornando a combinação altamente escalável.
  5. Eficiente em termos de custo: O modelo de pagamento conforme uso do computação sem servidor, juntamente com a eficiente transferência de dados de GraphQL, pode resultar em consideráveis economias de custo.

“A combinação de computação sem servidor e GraphQL permite o rápido desenvolvimento de APIs escaláveis e eficientes. É uma dupla poderosa que pode reduzir significativamente o tempo de desenvolvimento e os custos operacionais.” – Nader Dabit, “Full Stack Serverless

Abaixo está o guia passo a passo para deployar um serviço com GraphQL no AWS Lambda.

  • Passo 1: Inicialize um novo projeto TypeScript e instale as dependências.
Shell

 

  • Passo 2: Defina o esquema GraphQL com os elementos necessários.
TypeScript

 

  • Passo 3: Implementando resolvers:
TypeScript

 

  • Passo 4: Criar o manipulador Lambda:
TypeScript

 

  • Passo 5: Configurar o deploy serverless. Crie um arquivo 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

Você pode escrever o código diretamente no Lambda em AWS (Quick Hello World) e usar opções de implantação adequadas como CDK ou Terraform. Como o computação sem servidor e o GraphQL continuam a evoluir, podemos esperar ainda mais ferramentas e práticas poderosas surgirem.

Conclusão

Ao abraçar o GraphQL sem servidor, os desenvolvedores podem criar APIs que escalam com facilidade e entregam exatamente o que os clientes precisam. É como ter um cristal que sempre sabe exatamente quais dados buscar e escalar.

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