GraphQL, gRPC e WebSocket
Voltar para Learn
FAACCapítulo 13

Fundamentos e Arquitetura de APIs Corporativas

GraphQL, gRPC e WebSocket

Como comparar modelos de interação, contratos, streaming e canais persistentes na construção de plataformas modernas de APIs

Edição aprofundada - material de estudo e consulta profissional

GraphQL, gRPC e WebSocket conectados em uma arquitetura corporativa moderna

Apresentação do capítulo

Até aqui, o curso tratou da comunicação clássica, da modelagem e da descrição formal de contratos por . Esses elementos continuam centrais em plataformas corporativas, porém não cobrem todos os problemas de integração. Sistemas distribuídos frequentemente precisam consulta flexível de grafos de dados, comunicação eficiente entre serviços e entrega de eventos em tempo real. É nesse espaço que , e ganham relevância.

Embora os três nomes apareçam frequentemente em discussões modernas, eles não são alternativas diretas entre si. é uma linguagem de consulta e um modelo de execução orientado a . é um de chamada remota de procedimentos, fortemente tipado, geralmente apoiado em e /2. é um protocolo para manter um canal bidirecional persistente, deixando a semântica da aplicação para uma camada superior. Compará-los apenas por desempenho ou popularidade leva a decisões superficiais.

Arquiteturas maduras observam qual problema precisa ser resolvido: consulta agregada para front-end, comunicação interna de baixa latência, em uma ou duas direções, push para interfaces ricas, ou mediação por . Também observam governança, segurança, observabilidade, , curva de adoção, tooling e compatibilidade com legados. Em muitos cenários, a melhor solução não é escolher um único modelo, mas combinar mais de um deles com papéis bem definidos.

Este capítulo apresenta fundamentos, semântica, padrões operacionais, armadilhas e critérios de escolha. O objetivo é permitir que o leitor compreenda a forma de trabalho de cada tecnologia, reconheça quando ela se encaixa bem e identifique riscos de operação em , service meshes e plataformas corporativas.

Como estudar este capítulo

Ao ler cada tecnologia, responda a quatro perguntas: qual é o contrato exposto, quem controla a evolução do ou da interface, como a observabilidade é realizada e quais intermediários conseguem participar corretamente do fluxo. Essa disciplina evita tratar soluções de naturezas diferentes como se fossem apenas formatos alternativos de .

Objetivos de aprendizagem

  • Distinguir as responsabilidades de , e e evitar comparações simplistas.
  • Explicar o modelo de , execução e resolução do .
  • Compreender queries, mutations, subscriptions, tipos, fragments e .
  • Reconhecer problemas como overfetching, underfetching, N+1, profundidade excessiva e complexidade de consulta.
  • Explicar o modelo de serviço do , a função do e os quatro padrões de chamada.
  • Relacionar a /2, , deadlines, , e .
  • Descrever o de do , frames, ping/pong e encerramento.
  • Analisar escala, afinidade, autenticação e observabilidade em conexões persistentes.
  • Comparar implicações de , versionamento, , firewalls e balanceadores.
  • Aplicar critérios práticos para escolher e combinar essas tecnologias em arquiteturas corporativas.

Estrutura do capítulo

  • 13.1 Por que esse capítulo existe após
  • 13.2 : visão geral e motivação
  • 13.3 , tipos, queries, mutations e subscriptions
  • 13.4 Resolvers, , N+1 e federação
  • 13.5 Segurança, governança e observabilidade em
  • 13.6 : visão geral e
  • 13.7 Padrões de chamada, deadlines e
  • 13.8 Segurança, mesh e governança em
  • 13.9 : , frames e ciclo de vida
  • 13.10 Operação, escalabilidade e segurança em
  • 13.11 Comparação prática entre , e
  • 13.12 Uso em , estudos de caso, resumo, exercícios e referências

13.1 Por que este capítulo vem após

descreve muito bem orientadas a recursos ou operações. Entretanto, ele não representa com a mesma naturalidade um grafo consultável como , chamadas binárias e bidirecional como no , nem um canal persistente orientado a mensagens como . O leitor que dominou já possui base excelente de contrato, semântica e governança; agora precisa entender onde essas bases continuam válidas e onde novos modelos exigem outra forma de pensar.

Em termos de arquitetura, este capítulo é uma expansão do repertório e não uma negação do que foi estudado antes. continua fortíssimo para exposição pública e integração entre organizações. O que muda é que certas necessidades práticas - como telas que pedem agregações muito variadas, microsserviços internos com alta cadência e aplicações que dependem de push em tempo real - podem ser melhor atendidas por modelos diferentes.

Também é importante perceber a diferença entre tecnologia de interface e tecnologia de transporte. normalmente usa , mas sua semântica de contrato não é a mesma de . usa /2 como base, porém apresenta ao desenvolvedor a abstração de métodos e mensagens. nasce de um , mas depois abandona a lógica / para operar com frames full-duplex. Essa distinção evita conclusões incorretas sobre , segurança e .

13.2 : visão geral e motivação

surgiu para oferecer ao consumidor maior controle sobre a forma dos dados retornados. Em vez de a expor uma coleção grande de com respostas pré-formatadas, ela publica um tipado e permite que o cliente declare, em uma query, exatamente quais campos deseja obter. Isso reduz underfetching, quando o cliente precisa chamar vários para montar uma tela, e pode reduzir overfetching, quando a resposta contém muito dado irrelevante para aquele caso específico.

O modelo é particularmente atraente em experiências de front-end com múltiplas variações de composição: web, mobile, parceiros, painéis analíticos e jornadas diferentes sobre o mesmo domínio. Um ou baseado em pode reunir dados de várias e bancos, deixando para a camada de resolução a tarefa de compor o resultado. Essa flexibilidade, contudo, desloca complexidade para o servidor, que precisa validar, executar, limitar custo e observar o comportamento das consultas recebidas.

não é uma linguagem de acesso arbitrário ao banco de dados. O contrato continua sendo definido pelo provedor, via , e a execução é controlada por resolvers. Isso significa que o fato de o cliente escolher campos não elimina a necessidade de governança. Pelo contrário: autenticação, autorização por campo, limites de profundidade, desativação de em alguns cenários, persisted queries e proteções contra abuso tornam-se essenciais em ambientes corporativos.

Tabela 1 - A mudança principal em é de modelo de contrato, não apenas de sintaxe.
Aspecto tradicional
Unidade principalRecursos e . tipado e operações sobre um lógico.
Forma da respostaPredominantemente definida pelo servidor.Selecionada pelo cliente dentro do .
EvoluçãoNova representação, novos campos ou novos .Evolução do com depreciação de campos e tipos.
Risco característicoUnderfetching ou explosão de .Queries caras, N+1 e controle de complexidade.

13.3 , tipos, queries, mutations e subscriptions

O descreve tipos escalares, objetos, enums, interfaces, unions, entradas e operações raiz. A operação Query representa leitura; Mutation representa alterações de estado; representa recebimento assíncrono de eventos sob uma relação contínua. O funciona como contrato de dados e também como ponto de para ferramentas, geração de tipos e experiência de desenvolvimento.

Uma Query é estruturada como um documento declarativo em que o consumidor especifica os campos desejados. Fragments permitem reutilizar seleções, aliases renomeiam campos na resposta e variables separam o documento dos valores dinâmicos. Em Mutation, o consumidor invoca uma alteração de estado definida pelo servidor, com tipos de entrada claros. Em , o cliente se inscreve em um fluxo que será emitido ao longo do tempo, normalmente por ou tecnologia equivalente.

Apesar da aparência compacta, a execução não é trivial. Cada campo do pode estar associado a um . Uma operação simples, do ponto de vista do cliente, pode levar o servidor a acionar vários . Por isso, o precisa ser desenhado com disciplina. Tipos muito genéricos, campos que escondem operações pesadas e ausência de delimitação de fronteiras entre domínios tornam o contrato difícil de operar.

Runtime GraphQL executando uma árvore de resolvers a partir da operação solicitada
Figura 1 - O runtime executa uma árvore de resolvers a partir da operação solicitada.

Exemplo de query

query ClienteDetalhado($id: ID!) {
  cliente(id: $id) {
    id
    nome
    saldoAtual
    pedidos(limit: 5) {
      numero
      valorTotal
    }
  }
}

13.4 Resolvers, , N+1 e federação

Resolvers são funções responsáveis por produzir o valor de um campo. Em um objeto cliente, por exemplo, o campo saldoAtual pode vir de um core bancário, enquanto pedidos pode vir de uma transacional. Essa granularidade é poderosa, mas também cria o problema clássico N+1: ao buscar uma lista de clientes e, para cada um, buscar dados adicionais em outra fonte, o servidor pode disparar um número excessivo de chamadas.

A mitigação típica envolve e de curta duração no escopo da requisição. Bibliotecas como DataLoader agrupam várias solicitações lógicas em uma única busca ao . O time de arquitetura também deve questionar se o desenho do induz acesso ineficiente. Em alguns casos, o problema não se resolve apenas com técnica de execução; ele exige revisar o modelo e introduzir campos ou agregados mais apropriados.

Em organizações grandes, a permite compor um supergrafo a partir de subgrafos mantidos por equipes diferentes. Essa abordagem melhora autonomia, porém introduz governança mais sofisticada: ownership de tipos e campos, composição segura, versionamento do supergrafo, roteamento, observabilidade distribuída e proteção contra explosão de cardinalidade. Sem essas práticas, a federação pode trocar acoplamento de por acoplamento de .

Ponto crítico de operação

não elimina chamadas entre sistemas; ele frequentemente as esconde atrás da árvore de execução. Em , correlacione a query recebida com os resolvers acionados, os consultados e o custo total da operação.

13.5 Segurança, governança e observabilidade em

A segurança em vai além do controle de autenticação do . Como o cliente escolhe a forma da consulta, o servidor precisa limitar profundidade, cardinalidade e custo computacional. Queries recursivas, uso abusivo de fragments, exposta indevidamente e tentativas de enumeração de campos são vetores relevantes. Persisted queries reduzem risco ao permitir apenas documentos previamente registrados e identificados por .

Autorização pode ocorrer em múltiplos níveis: operação, tipo, campo e até valor retornado. É comum que um mesmo tipo tenha campos com sensibilidades diferentes, como saldo, limite, CPF mascarado ou histórico completo. A política precisa ser explícita, testável e observável. Em , uma prática útil é propagar identidade e contexto para o servidor , enquanto o controle fino de campo permanece no runtime ou em um PDP conectado a ele.

Observabilidade também muda. Em , o caminho do já informa muito. Em , várias operações distintas podem trafegar pelo mesmo . Por isso, nomes de operação, de query persistida, custo calculado, profundidade, tempo por e chamadas tornam-se métricas essenciais. O registro da query literal exige cuidado com privacidade e com o volume de .

Tabela 2 - Em , governança do e governança de execução caminham juntas.
ControleObjetivoExemplo prático
Limite de profundidadeEvitar navegações excessivas.Rejeitar queries acima de um limiar definido.
Cálculo de complexidadeControlar custo estimado.Atribuir pesos a campos caros.
Reduzir superfície de ataque e .Aceitar apenas previamente cadastrados.
Autorização por campoProteger dados sensíveis.Campos financeiros exigem escopo adicional.

13.6 : visão geral e

é um de moderno que enfatiza contratos tipados, geração de código e comunicação eficiente. Em vez de modelar recursos e representações como em , o provedor define serviços e métodos em arquivos .proto. Esses arquivos descrevem mensagens, campos e operações, e ferramentas geram stubs para cliente e servidor em várias linguagens.

, ou Protobuf, é o mecanismo de serialização mais associado ao . Ele codifica mensagens binárias compactas e tipadas, com evolução baseada em números de campo. Isso produz menores e parsing eficiente, especialmente útil em comunicação interna de microsserviços. O ganho de desempenho, porém, não deve ser romantizado: ele depende do caso de uso, da rede, da linguagem, do tamanho das mensagens e do custo real da lógica de negócio.

O acoplamento ao contrato é mais explícito do que em integrações puramente textuais. Isso é positivo para segurança de tipos e produtividade, mas exige disciplina na evolução: campos não devem ter seus números reutilizados, reservas precisam ser aplicadas quando algo é removido e erros devem ser tratados dentro da semântica do , que distingue status de transporte e status da aplicação.

Exemplo de definição .proto

syntax = "proto3";
service ClienteService {
  rpc ObterCliente (ClienteRequest) returns (ClienteResponse);
  rpc ListarEventos (EventosRequest) returns (stream EventoResponse);
}
message ClienteRequest { string id = 1; }
message ClienteResponse { string id = 1; string nome = 2; }

13.7 Padrões de chamada, deadlines e

oferece quatro padrões principais. No unary, um produz um . No , o cliente envia um e recebe uma sequência de respostas. No , o cliente envia várias mensagens antes de receber o resultado consolidado. No bidirecional, ambos os lados trocam mensagens continuamente, sem relação fixa de um-para-um entre envio e recepção.

Esses padrões operam sobre /2, aproveitando , cabeçalhos compactados e fluxo full-duplex por . Ainda assim, o desenvolvedor precisa compreender conceitos próprios do , como deadlines, cancelamento, e códigos de status. é especialmente importante em produção: sem ele, chamadas podem permanecer pendentes além do razoável, consumindo recursos e degradando cadeias inteiras de dependência.

O tratamento de erro também muda de nuance. Uma resposta bem-sucedida no transporte pode carregar status de aplicação como NOT_FOUND, PERMISSION_DENIED ou UNAVAILABLE. Observabilidade e precisam considerar essas diferenças. Em ambientes corporativos, é comum traduzir parcial ou totalmente chamadas para / na borda, preservando apenas entre serviços internos.

Quatro padrões de chamada gRPC: unary, server streaming, client streaming e bidirecional
Figura 2 - O contrato suporta desde chamadas simples até completo em duas direções.
Tabela 3 - A eficiência do depende de disciplina operacional, não apenas do uso de Protobuf.
TemaPrática recomendadaRisco se ignorado
DeadlinesDefinir prazos por método e propagar contexto.Chamadas presas e saturação em cascata.
VersionamentoEvoluir mensagens com campos opcionais e reservas.Quebra de compatibilidade binária.
Mapear status de aplicação com cuidado. incorretos ou diagnósticos confusos.
Controlar e cancelamento.Consumo excessivo de memória e fila.

13.8 Segurança, mesh e governança em

Como é frequentemente adotado em comunicação , ele aparece com frequência ao lado de service meshes. Nesse contexto, , identidade de workload, , circuit breaking e telemetria podem ser aplicados pela malha ou pelo , enquanto o serviço mantém a semântica de métodos. Isso simplifica certos controles, mas também introduz camadas adicionais no diagnóstico.

Em segurança, o contrato .proto deve ser tratado como artefato governado. Métodos administrativos, operações perigosas e mensagens com dados sensíveis precisam de controle explícito de autorização. A presença de conexão interna não implica confiança automática. Além disso, alguns e têm suporte limitado a recursos mais avançados do , especialmente quando há ou envolvidos.

Governança inclui catálogo de serviços, linting de .proto, políticas de nomenclatura, versionamento, compatibilidade, rastreamento distribuído e testes de contrato. Em cenários de integração com equipes de front-end, deve-se avaliar se a organização quer expor diretamente, usar -Web ou traduzir para /. Cada escolha muda tooling, segurança no navegador e capacidades de intermediários.

13.9 : , frames e ciclo de vida

é um protocolo padronizado para comunicação full-duplex persistente entre cliente e servidor. O processo começa com uma requisição contendo : e outros cabeçalhos específicos. Se o servidor aceitar, responde com status 101 Switching Protocols e a conexão passa a operar com frames . A partir daí, não há mais a semântica clássica de uma requisição seguida de uma única resposta.

O protocolo é valioso em aplicações que exigem baixa latência e push do servidor para o cliente, como painéis em tempo real, chats, acompanhamento de ordens, notificações operacionais e de observabilidade. Ele não define, por si só, a semântica da mensagem. A aplicação pode enviar , binário, envelopes tipados ou protocolos mais elaborados sobre o canal. Isso dá flexibilidade, mas também exige padronização interna.

O ciclo de vida de uma conexão inclui autenticação inicial, abertura, troca de frames, manutenção de liveness por ping/pong e encerramento controlado. Em plataformas escaladas horizontalmente, o desenho precisa considerar afinidade, fan-out, distribuição de eventos e sincronização de estado. É comum usar um broker ou pub/sub por trás do servidor para desacoplar emissão de eventos da manutenção da conexão.

Ciclo de vida WebSocket do upgrade HTTP ao encerramento da conexão
Figura 3 - O participa apenas do estabelecimento; o restante do ciclo já pertence ao protocolo .

Exemplo resumido de de abertura

GET /stream HTTP/1.1
Host: api.empresa.example
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Version: 13

13.10 Operação, escalabilidade e segurança em

Operar milhares ou milhões de conexões persistentes é muito diferente de operar requisições curtas. A infraestrutura precisa suportar abertos por longo tempo, coerentes, proteção contra clientes lentos e mecanismos de . , firewalls e balanceadores devem ser configurados para não encerrar a conexão por inatividade indevida. Além disso, métricas como conexões ativas, taxa de mensagens, bytes por conexão e motivos de fechamento tornam-se essenciais.

A autenticação costuma ocorrer no inicial ou em uma primeira mensagem de aplicação. expiram, e a estratégia de renovação precisa ser planejada. Também é necessário decidir como tratar autorização dinâmica: uma conexão aberta não deve garantir permissão eterna para todos os eventos futuros. Em alguns cenários, o servidor precisa reavaliar o contexto do cliente ao publicar eventos sensíveis.

Do ponto de vista de segurança, amplia a importância de validação de origem, controle de , limitação de tamanho de frame, serialização segura e segregação de tópicos. Como a conexão persiste, um erro de autorização ou de fan-out pode vazar grande volume de informação rapidamente. estruturados, IDs de conexão, correlação com a identidade do usuário e trilhas de fechamento ajudam no .

Armadilha comum

Usar apenas porque a aplicação parece "moderna" pode aumentar custo operacional sem necessidade. Se o caso de uso é simples notificação unidirecional, SSE ou bem desenhado podem ser suficientes. Escolha pelo comportamento exigido, não pela novidade.

13.11 Comparação prática entre , e

A comparação mais útil não pergunta qual tecnologia é melhor em abstrato, mas qual semântica combina melhor com o problema. é forte quando o desafio é fornecer ao consumidor flexibilidade de consulta sobre um modelo de dados complexo. é forte quando o foco é integração tipada entre serviços, especialmente com alto volume, baixa latência e . é forte quando o problema principal é manter um canal aberto para troca contínua de eventos ou mensagens.

Essas forças vêm acompanhadas de custos. exige governança refinada de e execução. exige tooling específico, contratos .proto e compreensão de /2 e status próprios. exige operação cuidadosa de conexões persistentes, afinidade e canais de publicação. Em contrapartida, cada um resolve de forma elegante problemas que seriam mais difíceis ou menos naturais em um modelo puramente .

Arquiteturas híbridas são comuns. Um banco digital pode expor / ou para canais digitais, usar entre serviços internos de domínio e empregar para atualizar posições de investimento em tempo real na interface do cliente. O importante é que a organização possua critérios arquiteturais claros e não permita proliferação descontrolada de padrões incompatíveis.

Tabela 4 - O melhor critério de escolha é a natureza do problema e da operação.
Critério
Problema centralConsulta flexível de dados. tipado e eficiente.Canal persistente e full-duplex.
Contrato ..proto / serviço e mensagens.Contrato de aplicação definido externamente.
Transporte comum./2.Protocolo após .
Subscriptions conforme implementação.Nativo em vários modos.Nativo no canal.
e intermediáriosMenos trivial que .Suporte variável em .Muito diferente do tradicional.
Uso recorrenteBFFs e agregação de dados.Microsserviços e integração interna.Tempo real, chat e notificações.
Comparação semântica entre GraphQL, gRPC e WebSocket em uma arquitetura híbrida
Figura 4 - Muitas plataformas combinam mais de uma dessas tecnologias com papéis complementares.

13.12 , estudos de caso e aplicação corporativa

tradicionais foram desenhados principalmente para /, autenticação, transformação, roteamento e políticas de borda. Quando a organização adota , ou , deve verificar até que ponto o consegue compreender o protocolo ou a semântica da aplicação. Em alguns casos, o atua de forma consciente da tecnologia; em outros, opera apenas como ou terminador .

Para , plataformas maduras conseguem aplicar autenticação, , e observabilidade básica na borda, enquanto a governança fina do e da execução permanece no servidor . Para , o suporte precisa considerar /2 fim a fim, e . Para , o precisa lidar com , longos, afinidade e políticas adequadas a conexões persistentes. Em Axway, , Envoy e outros produtos, o nível de suporte varia por recurso e versão.

Como estudo de caso, imagine uma plataforma de investimentos. O aplicativo móvel usa para compor e carteira. Os microserviços internos de cálculo e consolidação trocam dados por . O módulo de cotação em tempo real publica eventos por para os clientes conectados. A arquitetura fica coerente porque cada escolha responde a um comportamento distinto, e não a uma tentativa de padronizar tudo em um único mecanismo.

13.13 e diagnósticos

O em , e exige separar transporte, protocolo e semântica da aplicação. Em , uma resposta 200 pode carregar erros de negócio no array errors, enquanto em o transporte pode estar íntegro e o status final indicar PERMISSION_DENIED, DEADLINE_EXCEEDED ou UNAVAILABLE. Em , a análise precisa considerar , permanência da conexão, ping/pong, códigos de fechamento e mensagens da aplicação.

Ferramentas e evidências também mudam. Em , nomes de operação, complexidade calculada, tempo por e correlação com são mais úteis do que olhar apenas para a . Em , de método, , deadlines, , métricas por e por ajudam a localizar gargalos. Em , contagem de conexões abertas, taxa de mensagens, fan-out, duração média, bytes por cliente e códigos de close apontam problemas de escala e comportamento anômalo.

Do ponto de vista de e rede, é importante saber que falhas podem ocorrer antes da tecnologia de aplicação entrar em cena. Um sem suporte pleno a /2 pode degradar . Um balanceador com agressivo pode derrubar estáveis. Uma política genérica pode interferir em . A camada correta do problema precisa ser identificada para evitar mudanças aleatórias no código.

Tabela 5 - O sintoma correto depende da semântica de cada tecnologia.
TecnologiaSintomaHipóteses iniciais
Query lenta ou erro parcial. caro, N+1, lento ou limite de complexidade.
excedido.Prazo curto, saturado, travado ou perda de capacidade.
Desconexões frequentes.Idle , afinidade ausente, ping/pong inadequado ou rede instável.

13.14 Estudos de caso e laboratórios

Estudo de caso 1: um portal de atendimento precisa consolidar perfil, produtos, limites e últimas interações em uma única tela móvel. A equipe opta por para permitir que o front-end selecione apenas os dados necessários a cada jornada. O ganho vem da flexibilidade, mas o servidor precisa introduzir , persisted queries e autorização por campo para evitar explosão de custo e exposição de dados sensíveis.

Estudo de caso 2: um conjunto de microsserviços de pagamentos precisa trocar mensagens pequenas com alta cadência e forte tipagem. A equipe adota com Protobuf entre serviços internos, mantendo na borda para parceiros externos. O sucesso depende de gestão de arquivos .proto, deadlines coerentes, , observabilidade distribuída e tradução adequada quando chamadas precisam atravessar camadas de .

Estudo de caso 3: uma plataforma de cotações em tempo real envia atualizações contínuas para operacionais e aplicativos móveis. O canal de push é implementado com , enquanto a consulta inicial da posição ainda usa . O desenho só se sustenta porque há broker de eventos, escalabilidade horizontal, afinidade de sessão, identificação das conexões e política clara de reautenticação quando o expira.

Laboratórios sugeridos

1) Monte uma query com fragments e observe a árvore de resolvers. 2) Defina um serviço com um método unary e outro e teste deadlines. 3) Abra um , envie mensagens, simule ping/pong e observe o close . 4) Em todos os casos, colete evidências de , métricas e .

13.15 Critérios de decisão arquitetural

A decisão entre essas tecnologias deve ser institucionalizada como um conjunto de critérios. Perguntas úteis incluem: o consumidor precisa escolher campos dinamicamente? Há grande diversidade de telas e agregações? O tráfego é predominantemente service-to-service e exige contratos tipados? O caso de uso envolve contínuo ou push de eventos? Os atuais suportam o protocolo de maneira nativa? A equipe possui maturidade para operar o modelo escolhido?

Critérios não funcionam se forem apenas técnicos. É preciso considerar onboarding de equipes, geração de SDKs, capacidade de suporte, treinamento, postura de segurança, custo de observabilidade, curva de e aderência às normas corporativas. Uma tecnologia excelente sob o ponto de vista teórico pode ser inadequada se a organização não tiver processos e ferramentas para operá-la com segurança.

Finalmente, a decisão precisa ser revisitada periodicamente. Produtos de , service meshes, plataformas de nuvem e bibliotecas evoluem. O que era inviável em uma versão antiga pode tornar-se simples depois. Ainda assim, mudança de tecnologia nunca deve ocorrer apenas porque o mercado mudou de foco; ela precisa gerar benefício operacional ou de negócio mensurável.

Resumo do capítulo

, e ampliam o repertório de integração, mas não competem no mesmo plano semântico. é orientado a e consulta flexível; é orientado a serviços, métodos e mensagens tipadas; é orientado a um canal persistente full-duplex sobre o qual a aplicação define sua própria semântica.

A decisão arquitetural correta precisa considerar o problema de negócio, a forma do contrato, os requisitos de latência e , a capacidade de governança, o suporte dos e a maturidade operacional da organização. Escolhas feitas apenas por desempenho teórico ou por tendência do mercado tendem a falhar quando encontram observabilidade, segurança e manutenção do mundo real.

Em ambientes corporativos, é comum combinar esses modelos com e . Essa combinação funciona bem quando ownership, padrões de contrato, políticas de segurança e critérios de estão explícitos. O principal ganho do capítulo é permitir ao leitor reconhecer o papel adequado de cada tecnologia em uma plataforma moderna de .

Próximo passo do curso

Com os modelos de comunicação alternativos apresentados, o próximo capítulo volta ao eixo de segurança e governança para diferenciar autenticação e autorização, base conceitual indispensável antes de avançar para credenciais, , e .

Checklist de arquitetura e operação

  • A escolha entre , e foi feita a partir do comportamento necessário, não apenas da preferência tecnológica.
  • O contrato publicado está claramente identificado: , .proto ou protocolo de aplicação sobre .
  • Há estratégia de autenticação, autorização e auditoria compatível com o modelo escolhido.
  • Ferramentas de observabilidade capturam a granularidade correta: operação , método ou evento/mensagem .
  • Os intermediários de rede e suportam corretamente , /2, , ou conexões persistentes.
  • O modelo de versionamento e evolução foi definido para , mensagens e clientes.
  • Há proteção contra abuso: complexidade de query, limites de , quotas e .
  • considera toda a cadeia: cliente, , runtime da tecnologia, e transporte.

Exercícios

  • Explique por que não é apenas " com um só".
  • Diferencie underfetching, overfetching e N+1 em .
  • Descreva os quatro padrões de chamada do e dê um caso de uso para cada um.
  • Explique o papel de deadlines em e os riscos de ignorá-los.
  • Descreva o que muda na conexão depois do status 101 do .
  • Compare as exigências operacionais de e tradicional.
  • Proponha uma arquitetura que use ou na borda, entre serviços e para eventos.
  • Liste controles de segurança importantes para um servidor exposto publicamente.
  • Explique quando um atua de forma consciente do protocolo e quando atua apenas como genérico.
  • Discuta por que a comparação mais útil entre essas tecnologias deve ser guiada pela semântica do problema.

Glossário

Tabela 5 - Vocabulário essencial do capítulo.
TermoDefinição
Recurso do para renomear um campo na resposta.
Agrupamento de múltiplas buscas lógicas em uma chamada mais eficiente ao .
Troca contínua de mensagens em duas direções no .
Prazo máximo aceito para conclusão de uma chamada .
Composição de um supergrafo a partir de subgrafos mantidos por equipes distintas.
Trecho reutilizável de seleção de campos em .
Capacidade de consultar o próprio .
Query previamente registrada e referenciada normalmente por .
Formato tipado de serialização binária usado com frequência no .
Função que produz o valor de um campo no runtime .
Cabeçalho usado no do .
Padrão em que o cliente faz um e recebe múltiplas respostas em .
Operação para entrega contínua de eventos ao consumidor.
Metadado enviado ao final de um /2, relevante em .
Mecanismo usado para transição inicial ao protocolo .

Referências técnicas

  • Foundation. Specification.
  • Foundation. over Specification.
  • Authors. Documentation.
  • Documentation.
  • . 6455 - The Protocol.
  • . 8441 - Bootstrapping with /2.
  • Microsoft Learn. Guidance for , and in services.
  • Envoy Documentation. , and /2 support.
  • . Cheat Sheet e Security Top 10.

Nota de atualização

Ferramentas, e malhas evoluem rapidamente. Antes de publicar políticas ou decisões de arquitetura, valide o suporte da versão específica do produto implantado em sua organização para , , /2, e .