Развертывание приложения с туннелем SSH

Я разрабатываю приложение для весенней загрузки, в котором моя внутренняя сторона подключается к базе данных с использованием туннелирования ssh (эта часть обязательна и не может быть изменена). У меня есть три способа развернуть приложение:

  • создание jarвложенными tomcat и ssh tunnel внутри приложения)
  • создание войны и развертывание на автономном tomcat (с ssh- туннелем вне приложения в качестве службы linux)
  • создание войны и развертывание на автономном tomcat (с ssh- туннелем внутри приложения), с этим параметром связана проблема, которую я не могу решить https://stackoverflow.com/questions/49471387/spring-boot-tomcat-ssh-connection-link-failure

Какой лучший выбор и почему?

1 ответ

Решение

Вам следует выбрать вариант 2:

создание войны и развертывание на автономном tomcat (с ssh-туннелем вне приложения в качестве службы linux)

Вы хотите, чтобы ваш SSH-туннель управлялся операционной системой, а не вашим приложением. Таким образом, он может быть делегирован SysAdmin (предпочтительно с использованием инструмента управления конфигурацией).

Разрабатываемое вами приложение не должно заботиться об управлении системными задачами, такими как сохранение туннеля до серверной части.

Это соответствует методу "12 Factor App" для обработки "вспомогательных услуг":

Код для приложения из двенадцати факторов не делает различий между локальными и сторонними сервисами. К приложению оба являются прикрепленными ресурсами, доступ к которым осуществляется через URL или другой локатор / учетные данные, хранящиеся в конфигурации. Развертывание приложения с двенадцатью факторами должно быть в состоянии заменить локальную базу данных MySQL на базу данных, управляемую третьей стороной (например, Amazon RDS), без каких-либо изменений в коде приложения.

Итак, если ваша кодовая база имеет что-либо, связанное с созданием SSH-туннеля или сохранением системного соединения, вы делаете это неправильно;)

Другие вопросы по тегам