Enquanto o mercado avança em adoção de serviços distribuídos, Murilo Alencar observa uma inversão silenciosa na discussão sobre arquitetura. A migração de um sistema único para vários serviços independentes resolve um problema específico, e não a lentidão de entrega em geral. Quando a causa do atraso está em outro lugar, a mudança troca uma dificuldade conhecida por várias novas. Em razão disso, a arquitetura responde por uma parte pequena do tempo de entrega.
Um monolito é um sistema construído e publicado como uma peça só. A arquitetura distribuída divide esse conjunto em serviços que sobem de forma independente, com comunicação pela rede. A escolha entre as duas formas depende do tamanho do time, do volume de tráfego e da maturidade operacional da empresa, nunca da preferência técnica do momento. A escolha, portanto, depende do contexto da empresa e não da tendência.
O que a divisão em serviços resolve de fato?
O ganho real aparece quando muitas equipes disputam o mesmo repositório. A divisão permite que cada grupo publique no próprio ritmo, sem esperar o ciclo de teste de todo o sistema, e o benefício cresce conforme o número de times envolvidos. Com poucas equipes, o ganho de independência não compensa o custo somado. O repositório único, nesse porte, raramente é o gargalo da entrega.
O segundo ganho, sob o entendimento de Murilo Moura Alencar, C-Level e Board Member, é a escala seletiva. Uma função que recebe muito mais requisições pode ser dimensionada por conta própria, sem replicar o sistema inteiro. Em termos concretos, a economia de infraestrutura aparece apenas quando a diferença de carga entre as partes é realmente expressiva. Em cargas equilibradas, a escala seletiva economiza pouco e complica muito.
Os custos que a migração adiciona
A chamada que antes acontecia na memória passa a atravessar a rede, ponto em que Murilo Alencar adverte ao tratar de operação. Como consequência, a latência aumenta, a falha parcial se torna rotina e qualquer operação que envolva dois serviços exige tratamento de erro, repetição controlada e uma decisão sobre o trabalho concluído pela metade. A consistência entre serviços passa a ser responsabilidade do próprio código.
A investigação de problemas também muda de natureza. O rastro de uma requisição passa a cruzar vários serviços, o que exige registro padronizado, identificador compartilhado e ferramenta de observação, sob pena de a equipe perder horas apenas para localizar onde o erro começou. O custo de operação cresce, assim, junto com o número de serviços. O diagnóstico, por conseguinte, exige ferramenta própria desde o início.
Sinais de que o problema não é a arquitetura
A lentidão de entrega costuma ter origem no processo de revisão, na ausência de teste automatizado ou na fila de aprovação, e não na forma do sistema. Dividir o código nesse cenário, no entanto, espalha o mesmo gargalo. A migração, nesse caso, apenas distribui o atraso entre mais repositórios. O mesmo gargalo reaparece somado ao custo de operar vários serviços.
Um monolito bem organizado internamente, com módulos de responsabilidade clara e fronteiras respeitadas, sustenta equipes grandes por muito tempo. A desorganização interna é o verdadeiro obstáculo, como interpreta Murilo Moura Alencar, Tech, People & Game Strategist, já que um sistema sem limites internos definidos se transforma em um conjunto de serviços igualmente emaranhado depois da migração. A organização interna, portanto, precede qualquer decisão sobre divisão.
Como decidir com menos risco
A separação de um único serviço, escolhido pela fronteira mais evidente, funciona como teste de realidade, aponta Murilo Alencar sobre evolução de sistemas. A equipe descobre o custo de operação e de publicação em escala pequena e, assim, a decisão sobre continuar passa a ter base em experiência própria e não em apresentação de caso alheio. Um único serviço extraído já expõe o custo real da arquitetura distribuída.
Antes de qualquer corte, o desenho das fronteiras precisa ser feito dentro do próprio monolito. Quando os módulos já conversam por interfaces bem definidas, a extração de um serviço vira uma operação mecânica, em vez de uma reescrita completa com prazo imprevisível. O desenho das fronteiras, desse modo, entrega valor mesmo sem a migração. A organização interna melhora o sistema atual de imediato.
