Il mio team si trova in una situazione in cui è necessario creare circa 30 diversi processori. Per processori intendo codice che prende i dati da un DB e lo invia a un servizio remoto da qualche altra parte nel mondo. Ognuno di essi fa fondamentalmente la stessa cosa, solo con dati diversi.
Solo alcuni di questi processori verranno distribuiti sul server A, alcuni sul server B e così via. E non tutte le versioni allo stesso tempo. Se apportiamo una modifica al processore X, eseguiremo la versione e spediremo X lasciando da parte il resto dei processori da soli.
Abbiamo individuato tre opzioni possibili, ognuna delle quali ha i propri problemi:
- Hai 30 soluzioni diverse
- Hai una soluzione con 30 diversi progetti
- Avere una soluzione, con un progetto, con ciascuna funzionalità del processore separata per namespace
Il principale con # 1 è di dover creare e mantenere 30 diverse soluzioni. E se dovessimo apportare una modifica a molti processori contemporaneamente, avremo bisogno di aprire soluzioni per farlo.
Il conge principale con # 2 è il controllo delle versioni. Se suddividiamo il codice, diremo tutto, anche se è stato modificato un solo progetto.
Il conge principale con # 3 è lo stesso di # 2. E poi abbiamo anche bisogno di trovare un modo per escludere determinati processori da determinati server per la distribuzione. # 3 è il più facile da gestire durante lo sviluppo, ma il più difficile durante la distribuzione.
Una di queste è l'opzione migliore, o c'è qualcos'altro che non ho considerato?