Come racchiudere più applicazioni Spring Boot in una singola

7

Lavoro in un team, che sta sviluppando nuove versioni di applicazioni Web per le nostre vecchie soluzioni, ma ci sono anche alcune idee innovative. Stiamo utilizzando Angular nel front-end, Java nel back-end, MongoDB per il database ed eseguendolo tramite Spring Boot.

Allo stadio attuale, abbiamo terminato due applicazioni e altre in fase di sviluppo. Ora li eseguiamo separati, sono diverse applicazioni che sono in esecuzione in diverse porte con scopi molto specifici, con l'unica eccezione del design, poiché abbiamo cercato di mantenere un qualche tipo di pattern di usabilità.

Tuttavia, stiamo guardando sempre più al futuro e realizzando che oltre all'obiettivo di ogni applicazione è molto specifica, in realtà compongono un prodotto più grande che potrebbe avvolgere tutto all'interno.

Ciò che pianifichiamo ora, potrebbe essere molto semplice da descrivere, ma voglio saperne di più al riguardo per assicurarci di essere nella giusta direzione per integrare le applicazioni. In sostanza, puoi considerare un menu fisso in alto che visualizzerà tutte le applicazioni disponibili in base alle autorizzazioni utente registrate. Dopodiché, una volta selezionato, il flusso dovrebbe essere uguale a quello all'interno dell'applicazione selezionata quando è in esecuzione separatamente (ma il menu è ancora attivo).

Qualcuno ha qualche raccomandazione o qualcosa che potrebbe aiutarci a costruire questo in modo appropriato? (poiché sarà più facile integrare le cose ora che in futuro)

    
posta Patrick Bard 23.08.2016 - 21:50
fonte

3 risposte

2

Sono abbastanza sicuro che non ci possono essere motivi per farlo, ma a seconda delle esigenze aziendali, la soluzione potrebbe essere molto diversa. Ecco le due opzioni che puoi prendere in considerazione:

  1. Containerizzazione delle tue app . Inserisci ogni app in un contenitore finestra mobile, quindi utilizza docker-compose per eseguire entrambi sullo stesso server contemporaneamente. È possibile utilizzare gateway API o proxy per esporre entrambi i servizi tramite un singolo punto di ingresso. Il vantaggio principale è che sarete in grado di ridimensionarlo su più server, se necessario, e non è necessario toccare il codice dell'applicazione, preservando la modularità.

  2. Architettura plug-in . Con alcune modifiche alla configurazione di Spring, puoi trattare le app originali come plugin, implementando alcune API. Inserisci le configurazioni del plugin in una cartella comune del classpath, ad es. /META-INF/plugins/pluginN.xml , quindi sarà rilevabile dall'app host. Scrivi l'app Spring Boot host, che carica i plugin tramite Spring DI cercando i configs nel classpath. I plugin contribuiranno con i mapping delle richieste all'host di configurazione WebMVC, esponendo la loro parte di funzionalità. Pro: a) conservi ancora la modularità. b) dimensioni dell'immagine ridotte e utilizzo della memoria / CPU sul server. Con: richiede un'attenta riflessione sulla configurazione di Spring e sull'architettura dei plugin. Non scalabile in senso "architettura microservizio" (può ancora essere distribuito su più macchine come un'unica app che fa tutto).

risposta data 23.10.2016 - 18:34
fonte
0

Bene, no. Non compongono una "applicazione più grande" a meno che non le desideri.

Sei diretto verso la strada di Microsoft Office. Stai pensando di fare un monolite. Questa è una decisione aziendale. Uno per cui sarai giudicato. Non ha nulla a che fare con un design migliore.

Ciò che ha a che fare con un design migliore è l'integrazione che hai menzionato. È molto difficile provare un'esperienza utente uniforme. Averli lavorare insieme è positivo. Questo è esattamente ciò che sono gli strumenti della riga di comando UNIX. Lavorano insieme. Hanno un modo uniforme per interagire con loro. Non sono un monolite. Sono un sacco di piccoli strumenti che funzionano bene insieme. Sono integrati.

Se vuoi fare un monolite bene. Ma non pretendere che sia l'unico modo per far funzionare le applicazioni insieme. Questa è una scelta indipendente.

Se vuoi semplicemente un modo per segnalare quanto siano ben integrati nel tuo marketing, dai alle icone un tema coerente.

    
risposta data 23.08.2016 - 22:44
fonte
0

L'involucro di più applicazioni Spring Boot non sembra essere la soluzione. Se si desidera un singolo contenitore, creare le applicazioni come file war e distribuirle in un unico contenitore.

Potresti rimanere bloccato con il problema di richiamare il contenitore per accedere a diversi livelli. Si consiglia di impacchettare determinati moduli come librerie e usarli direttamente. Avrai già sviluppato un modulo disaccoppiato, tienilo in quel modo usando la sua interfaccia.

    
risposta data 24.08.2016 - 02:00
fonte

Leggi altre domande sui tag