Mitigando riscos de se criar monolíticos distribuídos

A adoção de arquitetura baseada em microsserviços sem o conhecimento das suas desvantagens tem sido umas das principais dores de cabeças em diversos projetos de modernização que estamos encontrando no mercado atualmente. Acreditamos que decompor sistemas em serviços sem combater adequadamente o acoplamento aumenta a complexidade e, frequentemente, decisões equivocadas transformam essas aplicações em verdadeiros monolíticos distribuídos.

Um dos principais indícios de que estamos trabalhando em um monolito distribuído é quando uma nova funcionalidade gera um deploy sincronizado de um conjunto de serviços, ao invés de um único serviço impactado pela nova funcionalidade. Essa característica evidencia que o isolamento das aplicações provavelmente não está ocorrendo de maneira adequada e os principais benefícios de uma arquitetura de microsserviços não estão sendo aproveitados.

Este problema geralmente acontece por falta de conhecimento profundo do domínio, onde os microsserviços são segmentados sem levar em consideração a coesão dos contextos propiciando um forte acoplamento entre eles. Contudo, podemos adotar algumas estratégias para mitigar estas dores de cabeça.

Comece simples, comece com um monolito bem feito

Geralmente não é recomendável já iniciar uma arquitetura de maneira muito fragmentada devido ao custo advindo da complexidade. Uma boa estrutura monolítica pode ser muito mais simples de ser mantida. E quando o conhecimento do negócio se tornar mais sólido, faça (se necessário) a separação dos serviços levando em consideração os contextos, a estrutura do time e a necessidade de escala.

Tenha um padrão coerente para segmentar os microsserviços

Definir as fronteiras de cada microsserviço não é tarefa simples, mas é a chave para evitar acoplamentos desnecessários. O Domain Driven Design apresenta o conceito de bounded-context que pode ser útil como diretriz para definir uma estratégia consistente de segmentação dos microsserviços.

Evolua de maneira incremental

É interessante que a segregação dos serviços seja feita de forma gradual. Aumentar a granularidade dos serviços tornando-os “micro” de maneira desnecessária vai apenas aumentar a complexidade e o custo para manter as aplicações.

E não se esqueça…

De forma geral, é melhor ter que, eventualmente, segmentar um serviço do que ter que lidar de maneira desnecessária com uma explosão de serviços e os seus desafios de consistência eventual. 

Esse tema é discutido de maneira mais ampla no livro “Monolith to Microservices” que recomendamos, do Sam Newman.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments

AUTOR

Raphael Castilho
Desenvolvedor especialista em .NET com experiência em aplicações corporativas de larga escala.

SOLUÇÕES EXIMIACO

Arquitetura de Software

ESTRATÉGIA & EXECUÇÃO EM TI

Simplificamos, potencializamos 
aceleramos resultados usando a tecnologia do jeito certo.

INSIGHTS EXIMIACO

Confira outros insights de nossos consultores relacionados a esta solução de negócio:

04/03/2021
Elemar Júnior
Tech Trusted Advisor, Fundador e CEO da EximiaCo
04/03
2021

COMO PODEMOS LHE AJUDAR?

Vamos marcar uma conversa para que possamos entender melhor sua situação e juntos avaliar de que forma a tecnologia pode trazer mais resultados para o seu negócio.

COMO PODEMOS LHE AJUDAR?

Vamos marcar uma conversa para que possamos entender melhor sua situação e juntos avaliar de que forma a tecnologia pode trazer mais resultados para o seu negócio.

+55 51 3049-7890 |  contato@eximia.co

0
Queremos saber a sua opinião, deixe seu comentáriox
()
x

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.