Jornada para Microsserviços

Centralidade elevada indica estresse de um microsserviço e fragilidade de um sistema distribuído

Após extrair um microsserviço do sistema monolítico, segregando as bases de dados, com classificação apropriada de APIs internas e externas e instrumentação suficiente para observabilidade, é importante estabelecer indicadores que suportem a evolução arquitetural. Um das análises fundamentais acontece a partir da centralidade.

Centralidade

No âmbito da teoria dos grafos e da análise de redes, centralidade é uma medida de importância de um vértice em um grafo. Existem diferentes tipos de medidas de centralidade de um vértice num grafo que determinam a importância relativa, que permitem, por exemplo, estimar o quanto uma pessoa é influente dentro de uma rede social, o quão é importante uma sala dentro de um edifício e como é bem utilizada uma estrada dentro de uma rede urbana. Vários conceitos de centralidade foram primeiramente desenvolvidos na análise de redes sociais, e muitos dos termos usados para medir a centralidade refletem a sua origem sociológica.

Existem quatro medidas de centralidade que são amplamente utilizados na análise de rede: centralidade de grau, centralidade de intermediação, centralidade de proximidade e centralidade de vetor próprio.

Wikipedia

Em sistemas distribuídos, indicadores de centralidade ajudam a determinar a importância relativa de um componente para a operação. Quanto maior a centralidade, maior a importância.

Ferramentas, como o Jaeger, são excelentes fontes de informação para este tipo de análise.

Ter, em um ambiente produtivo, componentes com alta centralidade de grau indica acoplamento. Componentes com grau de entrada elevados (indegree) – ou seja, muito “consumidos” por outros componentes – convertem-se rapidamente em gargalos e, geralmente, são os pontos frágeis da estrutura. Componentes auto grau de saída elevados (outdegree) são, frequentemente, ofensores.

Na prática, analisamos a centralidade em duas perspectivas:

  1. estática – ignorando o número de interações, considerando apenas a existência de conexão entre os componentes
  2. dinâmica – ponderando o peso das conexões com base no número de interações, acumulado de response time, ou outra métrica mensurável.

Geralmente, a perspectiva dinâmica, analisando complexos de microsserviços e suas conexões como grafos direcionados e ponderados, produz insights mais valiosos.

***

Na medida em que um microsserviço amadurece, em análise dinâmica, deve haver redução de centralidade tanto do “bloco monólito” – que está sendo fragmentado – quanto dos recursos que este utiliza – principalmente o banco de dados.

***

Assumindo que 20% das features de um sistema correspondem a 80% do uso, uma estratégia de fragmentação de um monólito será tão mais impactante quanto for o ritmo de redução da centralidade “dinâmica” do código sendo convertido para microsserviços.

***

O surgimento de microsserviços com excessiva centralidade “estática” – ou seja, analisando a estrutura como um grafo não ponderado – é, geralmente, indicativo de falhas de design, como, por exemplo, a criação de “Entity Services Antipattern”

***

Componentes com maior centralidade, estática ou dinâmica, são aqueles que tem maior custo de manutenção, demandando mais cuidado para o deploy, maior cobertura por testes automatizados, sobretudo testes de integração.

Em Resumo
  • O problema

    Ao manter sistemas distribuídos, como aqueles baseados em microsserviços, é importante ter fundamentação a partir de indicadores.
  • O insight

    Centralidade, que é uma propriedade de nodos em um grafo, é um ótimo "primeiro indicador" para avaliar a saúde, tanto do ambiente produtivo quanto do design.
  • Os benefícios

    Centralidade, tanto para grafos ponderados quando não ponderados, é um indicador barato para calcular e produz insights para a evolução do sistema, tanto em ambiente produtivo quanto no desenvolvimento.

Elemar Júnior

Microsoft Regional Director e Microsoft MVP. Atua, há mais de duas décadas, desenvolvendo software e negócios digitais de classe mundial. Teve o privilégio de ajudar a mudar a forma como o Brasil vende, projeta e produz móveis através de software. Hoje, seus interesses técnicos são arquiteturas escaláveis. bancos de dados e ferramentas de integração. Além disso, é fascinado por estratégia e organizações exponenciais.

Talvez você goste também

Carregando posts…

Mais posts da série Jornada para Microsserviços

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *