Observabilidade
#Observabilidade em sistemas monolíticos é importante, mas em sistemas distribuídos se torna quase que indispensável pensar em 3 pilares.
1 – #Logs: O que está acontecendo no sistema? Informações de processos executados, ou erros é essencial para ter certeza que tudo esta ocorrendo bem, ou ajudar a investigar e solucionar uma situação de erro.
2 – #Metrics: Como esta a saúde da minha aplicação? Cada serviço possui um uso diferente, identificar serviços com gargalos ajuda evoluir sua infraestrutura como um todo. Uso de cpu, porcentagem de erro em cada serviço é muito bom para identificar incidentes localizados. Ter uma arquitetura que garanta a tolerância a falhas, usando sistemas de #mensagerias, é uma ótima estratégia para diminuir os impactos de um erro em produção.
3 – #Tracing: Construir reaquisições pensando na arquitetura de #microsserviços, é incluir headers para saber por onde uma requisição passou e como ela se comportou. A partir disso saber onde existe pontos de melhorias, seja de performance ou outro aspecto.

[…] – Entenda onde existem gargalos: Entenda sua demanda, e veja onde existe locais que a requisição demora, quais os motivos. Query ? Limite do banco de dados? Complexidade do código? Escalar código ineficiente, não é uma prática aconselhada.– Paralelizar processamentos : Encontre processos que podem ser executados de forma paralela, sem impactos ao negócio. Promova uma arquitetura que consiga realizar esse processamento. Use mensagerias (rabbitmq, kafka, sqs..) para ter mais poder nessa etapa.– Trate erros: Os erros não devem se espalhar, nem impedir a continuidade dos outros processamentos. As mensagerias também apoiam nesse ponto, filas DLQ guardam mensagens com erros, para serem processadas depois.Tentativas: Não é porque não processou uma vez que a mensagem nunca irá processar, pode existir uma falha no outro serviço que você esta usando, utilize de técnicas para permitir o retry.– Monitoramento: Nunca é demais ter logos, métricas e tracing numa aplicação. Identifique como metrificar da melhor forma a saúde e os limites para escale-up/down da sua aplicação. Adicione alarmes para você ser avisado de qualquer instabilidade. ( tem post falando disso aqui) […]