Microservices Architecture che separa backend e front end

4

Stiamo provando a spostarci (lentamente) nell'architettura di Microservices dalla nostra attuale architettura monolitica. Ho svolto le mie ricerche sull'architettura dei microservizi e vorrei ricevere un feedback sull'architettura che ho descritto di seguito dalla comunità.

Informazioni sull'applicazione
È un'applicazione web utilizzata internamente con circa 10-20 utenti. L'applicazione mostra i report nei grafici e il formato tabellare e le funzionalità di esportazione in pdf / xsl / csv. Col tempo l'applicazione potrebbe crescere e verranno aggiunte ulteriori funzionalità.

Quello che avevo in mente è di avere due microservizi (MS) che servono a scopi diversi un rapporto (MS) e Engine (MS).

Il motore è composto da quanto segue:
Major Libraries: Spring Boot, Spring Rest, Maven, JDBC Template Architettura: DAO, servizio e controller di riposo Server applicazioni: Tomcat (incorporato)

Breve riassunto:
Il livello DAO utilizza il modello JDBC a causa di query SQL complesse che verranno passate al Servizio per qualsiasi regola aziendale o altra logica. Rest Controller che prende i dati dal livello di servizio e funge da interfaccia tra Motore e Report

Report (MS) sono i seguenti:
Le principali librerie: Spring Boot, Spring Rest, Maven, JSP, Javascript / Jquery / Architettura: tecnologie di servizio, controller, front end Server applicazioni: Tomcat (incorporato)

Tecnologie alternative per il rapporto (MS):
AngularJS 2, NodeJS, Javascript / Jquery / HTML / CSS

Breve riassunto:
Il livello di servizio richiede informazioni da Engine (MS) tramite API REST, i dati verranno passati al Controller e serviti alla vista appropriata (combinazione di JSP, javascript / jquery / css / html, ecc.).
Considerato anche l'utilizzo di AngularJS 2 o NodeJS e Javascript per sostituire la tecnologia Java e Tomcat Application Server non appena ricevo un feedback.

Dati del database
- server esterno / separato
- attualmente valutando MySQL, MSSQL
: contiene molti dati in media 10K al giorno per tabella
- correttamente progettato (normalizzazione / indicizzazione ecc. come richiesto da DB Admin)
- Le query sono estremamente lunghe 8 A4 con indentazione adeguata, meglio come stored procedure o utilizzare i dati jpa?

Finora ho identificato pro e contro di alto livello con questo design, se qualcuno può aggiungere altro. Grazie

Pro

  1. Segnala MS utilizzando Java / Javascript / JSP può essere facilmente sostituito facilmente da qualsiasi tecnologia Front End senza influire sulla MS motore
  2. Report MS è liberamente associato a Engine MS e può utilizzare altra origine API REST
  3. Spring Boot riduce molto la configurazione e il cablaggio dei bean, oltre a includere tomcat e DB incorporati
  4. Uso di Maven per la gestione di build e librerie

Contro

  1. Latenza di rete tra Report e Engine MS poiché deve attraversare la rete per trasferire i dati
  2. Complessità extra del codice scritta in Java per Backend Services (Engine MS) e JSP / Javascript o Angular JS per frontend
  3. Strati di codifica hard di livello DAO come stringhe di query SQL difficili da eseguire il debug
posta dimas 05.04.2017 - 10:39
fonte

1 risposta

2

1) Non vorrei favorire la sostituzione della tecnologia Java con la versione Angular2. Invece dovresti incorporare Angular-2 all'interno dell'app java. Perché Angular sta facendo molti cambiamenti drammatici nella sua struttura. In futuro, potrebbe essere complesso o noioso per gli sviluppatori di applicazioni aggiornare la versione angolare a quella più recente.

2) Ho ancora un suggerimento per la tua area Database. Dovresti anche aggiungere REDIS come repository di dati no-sql come livello indipendente separato nella tua architettura. REDIS ti aiuterà a realizzare varie funzionalità con l'aumento delle prestazioni dell'app, come

  • Memorizzazione nella cache delle funzioni dell'app
  • Controllo dei dati
  • Registrazione utente app
  • Registrazione delle eccezioni
  • Archiviazione di dati di ricerca statici nelle coppie chiave-valore
  • Utilizza la funzione di scadenza di vari tipi di strutture di dati

REDIS ha la capacità di eseguire letture e scritture molto più veloci, anche per i dataset ingombranti.

L'applicazione Java può parlare al server REDIS con l'aiuto delle API disponibili che si trovano nel link

    
risposta data 05.04.2017 - 14:13
fonte

Leggi altre domande sui tag