Temos um projeto em que o código da interface do usuário será desenvolvido pela mesma equipe, mas em uma linguagem diferente (Python / Django) da camada de serviços (REST / Java). O código para cada camada sai em diferentes repositórios de código e pode seguir diferentes ciclos de liberação. Estou tentando criar um processo que impeça / reduza as alterações na camada de serviços da perspectiva da camada da interface do usuário.
Pensei em escrever testes de integração no nível da camada da interface do usuário que executaremos sempre que criarmos a interface do usuário ou a camada de serviços (estamos usando o Jenkins como nossa ferramenta de IC para criar o código que está em dois repositórios Git) e se Se houver falhas, algo na camada de serviços quebrou e a confirmação não foi aceita.
Também seria uma boa idéia (é uma prática recomendada?) Fazer com que o desenvolvedor da camada de serviços crie e mantenha uma biblioteca-cliente para o serviço REST que existe na camada da interface do usuário que eles atualizarão sempre que houver uma alteração de interrupção no API de serviço deles? É concebível que teríamos a vantagem de uma API de tipo estatístico que compõe o código da interface do usuário. Se a API da biblioteca do cliente for alterada, o código da interface do usuário não será compilado (portanto, saberemos mais cedo que houve uma alteração de quebra). Eu também continuaria executando os testes de integração ao criar a interface do usuário ou a camada de serviços para validar ainda mais que a integração entre a interface do usuário e o (s) serviço (s) ainda funcione.