Migrazione di un'applicazione Grails su Scala Play / Spray


12

Abbiamo un'applicazione Web Grails di medie dimensioni che utilizza GORM / Hibernate su PostgreSQL e GSP che servono HTML e anche alcune API REST. Stiamo standardizzando su Scala e vorremmo migrare questa applicazione su Play o Spray, con Slick per accedere al database esistente.

Nimble è attualmente utilizzato per autenticazione / autorizzazione e utente / ruolo / ecc. gestione.

Quali sono gli approcci che possiamo adottare per fare la migrazione passo dopo passo, evitando una migrazione big bang?

Sono entrambi linguaggi JVM, c'è un modo per evitare di trattarli come app Web separate in esecuzione su porte separate a distanza di sicurezza?


Divertimento con i nomi dei progetti, ma un approccio ragionevole potrebbe essere l'uso di un proxy dell'applicazione per fornire un singolo spazio dei nomi. Un'altra opzione è eseguirli come file WAR separati in un contenitore Web come Tomcat. Non ho fatto Grails o Scala, ma se le API Web sono un wrapper per Java Servlet, allora sei d'oro. In caso contrario, dovrai utilizzare il proxy dell'app per nascondere le porte separate, ecc.
Berin Loritsch,

Risposte:


1

Personalmente, una riscrittura mi sembra più efficiente, ma se hai bisogno di farlo in passaggi graduali ti suggerirei di seguire il seguente approccio:

  • Sposta il codice del database esistente per utilizzare Slick (probabilmente avrai bisogno di involucri attorno ad esso per proteggere il codice esistente da troppe modifiche).
  • Successivamente, integra Play nel tuo runtime e usa Silhouette per l'autenticazione e l'autorizzazione con Play Actions.
  • Dovresti quindi essere in grado di spostare singoli SPG su Play / Twirl uno alla volta.

Sfortunatamente, non conosco un modo per farli ascoltare sulla stessa porta, quindi dovresti reindirizzare da Grails alla porta Play per renderlo senza interruzioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.