Minha IBM Efetue login Inscreva-se

O que é a federação GraphQL?

7 de fevereiro de 2024

Autores

Chrystal R. China

Writer, automation & ITOps

Michael Goodwin

Editorial lead, Automation & ITOps

O que é a federação GraphQL?

A federação GraphQL é uma abordagem de arquitetura distribuída que permite que os desenvolvedores usem uma única API em vários serviços do GraphQL (ou seja, serviços escritos na linguagem de consulta de código aberto, GraphQL).

A federação divide o esquema (o contrato entre operações de back-end e front-end) em componentes e microsserviços mais gerenciáveis, permitindo que as equipes construam, implementem e gerenciem partes de um esquema de forma independente, enquanto mantêm um gráfico de dados unificado para interação dos clientes.

Em um ambiente GraphQL federado, um gateway GraphQL integra vários esquemas, também chamados de subgráficos ou serviços, em um único gráfico (ou roteador). Cada subgráfico define parte do esquema geral e lida com a lógica de negócios e a recuperação de dados para seus próprios tipos e campos. O gateway então une subgráficos independentes em um supergrafo, permitindo que os clientes consultem fontes de dados em todos os serviços como se estivessem interagindo com um único esquema GraphQL.

 

Vista aérea de rodovias

Fique por dentro da nuvem 


Receba o boletim informativo semanal do Think para ver orientações especializadas sobre a otimização das configurações multinuvem na era da IA.

A evolução da federação GraphQL

Antes da federação, um dos principais métodos para combinar vários esquemas do GraphQL era a união de esquemas, onde diferentes esquemas e resolvedores são combinados manualmente. Isso exigiu que os desenvolvedores definissem como os esquemas são mesclados e como os dados seriam unidos. E embora a união de esquemas oferecesse uma solução unificadora para o esquema GraphQL, ela também era complexa e propensa a erros, dificultando o gerenciamento.

Para resolver esses problemas e simplificar os processos de união de esquemas, os engenheiros por trás do Apollo, uma implementação de GraphQL para engenharia de produto e aplicativos, desenvolveram a federação Apollo. A federação Apollo introduziu as palavras-chave "key", "external", "requires" e "extends" para definir as conexões entre tipos em diferentes serviços. Os novos recursos de referências cruzadas permitiram que os desenvolvedores usassem um gateway Apollo para construir um gráfico de dados coeso, sem depender de uma lógica de união excessivamente complexa.

No entanto, a federação GraphQL Apollo não foi apenas um novo conjunto de ferramentas e bibliotecas. Também foi uma especificação de sistema que descrevia a arquitetura e como os serviços podem se comunicar para formar um gráfico distribuído. Isso permitiu que outras implementações e ferramentas adotassem os princípios da federação e ajudou a estabelecer um padrão para construir APIs GraphQL federadas.

Desde sua introdução, a federação GraphQL passou por diversas melhorias. A federação gerenciada, por exemplo, pode facilitar a coleta de métricas e permitir atualizações automáticas do gateway quando subgráficos mudam, tudo isso sem intervenção manual ou downtime do sistema.

Os avanços também incluem o desenvolvimento do Federation 21, uma inovação que simplificou a mesclagem de esquemas entre serviços e a execução de consultas, aumentou a modularidade para maior controle sobre a composição do esquema e melhorou a visibilidade de erros para facilitar o rastreamento e a depuração.

AI Academy

Preparando-se para a IA com a nuvem híbrida

Guiado pelos principais líderes da IBM, o conteúdo foi desenvolvido para ajudar líderes empresariais a terem o conhecimento necessário para priorizar os investimentos em IA que podem estimular o crescimento.

Apollo vs. federação aberta

A federação Apollo representou um avanço significativo para a construção de ecossistemas de APIs simplificados, e continua sendo uma opção para empresas que procuram implementar arquiteturas federadas de TI.

Ainda assim, uma abordagem de federação baseada no Apollo restringe os desenvolvedores a uma implementação de um único fornecedor, já que ambientes federados com Apollo aceitam apenas diretivas e tipos definidos pelo Apollo ou tecnologias de back-end compatíveis com o Apollo. Em outras palavras, a federação Apollo muitas vezes limita a flexibilidade do sistema, mesmo com o surgimento de novas tecnologias.

Desenvolvedores que buscam otimizar a flexibilidade, mantendo a funcionalidade de camada unificada da federação Apollo, podem preferir a federação aberta. As abordagens de federação aberta permitem que os sistemas combinem dados de qualquer fornecedor ou tipo de API, incluindo APIs que não são de GraphQL. Usando ferramentas como o IBM API Connect, as empresas podem personalizar e escalar seus ativos de TI sem restrições de compatibilidade e continuar adotando inovações de várias comunidades tecnológicas.

Como funciona a federação GraphQL?

O GraphQL ajuda os clientes a solicitar exatamente os dados de que precisam, sem provisionamento excessivo ou insuficiente de recursos, tornando-se uma excelente opção para empresas que desejam otimizar a eficiência operacional.

Dada sua flexibilidade, não é surpresa que o GraphQL esteja se tornando uma linguagem de consulta e tempo de execução cada vez mais popular para APIs2. No entanto, à medida que aplicativos de web e móveis se tornam mais sofisticados, implementar um único servidor GraphQL monolítico (e todas as suas dependências) pode se tornar inviável. A federação simplifica ecossistemas GraphQL, ajudando subgráficos separados a funcionarem como um único serviço coeso GraphQL.

Implementar uma arquitetura GraphQL federada envolve os seguintes processos principais:

Definição de esquemas de subgráficos

Definir esquemas de subgráficos envolve identificar limites de domínio e decidir como esses limites devem interagir.

Em uma arquitetura federada, cada esquema de subgráfico representa uma parte específica do gráfico de dados geral; ele contém tipos, configurações, consultas, mutações e assinaturas que se aplicam a um serviço ou domínio. Um serviço de produto, por exemplo, pode ter um esquema de subgráfico que inclui tipos como produto e avaliação, enquanto um serviço de usuário pode ter tipos de usuário e perfil.

Os esquemas de subgráficos são definidos de maneira semelhante a um esquema GraphQL padrão, mas com a adição de diretivas específicas da federação. As diretivas da federação fornecem instruções sobre como um sistema estende entidades entre esquemas e como o gateway deve resolver campos específicos entre serviços. Elas também definem chaves para referência a entidades.

Como exemplo, a diretiva @key especifica os campos que identificam um tipo em gráficos federados; quando implementada, essa diretiva solicita que o gateway recupere uma entidade do serviço que possui o tipo especificado. A diretiva @extends indica que um tipo definido em um esquema de subgráfico estende um tipo originado em outro, facilitando a extensão de tipos (com campos adicionais) em outro serviço.

Configuração de serviços de subgráficos

Serviços de subgráficos são serviços de back-end que implementam a lógica de negócios para as APIs correspondentes de subgráficos. Cada serviço de subgráfico define sua parte do gráfico de dados e lida com consultas e mutações relacionadas ao seu domínio. Seus respectivos resolvedores buscam dados associados das fontes apropriadas, bancos de dados ou APIs REST.

Os serviços de subgráficos também expõem seus endpoints GraphQL ao gateway de federação, que os utiliza para compor o esquema federado geral. É importante notar que esses serviços podem ser escritos em qualquer linguagem de programação, desde que a linguagem ofereça suporte ao GraphQL.

Configuração de um gateway de federação

Gateways de federação orquestram a composição de esquemas e o planejamento de consultas. Com a ajuda de servidores de federação, os gateways ocultam os serviços de subgráficos individuais, apresentando uma API unificada ao cliente.

Para configurar um gateway de federação, as equipes geralmente especificam a localização de cada serviço de subgráfico e configuram a infraestrutura necessária para buscar esquemas, planejar consultas, executar e lidar com erros. Quando configurado, o gateway buscará continuamente os esquemas dos serviços de subgráficos para garantir que possui a versão mais recente do esquema federado.

Implementação e monitoramento da arquitetura federada

Quando os serviços de subgráficos e o gateway de federação são configurados, os administradores implementam todo o sistema. Isso inclui provisionar hardware e recursos de nuvem, configurar pipelines de implementação, monitorar o desempenho do sistema e garantir alta disponibilidade de recursos.

Não é surpresa que o monitoramento em tempo real consistente seja vital para otimizar um ambiente GraphQL federado. O monitoramento atento permite que as equipes detectem e resolvam gargalos de desempenho, erros do sistema e downtime não planejado antes que criem problemas maiores. O monitoramento também permite o acompanhamento da integridade dos serviços de subgráficos e do gateway de federação.

Vantagens da federação GraphQL

A federação GraphQL representa um avanço significativo no desenvolvimento de APIs GraphQL para sistemas distribuídos em larga escala. Ela permite que as equipes trabalhem em diferentes partes de um esquema GraphQL de forma independente, enquanto integram seu trabalho sem dificuldades em uma API unificada, tudo isso sem interromper a experiência do usuário final.

A federação GraphQL também possui uma ampla variedade de casos de uso, desde a implementação de arquitetura de microsserviços e cache até o desenvolvimento de produtos e insights operacionais, e foi adotada por empresas como Netflix, Airbnb, GitHub e Expedia.

A federação GraphQL também facilita:

Escalabilidade

Em um ambiente federado, os desenvolvedores podem distribuir a responsabilidade por domínios de dados específicos em vários serviços, permitindo que eles orquestrem e dimensionem serviços individuais (e suas funções) de maneira mais ágil.

Separação de preocupações

Como os serviços federados podem ser gerenciados de forma independente, os membros da equipe podem trabalhar em seus respectivos domínios sem interferir uns nos outros.

Maior eficiência

Diferentemente dos ambientes da API REST, a federação GraphQL permite que os clientes obtenham todos os recursos e dados de que precisam com uma única solicitação, eliminando redundâncias e otimizando a implementação de recursos.

Soluções relacionadas

Soluções relacionadas

IBM webMethods

Integre suas aplicações e automatize o trabalho com a plataforma de multinuvem híbrida IBM webMethods.

Explore o webMethods
Softwares e soluções de integração

Libere o potencial dos negócios com as soluções de integração da IBM, conectando aplicações e sistemas para acessar dados críticos de forma rápida e segura.

Explore soluções de cloud integration
Serviços de consultoria em nuvem 

Libere novos recursos e aumente a agilidade dos negócios com os serviços de consultoria em nuvem da IBM. Descubra como cocriar soluções, acelerar a transformação digital e otimizar o desempenho por meio de estratégias de nuvem híbrida e parcerias especializadas.

Serviço de nuvem
Dê o próximo passo

Simplifique sua jornada de transformação digital com ferramentas de integração avançadas. Descubra como as soluções líderes da IBM podem conectar, automatizar e proteger as aplicações do seu negócio.

Inicie a integração Explore soluções especializadas
Notas de rodapé

1 Apollo GraphQL Introduces Federation 2 to Get More Organizations to the Graph, BusinessWire, 3 de novembro de 2021.

2 Why GraphQL Needs an Open Federation Approach, The New Stack, 16 de novembro de 2023.