Microsserviços

O termo microsserviço significa coisas diferentes para pessoas diferentes. Para alguns, o microsserviço corresponde às "caixas" desenhadas no quadro branco, quando se fala sobre a arquitetura do sistema. Outras se referem a uma definição mais formal, que descreve um endpoint endereçável na rede com a funcionalidade determinada pela API externa e que pode ser desenvolvida, implantada e operada independentemente de outros microsserviços no sistema. Além disso, eles entendem o conceito de microsserviço fornecido pela plataforma de desenvolvimento, como os serviços do App Engine ou o serviço do Anthos Service Mesh.

Nosso objetivo não é forçar uma definição de microsserviço. Em vez disso, queremos ajudar você a monitorar seus sistemas em escala durante sua transformação digital, fornecendo ferramentas de monitoramento orientadas a serviços para ajudar você e sua arquitetura. Queremos trabalhar com você para adotar as práticas recomendadas para sistemas de monitoramento sem alterar uma única linha de código.

Para isso, o Cloud Monitoring detecta microsserviços automaticamente, quando for possível, e oferece uma experiência guiada para definir microsserviços baseados no Google Kubernetes Engine e oferece uma solução totalmente personalizada para que você tenha o máximo de flexibilidade.

Microsserviços descobertos automaticamente

Alguns frameworks de desenvolvimento modernos oferecem um conceito de microsserviço fortemente opinativo. Em arquiteturas que usam esse framework, o Cloud Monitoring pode detectar automaticamente quando os serviços são implantados, atualizados ou excluídos. Isso é feito por meio de análise constante do fluxo de metadados produzido por um projeto.

O Cloud Monitoring pode detectar automaticamente os microsserviços criados com os seguintes frameworks de desenvolvimento:

  • App Engine: o App Engine tem uma grande entendimento de microsserviços, chamada de serviço do App Engine (anteriormente chamada de módulo). Cada serviço é distinto pelo próprio arquivo de configuração app.yaml.

  • Anthos Service Mesh: o Cloud Monitoring é compatível com malhas de serviço criadas sobre um único cluster do GKE. Nesta configuração, um serviço do Anthos Service Mesh corresponde diretamente a um serviço do GKE. Todos os serviços do Anthos Service Mesh, gerenciados pelo usuário e pelo sistema, são detectados automaticamente.

  • O Open Source Istio no Google Kubernetes Engine: o GKE oferece suporte ao Istio de código aberto (OSS) usando o recurso de complemento do GKE. Com o complemento do GKE, os usuários se beneficiam da instalação gerenciada e do upgrade dos componentes do Istio. Assim como no Anthos Service Mesh, um serviço OSS Istio corresponde diretamente a um serviço do GKE.

Painéis de microsserviços descobertos automaticamente

Um painel de serviços é criado automaticamente para todos os microsserviços descobertos automaticamente. O painel contém os detalhes de metadados do serviço, o cronograma do alerta, o status do SLO e os registros relacionados ao serviço. Cada um desses componentes é descrito em mais detalhes em Como usar painéis de microsserviço.

Painel de serviços para microsserviços descobertos automaticamente.

Microsserviços baseados no GKE

O GKE e o Kubernetes em que se baseiam são um sistema de orquestração de contêineres altamente flexível para implantar, escalonar e gerenciar aplicativos em contêineres. Com base na pesquisa de vários usuários avançados do Kubernetes, não há uma noção de microsserviço em que a comunidade concorda. Alguns usuários baseiam seus microsserviços nos namespaces do Kubernetes. Outros usam uma carga de trabalho, como um conjunto de réplicas, para corresponder a um microsserviço.

Os usuários desenvolveram vários padrões para usar o Kubernetes e um microsserviço podem, mas nem sempre, correspondem a um "serviço do Kubernetes".

Devido à variedade de maneiras com que os usuários gerenciam aplicativos no Kubernetes, o Cloud Monitoring não detecta automaticamente microsserviços baseados no GKE. Em vez disso, oferecemos uma abordagem orientada para ajudar os usuários a identificar os microsserviços. Para começar, clique no link Definir serviço.

É possível definir um serviço do GKE no painel Visão geral dos serviços.

A bandeja deslizante mostra uma lista de todas as entidades do GKE no cluster, desde os namespaces até os pods. Ela também mostra os rótulos de metadados para distinguir entidades com nomes semelhantes. Use a barra de filtro para encontrar a entidade correspondente ao seu microsserviço. Selecione a entidade e informe um nome ou use o nome padrão fornecido.

Para definir um serviço do GKE, selecione uma entidade na lista.

Agora você identificou um microsserviço baseado no GKE que pode ser usado com os recursos de monitoramento orientado a serviços. O console mostra a operação bem-sucedida, exibindo os detalhes do serviço recém-criado. Ele também fornece links para algumas próximas etapas possíveis: saber mais sobre as práticas recomendadas para monitoramento orientado a serviços, criar seu primeiro SLO ou visualizar o painel de serviços.

Depois de criar um serviço, será possível configurar os SLOs e visualizar um painel para o serviço.

Painéis de microsserviços baseados no GKE

Um painel de serviços é criado automaticamente para cada microsserviço baseado no GKE definido. Assim como os painéis para serviços descobertos automaticamente, esses painéis contêm os detalhes de metadados, um cronograma de alertas, um resumo de SLO e registros relacionados. Além disso, o painel contém um conjunto de métricas para o serviço em que diferentes agrupamentos de métricas podem ser selecionados para exibição. Na parte inferior do painel, há um resumo com links dos pods que reconhecem o serviço. Cada um desses componentes é descrito em mais detalhes em Como usar painéis de microsserviço.

Um painel de serviços é criado para o serviço do GKE recém-criado.

Como definir um serviço baseado em GKE (API)

Os microsserviços baseados em GKE também podem ser definidos usando a API SLO, parte da API Cloud Monitoring. Esses serviços são representados na API como um tipo de serviço Custom com um valor Telemetry.resourceName que identifica uma entidade do GKE.

Para criar um serviço de maneira programática, publique uma configuração como a seguinte no método services.create:

{
  "displayName": "hello-world-microservice",
  "custom": {},
  "telemetry": {
    "resourceName":
"//container.googleapis.com/projects/PROJECT_ID/zones/us-central1-a/clusters/cluster-2/k8s/namespaces/default/services/hello-server"
  }
}

De forma mais genérica, a forma do campo resourceName é "//container.googleapis.com/projects/PROJECT_ID/zones/ZONE/clusters/CLUSTER_NAME/k8s/namespaces/NAMESPACE_NAME/ENTITY_TYPE/ENTITY_NAME"

Para mais informações sobre gerenciamento de serviços de maneira programática, consulte Como usar a API.

Como criar microsserviços personalizados (API)

Na API SLO, o tipo de serviço Custom também pode ser usado para criar um contêiner REST para agregar um conjunto de SLOs. Isso pode ser útil ao definir SLOs em um tipo de serviço que atualmente não é compatível ou em métricas de negócios que não correspondem naturalmente a um microsserviço.

Para criar um serviço de maneira programática, publique uma configuração como a seguinte no método services.create:

{
  "displayName": "hello-world-service",
  "custom": {}
}

Para mais informações sobre gerenciamento de serviços de maneira programática, consulte Como usar a API.