[tweet]O racional de converter um monólito em microsserviços é transferir parte da complexidade do desenvolvimento para a operação.[/tweet] Afinal, microsserviços tem menos código para entender, logo, desde que pouco acoplados, individualmente, são mais baratos de manter. Em compensação, quanto mais processos para “operar”, mais complexa se torna a operação. Daí a emergência para, em contextos com microsserviços, adotar técnicas modernas compatíveis com DevOps.
Em produção, quando diversos microsserviços são necessários para atender requisições ou demandas de processamento concorrentes, se amplificam os desafios de entender, justificar e solucionar problemas de performance ou falhas.
[tweet]A adoção de técnicas convencionais de logging em cada microsserviço torna a análise quase impossível, principalmente em sistemas sob stress, gerando mais ruído do que sinal da comunicação.[/tweet] Para agravar o problema, a adoção de microsserviços tem o efeito colateral, geralmente desejável e positivo, da reestruturação dos times de desenvolvimento, em grupos menores e mais segmentados. Não é raro, em condições de stress, onde “algo não vai bem”, brotarem acusações e fugas de responsabilidade.
A solução é substituir técnicas convencionais de logging por abordagens mais sofisticadas. [tweet]Em sistemas distribuídos, como os baseados em microsserviços, o tracing precisa ser consolidado.[/tweet] Ou seja, é necessário adotar técnicas e tecnologias que permitam verificar a história completa de cada requisição e processamento, passando por todos os microsserviços, mostrando claramente os intervalos de tempo transcorridos entre o início e o fim de cada interação, de forma integrada e centralizada.
Há diversas iniciativas para produzir esse tipo de análise. Modernamente, há uma tendência consolidação de padrões e protocolos abertos que devem ser seguidos e implementados, como o OpenTracing.
Bem implementadas, essas tecnologias permitem identificar rapidamente origens de lentidão ou de falhas de processamento.
[tweet]Manter sistemas distribuídos sem uso de ferramentas eficientes para observabilidade é como dirigir, a noite, com chuva, em uma estrada cheia de curvas, com faróis apagados.[/tweet]