Estou trabalhando em um projeto de software em que precisamos criar três APIs. Um para o canal de home banking, um para o canal da agência e um terceiro para o canal móvel .
A API da agência é a mais completa, pois possui todas as funcionalidades. Depois, a API Home um pouco menor e a API móvel.
Os arquitetos aqui criaram uma camada comum (serviços EJB entre canais compartilhados por todas as APIs). Mas as APIs são diferentes.
Por enquanto, não há grande diferença entre as APIs. A grande equipe começou com o canal da agência e estamos adaptando-o agora para o canal doméstico. Estamos apenas enriquecendo objetos especificamente para nosso aplicativo doméstico. Caso contrário, o código é 95% semelhante entre APIs. As APIs são construídas sobre o Spring MVC e possuem (controladores, modelos e alguns utilitários).
Basicamente, os controladores estão fazendo o mapeamento do BO para o ChannelObject (parece-me que não é o lugar certo para fazer isso) e alguns utilitários e serializadores extras. Tudo está duplicado por enquanto. Eles estão dizendo que o motivo da duplicação é que desejam as APIs independentes. "Se amanhã quisermos um comportamento diferente em casa do que em agência ou celular, não teremos problemas !!"
Existe um caso em que devemos aceitar código duplicado?