21 de Junho de 2025
Migração de ownership entre módulos sem buraco de responsabilidade
Quando a responsabilidade muda de módulo e ninguém define a transição com clareza, o sistema entra num limbo em que dois lados assumem pouco e ninguém assume de verdade.
Andrews Ribeiro
Founder & Engineer
3 min Intermediario Sistemas
O problema
Ownership não muda sozinho.
Ele é movido.
E quando isso acontece sem acordo claro, aparecem sintomas previsíveis:
- dois módulos escrevendo a mesma coisa
- nenhum módulo assumindo correção
- incidentes com dono nebuloso
- backlog de limpeza que nunca fecha
Na superfície parece só reorganização interna.
Na prática, é mudança de fronteira.
Modelo mental
Migrar ownership entre módulos pede responder quatro perguntas:
- quem é o dono antigo?
- quem é o dono novo?
- o que ainda fica com o antigo durante a transição?
- em que momento o antigo deixa de responder por isso?
Sem esse recorte, a transição vira um meio-termo ruim:
- o módulo velho ainda opina
- o módulo novo ainda não assume tudo
- o sistema fica sem centro claro de decisão
Exemplo simples
Imagine que faturamento era dono da regra de cobrança recorrente.
Agora a responsabilidade vai para assinaturas.
Se a migração acontecer só movendo função e endpoint, você ainda precisa decidir:
- quem publica eventos durante a transição
- quem valida inconsistência
- quem é acordado quando um retry falha
- quem responde se os números divergirem
Se isso não estiver explícito, a conversa vira:
“achei que isso ainda estava com o outro módulo”
O erro comum
O erro comum é pensar só em código.
Mover arquivo, classe ou handler não basta.
Ownership real também envolve:
- contrato
- observabilidade
- operação
- suporte
- cleanup do legado
Outro erro comum é deixar os dois lados ativos demais “por segurança”.
Essa convivência sem semântica vira:
- escrita duplicada
- leitura ambígua
- fallback eterno
O que normalmente ajuda
Normalmente ajuda desenhar a migração como fase operacional:
- módulo antigo como fonte principal
- módulo novo espelhando ou assumindo partes explícitas
- janela de comparação
- corte definido
- limpeza do caminho velho
Na prática, costuma ficar muito mais claro quando o time documenta:
- quem decide
- quem executa
- quem observa
- quem responde
Isso reduz bastante o limbo entre “já passou” e “ainda não passou”.
Como um senior pensa
Quem já viu ownership mal migrado costuma perguntar:
- se der problema hoje, quem é o dono oficial?
- o módulo antigo ainda tem autoridade ou só compatibilidade?
- o módulo novo já consegue operar sozinho?
- o plano inclui desligar a rota antiga ou só adicionar a nova?
Essa conversa é menos glamourosa que falar de arquitetura.
Mas é exatamente o que evita meses de confusão.
Ângulo de entrevista
Esse tema aparece em modularização, evolução de sistema e liderança técnica.
O entrevistador quer ver se você entende:
- que ownership é parte da arquitetura
- que transição de responsabilidade precisa de fase e critério de saída
- que “os dois cuidam” normalmente significa “ninguém cuida direito”
Resposta forte costuma soar assim:
“Eu trataria a mudança de ownership como migração operacional, não só como refactor. Definiria quem é o dono em cada fase, quem responde por falha durante a convivência e qual evidência permite desligar a responsabilidade antiga.”
Takeaway direto
Migrar ownership sem fase explícita cria o pior dos mundos:
dois donos no desenho e nenhum dono na hora ruim.
Resumo rápido
O que vale manter na cabeça
- Ownership migrado sem transição explícita cria limbo, duplicidade e incidente difícil de atribuir.
- Mudar responsabilidade entre módulos não é só mover código; é mover decisão, contrato e operação.
- Fase de convivência precisa dizer quem lê, quem escreve, quem responde por falha e quando a migração termina.
- Buraco de responsabilidade costuma nascer quando todo mundo assume que o outro lado já virou dono.
Checklist de pratica
Use isto ao responder
- Consigo explicar qual módulo é dono agora, qual ainda está em transição e até quando?
- Durante a convivência, está explícito quem escreve, quem consome e quem responde por incidente?
- A migração tem critério de saída ou está aberta por tempo indefinido?
- Estou chamando de refactor algo que, na prática, muda fronteira de responsabilidade?
Você concluiu este artigo
Próximo passo
Monólito modular na prática Próximo passo →Compartilhar esta página
Copie o link manualmente no campo abaixo.