Nel tentativo di migliorare la "fiducia" che abbiamo nella nostra comunicazione interservizi.
Sfondo: "Contratti" è stata una questione di condivisione di un pezzo di codice che definisce un'interfaccia da implementare, ma nel corso degli anni, il codice condiviso è cambiato e sono nate molte diverse implementazioni (soap, msmq, rest, ecc.) Che potrebbero tutto detto per implementare la stessa interfaccia, ma in nessun modo funziona bene insieme, senza mappatura, che ha causato l'implementazione di una foresta di microservizi di "mappatura", che di nuovo appare in una versione diversa. Lo sviluppo e le operazioni ne soffrono entrambi.
Intenzione: vorrei definire i contratti per gli endpoint all'esterno, utilizzando qualcosa come Swagger o il progetto API. Con swagger posso confrontare il "contratto" swagger.json con swagger.json per il servizio che afferma di implementarlo, e con il progetto API, c'è "dredd". Per i trasporti basati su MSMQ, avremo bisogno di un altro approccio, ma penso che i contratti per la struttura all'interno dei messaggi potrebbero / dovrebbero essere conformi per gli stessi motivi degli endpoint http.
I dettagli su come verificare non sono la domanda - la domanda è: come organizzeresti questi contratti? Dovremmo disporre di un repository interno di contratti che non possono mai essere modificati, ma che si verificano solo nelle nuove versioni, e quindi comunicare al processo di verifica quali contratti sono (presumibilmente) implementati? Detto contratto-repo dovrebbe essere letto dal nostro processo di verifica e dai nostri sviluppatori (ed esterni) ...
Ogni input riguardante i problemi descritti in background è apprezzato, forse sto cercando il modo sbagliato per una soluzione?