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