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
- Segnala MS utilizzando Java / Javascript / JSP può essere facilmente sostituito facilmente da qualsiasi tecnologia Front End senza influire sulla MS motore
- Report MS è liberamente associato a Engine MS e può utilizzare altra origine API REST
- Spring Boot riduce molto la configurazione e il cablaggio dei bean, oltre a includere tomcat e DB incorporati
- Uso di Maven per la gestione di build e librerie
Contro
- Latenza di rete tra Report e Engine MS poiché deve attraversare la rete per trasferire i dati
- Complessità extra del codice scritta in Java per Backend Services (Engine MS) e JSP / Javascript o Angular JS per frontend
- Strati di codifica hard di livello DAO come stringhe di query SQL difficili da eseguire il debug