Migrar una aplicación de Grails a Scala Play / Spray


12

Tenemos una aplicación web de Grails de tamaño moderado que utiliza GORM / Hibernate sobre PostgreSQL y GSP que sirven HTML, y también algunas API REST. Estamos estandarizando en Scala, y nos gustaría migrar esta aplicación a Play o Spray, con Slick para acceder a la base de datos existente.

Nimble se usa actualmente para autenticación / autorización y usuario / rol / etc. administración.

¿Cuáles son los enfoques que podemos tomar para hacer la migración paso a paso, evitando una migración de big bang?

Ambos son lenguajes JVM, ¿hay alguna manera de evitar tratarlos como aplicaciones web separadas que se ejecutan en puertos separados con el brazo extendido?


Diversión con los nombres de los proyectos, pero un enfoque razonable podría ser utilizar un proxy de aplicación para proporcionar un espacio de nombres único. Otra opción es ejecutarlos como archivos WAR separados en un contenedor web como Tomcat. No he hecho Grails o Scala, pero si las API web son un envoltorio alrededor de Java Servlets, entonces eres dorado. Si no, tendrá que usar el proxy de la aplicación para ocultar los puertos separados, etc.
Berin Loritsch

Respuestas:


1

Personalmente, una reescritura me suena más eficiente, pero si necesita hacerlo por partes, le sugiero que tome el siguiente enfoque:

  • Mueva su código de base de datos existente para usar Slick (probablemente necesitará envoltorios para proteger su código existente de demasiados cambios).
  • Luego, integre Play en su tiempo de ejecución y use Silhouette para autenticación y autorización con Play Actions.
  • Entonces deberías poder mover los GSP individuales para Jugar / Girar uno a la vez.

Desafortunadamente, no conozco una forma de hacer que escuchen el mismo puerto, por lo que tendrías que redirigir desde Grails al puerto Play para que sea perfecto.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.