Gestisco un sito di e-commerce costruito in Java utilizzando Spring e Hibernate. Se devo descrivere brevemente l'architettura corrente, è come questo:
- Sto avendo due progetti per nome - store front e admin
- Il progetto Storefront contiene DAO, modello, servizio, controller e visualizzazioni per mostrare la vista di storefront del sito Web e contenere anche le API per le app. In un perfetto livello di architettura MVC.
- Il progetto Amministratore contiene DAO, modello, servizio, controller e viste per mostrare le interfacce backend / admin per la gestione di questo negozio di e-commerce. È anche un'architettura MVC perfetta.
-
Storefront e admin possono essere compilati e distribuiti indipendentemente.
-
Storefront fa un uso pesante della cache estraendo la maggior parte dei dati del catalogo nella memoria.
- Entrambi i progetti parlano indipendentemente con lo stesso database MySQL per tutte le operazioni CRUD.
- Ogni volta che viene richiesta una comunicazione tra questi due progetti, lo fanno usando le API REST.
- Ho seguito questa architettura per sviluppare entrambi i progetti in modo indipendente, tenerli leggeri e implementarli in modo indipendente.
Tutto sta andando bene, ma molte volte ho la sensazione che potrebbe non essere l'approccio corretto per risolvere il mio problema. I problemi che affronto frequentemente sono:
- Causa la duplicazione del codice, soprattutto in Modelli, poiché è qualcosa che entrambi i progetti hanno ma la maggior parte delle proprietà in essi sono comuni.
-
Insieme ai modelli, la duplicazione di codice avviene anche nel servizio e DAO, non è molto, ma possiamo supporre che almeno il 30% sia duplicato anche in essi.
-
Se sono necessarie modifiche nel database, allora devo assicurarmi che tali modifiche siano state fatte correttamente in entrambi i progetti poiché entrambi stanno effettuando chiamate DB indipendenti.
Si prega di suggerire quale potrebbe essere l'approccio migliore per gestire e architettare tale progetto.
Questo progetto e il sito web non sono abbastanza piccoli. Se devo darti un'idea, le seguenti sono statistiche:
- Circa 1 milione di prodotti
- Traffico mensile di circa 1 milione
- Ordini giornalieri intorno a 1000
- Entrambi i progetti costituiscono circa 1000 file di classe e oltre 300 JSP
- Siamo un team di soli 3 sviluppatori di stack completi.
Quale potrebbe essere l'approccio migliore con cui possiamo gestire questo progetto con una duplicazione del codice minima, facile da costruire e condividere tra i membri del team. E un progetto che potrebbe scalare tenendo a mente la crescita futura.