Abbiamo un progetto in cui il codice UI sarà sviluppato dalla stessa squadra ma in una lingua diversa (Python / Django) dal livello dei servizi (REST / Java). Il codice per ogni livello termina in diversi repository di codice e può seguire diversi cicli di rilascio. Sto cercando di elaborare un processo che impedisca / riduca le modifiche di rottura nel livello dei servizi dal punto di vista del livello dell'interfaccia utente.
Ho pensato di scrivere test di integrazione a livello di livello dell'interfaccia utente che verranno eseguiti ogni volta che creeremo l'interfaccia utente o il livello dei servizi (utilizzeremo Jenkins come strumento CI per creare il codice che si trova in due repository Git ) e se ci sono errori allora qualcosa nel livello dei servizi si è rotto e il commit non è accettato.
Sarebbe anche una buona idea (è una buona pratica?) che lo sviluppatore del livello di servizi crei e gestisca una libreria client per il servizio REST esistente nel livello dell'interfaccia utente che aggiornerà ogni volta che c'è un rompere i cambiamenti nella loro API di servizio? In teoria, avremmo il vantaggio di un'API tipicamente statica contro cui si basa il codice UI. Se l'API della libreria client cambia, allora il codice UI non verrà compilato (quindi sapremo presto che c'è stata una violazione). Continuerò anche a eseguire i test di integrazione sulla costruzione dell'interfaccia utente o del livello di servizi per verificare ulteriormente che l'integrazione tra l'interfaccia utente e i servizi continui a funzionare.