Abbiamo un progetto in cui il codice dell'interfaccia utente verrà sviluppato dallo stesso team ma in una lingua diversa (Python / Django) dal livello dei servizi (REST / Java). Il codice per ogni livello esce in diversi repository di codice e può seguire diversi cicli di rilascio. Sto cercando di escogitare un processo che prevenga / riduca le rotture dei cambiamenti nel livello dei servizi dalla prospettiva del livello dell'interfaccia utente.
Ho pensato di scrivere test di integrazione a livello di interfaccia utente che eseguiremo ogni volta che creeremo l'interfaccia utente o il livello servizi (stiamo usando Jenkins come nostro strumento CI per costruire il codice che si trova in due repository Git) e se ci sono errori, quindi qualcosa nel livello dei servizi si è rotto e il commit non è accettato.
Sarebbe anche una buona idea (è una buona pratica?) Fare in modo che lo sviluppatore del livello di servizi crei e mantenga una libreria client per il servizio REST esistente nel livello dell'interfaccia utente che aggiornerà ogni volta che si verifica un cambiamento la loro API di servizio? Concepibilmente, avremmo quindi il vantaggio di un'API tipizzata staticamente su cui si basa il codice dell'interfaccia utente. Se l'API della libreria client cambia, il codice dell'interfaccia utente non verrà compilato (quindi sapremo prima che si è verificata una modifica non definitiva). Continuerei anche a eseguire i test di integrazione durante la creazione dell'interfaccia utente o del livello di servizi per verificare ulteriormente che l'integrazione tra l'interfaccia utente e i servizi funzioni ancora.