Visão geral do Diretório de serviços

O Diretório de serviços é um serviço coberto pelas obrigações do Google estabelecidas no Aditivo sobre tratamento de dados do Cloud.

O Diretório de serviços é um único lugar para publicar, descobrir e conectar serviços de maneira consistente e confiável, seja qual for o ambiente. Diretório de serviços é compatível com serviços em ambientes do Google Cloud, multicloud e no local, e pode escalonar verticalmente para milhares de serviços e endpoints em um único projeto.

O Diretório de serviços tem os seguintes recursos:

  • Uma API de registro e pesquisa para criar e resolver namespaces, serviços e endpoints.
  • Integração com o Cloud DNS. As zonas do Diretório de serviços permitem que os serviços sejam disponibilizados na nuvem privada virtual (VPC).
  • Integração do IAM para atribuir e controlar a visibilidade e as permissões do serviço
  • Suporte integrado à Google Cloud CLI e ao consoleGoogle Cloud para interagir com o Diretório de Serviços
  • Integração do Cloud Monitoring e do Cloud Logging para monitorar, auditar e depurar operações do Diretório de serviços.

Por que usar o Service Directory

À medida que os aplicativos adotam serviços, fica mais difícil resolver a localização de um serviço porque os endpoints desses serviços mudam. Os serviços implantados em ambientes híbridos apresentam outros obstáculos, já que nenhum deles pode compartilhar o mesmo sistema de nomenclatura, o que dificulta a resolução e a conexão de serviços. Para ilustrar o problema, considere o seguinte.

Imagine que você está criando uma API simples e que seu código precisa chamar outro aplicativo. Quando as informações do endpoint permanecem estáticas, é possível codificar esses locais no código ou armazená-los em um pequeno arquivo de configuração. No entanto, com microsserviços e multicloud, esse problema se torna muito mais difícil de resolver, já que instâncias, serviços e ambientes podem mudar.

Diretório de serviços sem um balanceador de carga (clique para ampliar)
Diferentes serviços de mudança (clique para ampliar)

Com o Diretório de serviços, é possível registrar todos os seus serviços em um único lugar e resolvê-los usando HTTP, gRPC e DNS.

Vamos analisar o diagrama anterior, mas desta vez adicionando Diretório de serviços. No diagrama a seguir, cada instância de serviço é registrada no Diretório de serviços. Esses registros são refletidos imediatamente no DNS e podem ser consultados usando HTTP/gRPC, independente da implementação e do ambiente.

Diretório de serviços com um balanceador de carga (clique para ampliar)
Diretório de serviços com um balanceador de carga (clique para ampliar)

É possível criar um nome de serviço universal que funcione em produtos Google Cloud como o App Engine e o GKE. É possível disponibilizar esses serviços pelo DNS. É possível aplicar controles de acesso a serviços com base na rede, no projeto e nos papéis do IAM das contas de serviço.

O Diretório de serviços resolve os seguintes problemas:

  1. Interoperabilidade: Diretório de serviços é um serviço de nomenclatura universal que funciona em Google Cloud, multicloud e no local. É possível migrar serviços entre esses ambientes e ainda usar o mesmo nome de serviço para registrar e resolver endpoints.
  2. Gerenciamento de serviços: o Diretório de serviços é um serviço gerenciado. Sua organização não precisa se preocupar com a alta disponibilidade, a redundância, o escalonamento ou a manutenção do próprio registro de serviço.
  3. Controle de acesso: com o Service Directory, é possível controlar quem pode registrar e resolver seus serviços usando o IAM. Atribua papéis do Diretório de serviços a equipes, contas de serviço e organizações.
  4. Limitações do DNS puro: os resolvedores de DNS podem não ser confiáveis em termos de respeito aos TTLs e ao armazenamento em cache, não podem processar tamanhos de registros maiores e não oferecem uma maneira fácil de veicular metadados aos usuários. Além da compatibilidade com DNS, o Diretório de serviços oferece APIs HTTP e gRPC para consultar e resolver serviços.

Usar o Cloud DNS com o Diretório de serviços

O Cloud DNS é um serviço de Sistema de Nome de Domínio (DNS) rápido, escalonável e confiável executado na infraestrutura do Google.

Além das zonas de DNS públicas, o Cloud DNS também oferece uma solução de DNS interno gerenciada para redes particulares noGoogle Cloud. Com as zonas de DNS particulares, é possível nomear internamente as instâncias de máquina virtual (VM), os balanceadores de carga ou outros recursos. As consultas DNS para essas zonas DNS particulares são restritas às suas redes particulares.

O diagrama a seguir ilustra como usar zonas do Diretório de serviços para disponibilizar nomes de serviço usando pesquisas de DNS.

Como usar o Cloud DNS com o Diretório de serviços (clique para ampliar)
Como usar o Cloud DNS com o Diretório de serviços (clique para ampliar)

Visão geral dos componentes individuais:

  1. Os endpoints são registrados diretamente no Diretório de serviços usando a API do Diretório de serviços. É possível registrar serviços do Google Cloud e de terceiros com o Diretório de serviços.Google Cloud
  2. Clientes externos e internos podem consultar esses serviços em: https://servicedirectory.googleapis.com
  3. Para ativar as solicitações de DNS, crie uma zona do Diretório de serviços no Cloud DNS associada a um namespace do Diretório de serviços.
  4. Os clientes internos podem resolver esse serviço usando DNS, HTTP e gRPC. Os clientes externos (que não estão na rede privada) precisam usar HTTP ou gRPC para resolver nomes de serviço.

Exemplo de configuração

Como expor um serviço por DNS

O diagrama a seguir ilustra como uma arquitetura de microsserviços é modelada no Diretório de serviços e disponibilizada usando DNS. O Diretório de serviços mantém os serviços e endpoints por completo, mas a zona particular está no Cloud DNS.

Expor um serviço por DNS (clique para ampliar)
Exposição de um serviço por DNS (clique para ampliar)

Neste diagrama (lado esquerdo), o serviço payments está registrado em um namespace com o nome backend-namespace, a região us-east1 e o projeto gcp-project. O namespace está vinculado à zona particular example.com.

Para fazer uma busca DNS, o cliente solicita o registro SRV do nome de domínio _payments._tcp.payments.example.com, que é resolvido para os números de porta e registros de endereço dos endpoints do serviço de pagamento.

A seguir