Domanda

Sto progettando una suite di applicazioni Web che hanno la stessa funzionalità di base. Cioè, sapranno tutti come creare e operare su widget. Le differenze saranno nel loro pubblico di destinazione e come un utente interagirà con un widget. In sostanza, se queste applicazioni fossero sviluppate in modo indipendente, ci sarebbe Un sacco di sforzo duplicato.

Per semplificare questo ho pensato a due soluzioni. Vorrei tutto il tuo feedback sui pro e contro per ogni soluzione e che preferiresti.

  1. "Piattaforma" - L'idea è che esiste un livello di servizio indipendente, A LA Web Services. Non sarebbe un servizio web, ma semplicemente un back-end per tutte le applicazioni. La piattaforma parlerebbe con le applicazioni tramite messaggistica o serializzazione degli oggetti.

    Vorrei scrivere la piattaforma con Java, ma l'intenzione sarebbe che le applicazioni potessero essere scritte con qualsiasi framework Web come Rails, Django, Flex o solo qualcosa in Java.

    La piattaforma astrarrebbe il database, quindi tutte le interazioni con il back-end verrebbero eseguite tramite la piattaforma. Un potenziale problema con questo è che l'aggiornamento della piattaforma comporterà la riduzione di tutte le applicazioni. Ma almeno tutte le applicazioni saranno coerenti per quanto riguarda il back-end.

    Mi piace il modo in cui questo è tagliato in orizzontale e che l'applicazione debba davvero concentrarsi sul front-end, piuttosto che preoccuparmi di come organizzare il back-end.

  2. "Moduli" - L'idea è che scrivo tutto con Java e sviluppino moduli che vivrebbero nei loro barattoli. Ogni modulo rappresenterebbe un modulo Guice e ogni applicazione includerebbe solo i moduli che desiderano e creare i propri iniettori.

    Questo approccio renderebbe ogni applicazione completamente indipendente l'una dall'altra, a parte la condivisione di un database comune. Quindi, teoricamente, sarebbe molto più facile distribuire un'applicazione in un ambiente diverso senza preoccuparsi della piattaforma. Sarei bloccato in un ambiente linguistico, Java. Anche se Jruby e Jython sarebbero disponibili. Quindi forse non è molto preoccupante.

    Inoltre, prevedo che sia più facile personalizzare un'applicazione senza effettuare la piattaforma. L'unico con è che se aggiorno un modulo, vorrei ridistribuire ogni applicazione utilizzando quel modulo. Ciò sarebbe facile con l'integrazione continua, però.

Grazie per il tuo tempo.


Per quanto riguarda la risposta di Gary, ho deciso di adottare un approccio ibrido.

Svilupperò una piattaforma, che sarà il punto di accesso per le applicazioni Web su dati e servizi. Quindi modulerizzerò la piattaforma, ma tutti i moduli rimarranno in un singolo repository con un POM genitore. Mentre potevo solo tenerli tutti in un singolo barattolo, vorrei che la separazione di Classpath per scopi di sviluppo, fatti pensare a me/altri prima di richiedere a un modulo di dipendere da un altro.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top