Executando verificação de segurança...
1

Eu fui um dos que faziam parte desse culto. Depois do último projeto, me arrependo. Mas me arrependo só um pouco.

Resumindo: a experiência do seu time é um fator fundamental pra tomar a decisão de monolito X microsserviços.

Eu, o engenheiro de dados do projeto (com experiência prévia em dev), argumentei bravamente contra o líder técnico e o desenvolvedor full-stack (que era quem ia de fato desenvolver o nosso backend, sozinho). Ele queria fazer um monolito, pra entregar a solução o mais rápido possível. Eu disse que fazer um monolito ali não era a melhor solução, dada a complexidade do nosso sistema (não era um sistema simples, a empresa é de grande porte). Ele queria entregar rápido, porque ia sair da empresa em poucos meses, e nós íamos ficar lá com um monolito legado, de difícil manutenção. Eu estava pensando na manutenabilidade do sistema, e nada importava mais do que isso. Afinal, depois que ele saísse, a bomba iria cair no nosso colo.

Entretanto, eu falhei em levar em consideração que nem ele nem o líder técnico tinham experiência com arquitetura de microsserviços, e eles não tinham a quem recorrer para tirar dúvidas - a não ser eu. E eu não tenho tanta experiência assim com arquitetura de microsserviços! E mesmo se tivesse, eu tinha minhas tarefas com deadlines também. E ainda por cima acho que ele ficou com raiva de mim, porque não pediu ajuda também, mesmo eu me dispondo pra ajudar no que pudesse.

O resultado é que cerca de dois meses depois ele entregou um "microsserviço" por página da aplicação. Ou seja, como vocês já devem imaginar, havia duplicação de código por todo lado. Por exemplo, ao invés de fazer um microserviço para efetuar o log, o mesmo código era copiado em todos os microsserviços. Havia alto acoplamento, duplicação de código, e baixa coesão. Qualquer benefício de se ter um microsserviço passou a ser inexistente, mas mantivemos toda a complexidade de ter que manter várias bases de código separadas, e toda a dificuldade de administração da computação distribuída.

Portanto, eu diria que se você não tiver uma pessoa MUITO experiente no time, que irá parar tudo que ela está fazendo só para arquitetar bem os microsserviços, então faça um monolito.
Não subestime a quantidade de coisas que são necessárias de se aprender para se fazer corretamente um sistema orientado a microsserviços! DDD é só a ponta do iceberg, e só uma pessoa no time com esse conhecimento não será o suficiente!

... mas sigo dizendo que eu só me arrependo um pouco, porque continuo pensando que se tivéssemos feito uma arquitetura bem-feita, nós não teríamos o mesmo problema, e teria sido a melhor decisão para a saúde do projeto.

Carregando publicação patrocinada...