Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
No desenvolvimento com Spring Boot, uma situação comum é lidar com configurações que controlam chaamdas a diferentes serviços, como legacy e novas APIs. A dúvida é como garantir que, ao ativar uma, a outra não seja acionada, evitando chamadas contrárias às regras de negócio ou configurações.
Um exemplo clássico é quando temos propriedades como employeeEngine.callLegacy e employeeEngine.callNewApi e queremos validar que apenas uma delas seja verdadeira por vez, sem possibilidade de ambas serem ativadas ou ambas desativadas.
A solução mais prática é criar uma validação customizada na camada de configuração ou na inicialização do contexto. Pode-se usar classes de validação ou até mesmo um Bean que verifica essas combinações ao startup, lançando exceções se as condições não forem atendidas. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Assim, garante-se que o sistema não rode com configurações inválidas, especialmente quando a operação envolve diferentes endpoints que podem impactar o desempenho ou a segurança.
No seu time, já passaram por isso? Como vocês costumam validar essas configurações em ambientes de produção? Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
No meu ponto, o mais difícil é cuidar para que essa validação seja aplicada em todos os ambientes. Pode acabar esquecendo em staging e aí só dá problema na produção. Como vocês controlam isso?
Boa, mas acho que esse tipo de validação deve ficar bem no início, talvez na própria configuração, pra evitar até que o app inicie com problema. Já passou por isso na prática.
Concordo com o Lucas. Aqui no meu time, criamos um componente que valida essas configurações e impede o startup se estiverem conflitantes. Assim, evita problema em runtime.
Importante também pensar na documentação dessas validações. Se alguém for alterar as configurações depois, tem que estar claro o que é permitido ou não, pra evitar erro humano