Перенос приложения Grails в Scala Play / Spray


12

У нас есть веб-приложение Grails среднего размера, использующее GORM / Hibernate поверх PostgreSQL и GSP, обслуживающих HTML, а также несколько REST API. Мы стандартизируем Scala и хотели бы перенести это приложение в Play или Spray, используя Slick для доступа к существующей базе данных.

В настоящее время Nimble используется для аутентификации / авторизации и пользователя / роли / и т.д. управление.

Какие подходы мы можем использовать, чтобы выполнить миграцию шаг за шагом, избегая миграции большого взрыва?

Они оба являются языками JVM, есть ли способ избежать их использования в качестве отдельных веб-приложений, работающих на отдельных портах на расстоянии вытянутой руки?


Забавно с именами проектов, но разумным подходом может быть использование прокси приложения для предоставления единого пространства имен. Другой вариант - запускать их как отдельные файлы WAR в веб-контейнере, таком как Tomcat. Я не занимался Grails или Scala, но если веб-API являются оберткой вокруг Java-сервлетов, то вы великолепны. Если нет, вам придется использовать прокси приложения, чтобы скрыть отдельные порты и т. Д.
Берин Лорич

Ответы:


1

Лично для меня перезапись звучит более эффективно, но если вам нужно сделать это поэтапно, я бы предложил вам использовать следующий подход:

  • Переместите существующий код базы данных, чтобы использовать Slick (вам, вероятно, понадобятся обертки вокруг него, чтобы защитить существующий код от слишком большого количества изменений).
  • Затем интегрируйте Play в свою среду выполнения и используйте Silhouette для аутентификации и авторизации с Play Actions.
  • После этого вы сможете перемещать отдельные GSP в Play / Twirl по одному.

К сожалению, я не знаю, как заставить их слушать один и тот же порт, поэтому вам пришлось бы перенаправить его с Grails на порт Play, чтобы сделать его бесшовным.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.