Un framework come il Framework di primavera rientra nell'architettura Data Centric?

2

Con tutto il discorso di Microservices con Domain Driven Design, ho esaminato due architetture: Database-Centric Architecture e Domain-Centric Architecture (non da confondere con Domain Driven Design ). Ora in Architecture-Centric Architecture, il database è l'oggetto focale da cui dipendiamo. Senza di esso, l'applicazione non funzionerebbe. Usando il framework Spring come esempio, ora possiamo facilmente implementare un intero ecosistema Microservice con tutta la magia che Spring ci offre. Tuttavia, osservando molti diagrammi di Microservices, mi sembra ancora molto più Data-centric poiché il database sembra essere un componente importante che, se smettesse di funzionare, il sistema non funzionerebbe affatto.

Osservando il diagramma sopra, possiamo facilmente rompere i monoliti in servizi indipendenti e riusciamo ad applicare il Domain Driven Design all'interno dei nostri microservizi. Tuttavia, mi sembra ancora di essere all'interno di Architecture-Centric Architecture in quanto i nostri microservizi non funzionerebbero come previsto senza i nostri database. Inoltre sembra che l'uso di un framework come Spring in genere ti leghi al pattern MVC (@Controller, @Service, @Repository) che per me è più Database-Centric piuttosto che Domain-Centric.

    
posta Arty 23.01.2018 - 12:08
fonte

2 risposte

3

Spring Framework è un framework che supporta entrambe le architetture. Ha caratteristiche che rendono l'architettura basata su database più facile da fare, ma sarebbe un termine improprio classificarlo semplicemente in questo modo.

Ci sono diversi microservizi costruiti con Spring che non usano affatto un database. Probabilmente non ne sai niente perché sono proprietari, beh, un dominio.

Puoi trovare più blog e articoli su come fare cose incentrate sui dati in primavera perché ci sono molti strumenti per renderlo più facile, e perché puoi insegnarlo in un modo che è facile astrarre il principio dai dettagli . Insegnare l'architettura incentrata sul dominio è più difficile da astrarre il principio, ed è meno sexy perché richiede meno strumenti.

Penso anche che sia un termine improprio confondere MVC con un design incentrato sui dati. MVC è un modello di progettazione per separare un modello (che dovrebbe essere dominio centrico) dal modo in cui i servizi interagiscono con esso (Controller). Entrambi sono distinti dalla Vista, che nei servizi incentrati sul dominio è solitamente al 100% nel front-end. L'instradamento di un URL al codice in una classe è un mezzo per fornire un modo comprensibile di programmazione.

Come progetti i tuoi servizi dipende da te. Gli URL e i metodi a cui rispondi e anche il modo in cui autorizzi un utente dipende da te. La primavera è semplicemente uno strumento che può aiutarti a raggiungere questi obiettivi. È uno strumento che è in qualche modo compreso dalla maggior parte di coloro che sviluppano applicazioni basate su Java. Ciò significa che è più facile trovare persone che sanno come usarlo ed essere produttivi prima.

    
risposta data 23.01.2018 - 15:36
fonte
0

Puoi trasformare qualsiasi architettura database-centrica in un'architettura basata sul dominio semplicemente aggiungendo un livello di riferimento indiretto.

Database Centric:

Database <--> Data Access Layer (DAL) <--> UI

Domain-Centric

Database <--> Data Access Layer (DAL) <--> Business Logic/Service Layer (BLL/SL) <--> UI

Il DAL può essere qualsiasi cosa tu voglia, incluso Spring. Il BLL / SL comunica con il DAL usando CRUD. L'interfaccia utente comunica con BLL / SL utilizzando metodi specifici del dominio.

    
risposta data 23.01.2018 - 17:30
fonte