Sobes.tech
Middle

Como é possível determinar que os microserviços estão a funcionar corretamente?

sobes.tech IA

Resposta da IA

Isto pode ser determinado através de monitorização, registo e rastreio.

Monitorização

  • Métricas de saúde: Estados de disponibilidade (uptime), latência de respostas, taxa de erros, carga de recursos (CPU, memória, entrada/saída de disco).
  • Métricas de negócio: Número de transações bem-sucedidas, atividade dos utilizadores.
  • Ferramentas: Prometheus, Grafana, Nagios, Zabbix.

Registo (Logging)

  • Recolha centralizada de logs: Agregação de logs de todos os microserviços para procurar erros, falhas e comportamentos anómalos.
  • Registo estruturado: Logs em formato JSON ou outras estruturas parseáveis para facilitar a análise.
  • Ferramentas: ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Loki.

Traçabilidade (Distributed Tracing)

  • Acompanhamento de pedidos: Permite rastrear o percurso de um pedido através de múltiplos microserviços, identificar pontos de estrangulamento e erros em sistemas distribuídos.
  • Visualização: Representação do fluxo de execução do pedido em forma de diagrama.
  • Ferramentas: Jaeger, Zipkin, OpenTelemetry.

Verificações de prontidão e vivacidade (Readiness and Liveness Probes)

  • Verificações de vivacidade (Liveness probes): Determinam se o contêiner está a funcionar. Se a verificação falhar, o kubelet reinicia o contêiner.
  • Verificações de prontidão (Readiness probes): Determinam se o contêiner está pronto para receber tráfego. Se a verificação falhar, o kubelet não envia tráfego para esse pod.

Testes automatizados

  • Testes unitários e de integração: Verificam o funcionamento correto de componentes individuais e a sua interação.
  • Testes de carga: Avaliam o desempenho do sistema sob carga elevada.
  • Testes de caos (Chaos Engineering): Simulam falhas no sistema para testar a sua resiliência.

Sinais de funcionamento incorreto:

  • Aumento na frequência de erros nos logs ou na monitorização.
  • Aumento na latência de respostas.
  • Diminuição na capacidade de processamento.
  • Consumo anormal de recursos.
  • Falhas nos processos de negócio.

Exemplo de configuração de verificação de prontidão no Kubernetes:

# Definição de verificação de prontidão para o contêiner
readinessProbe:
  httpGet:
    path: /health # Caminho para o endpoint HTTP que devolve status 200 OK quando pronto
    port: 8080 # Porta do serviço
  initialDelaySeconds: 5 # Atraso antes da primeira verificação
  periodSeconds: 10 # Intervalo entre verificações