Migration d'une application Grails vers Scala Play / Spray


12

Nous avons une application Web Grails de taille moyenne utilisant GORM / Hibernate sur PostgreSQL et des GSP servant du HTML, ainsi que quelques API REST. Nous normalisons sur Scala, et souhaitons migrer cette application vers Play ou Spray, avec Slick pour accéder à la base de données existante.

Nimble est actuellement utilisé pour l'authentification / autorisation et l'utilisateur / rôle / etc. la gestion.

Quelles sont les approches que nous pouvons adopter pour faire la migration étape par étape, en évitant une migration big bang?

Ce sont deux langues JVM, existe-t-il un moyen d'éviter de les traiter comme des applications Web distinctes fonctionnant sur des ports distincts à bout de bras?


Amusant avec les noms de projet, mais une approche raisonnable pourrait être d'utiliser un proxy d'application pour fournir un seul espace de noms. Une autre option consiste à les exécuter en tant que fichiers WAR distincts dans un conteneur Web comme Tomcat. Je n'ai pas fait Grails ou Scala, mais si les API Web enveloppent les servlets Java, vous êtes en or. Sinon, vous devrez utiliser le proxy d'application pour masquer les ports séparés, etc.
Berin Loritsch

Réponses:


1

Personnellement, une réécriture me semble plus efficace, mais si vous devez le faire par étapes, je vous suggère d'adopter l'approche suivante:

  • Déplacez votre code de base de données existant pour utiliser Slick (vous aurez probablement besoin de wrappers autour pour protéger votre code existant contre trop de changements).
  • Ensuite, intégrez Play dans votre runtime et utilisez Silhouette pour l'authentification et l'autorisation avec Play Actions.
  • Vous devriez alors pouvoir déplacer les GSP individuels vers Play / Twirl un à la fois.

Malheureusement, je ne connais pas de moyen de leur faire écouter le même port, vous devrez donc rediriger Grails vers le port Play afin de le rendre transparent.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.