Monitoramento e observabilidade de API
Na empresa em que trabalho atualmente temos uma cultura onde o dev responsável pelo desenvolvimento também é responsável por subir e monitorar o seu código, apesar de eu particularmente gostar disso vejo alguns problemas. Pela falta de auto crítica de conhecimento e de tempo, atualmente algumas das nossas aplicações tem pouco ou quase nenhum monitoramento, o que me levou a tentar dar um passo a frente. Como no momento tenho atuado como dev java, comecei por ai, configurei e padronizei o log nas APIs, e depois os encaminhei para o elastic search para serem visualizados com o kibana, vi junto a outro colega, uma melhora significativa no acompanhamento de logs se comparado ao método anterior (AWS - CloudWatch). Então decidi compartilhar o avanço com os outros colegas e a necessidade de haver tal monitoramento, acabamos entrando em um acordo, vamos tentar centralizar todos os logs no elastic e se possível sem o envolvimento do dev em si, pois assim ele pode focar na lógica do código e eu no primeiro momento daria os primeiros passos. Bom, não é o meu objetivo aqui aprofundar nas tecnologias e ferramentas que estamos usando para tal ação, como um bom dev, as vezes eu paro e penso se estou no caminho certo ou se estou errando feio. Gostaria de ouvir opiniões e sujestão de vocês.
Estamos começando no lugar certo? Está estratégia de deixar o dev do código fora em primeiro momento faz sentido? Qual seria o próximo passo? Quais ferramentas usam ou recomendam?
Sei que não tem resposta direta e nem uma fórmula mágica, tudo depende, mas qualquer comentário construtivo é bem vindo.
Cara, eu acho que conhecer sobre monitoramento faz todo sentido e é bom o dev também atuar sobre isso (não só na implantação). A ideia que você teve foi muito boa, e não vejo o dev sendo colocado de fora do processo. Quanto mais próximo ele estiver, mais fácil será para ele ver que alguma ação precisa ser tomada na aplicação de forma proativa.
Existem muitas formas de acompanhar, de mercado tem uma paulada. Acho que é sempre bom experimentar algumas soluções e montar uma convenção de uso com o time para implementação em todas as aplicações (definir um molde que todos possam seguir, implementar e que todos possam ter acesso com entedimento claro da ferramenta).
Quanto mais informação melhor, e assim você consegue antecipar um problema que chegaria no cliente antes de acontecer. E mesmo que aconteça, como acesso aos logs fica mais fácil de procurar o erro (ou ao menos, deve agilizar a análise e o possível problema).
Muita gente pode até falar; "ah, mas ai é mais uma coisa e vai demandar mais tempo para fazer...", mas o problema não é tempo para fazer, mas sim o tempo que você ganha se acontecer algum problema, seja de código, de ambiente, em acessos... Isso gera valor no final principalmente por ser algo que favorece o uptime da aplicação, a sua sustentação em cenários de necessidade de manutenção e escalação em nível vertical ou horizontal (também que podem ser feitos de forma preventiva).
Então sim, reforço que vale muita a pena.
Já participei de um cenário de aplicação igual ao que você mencionou e achei bacana. Acho que outras soluções legais como datadog, sentry, appDynamics, logstash... Vai variar bastante do cenário e também de conhecimento do time.
Troca algumas ideias em conjunto ao seu time para pegar essas percepções, vantagens principalmente. Vale bastante a pena!