web-dev-qa-db-ja.com

SSHトンネルを使用したアプリケーションのデプロイ

バックエンド側がsshトンネリングを使用してデータベースに接続しているSpring-Bootアプリケーションを開発しています(この部分は必須であり、変更できません)。アプリケーションをデプロイする方法は3つあります。

  • jarを作成します(embededTomcatおよびsshトンネルをアプリケーション内に)
  • warを作成し、スタンドアロンTomcatにデプロイします(sshトンネルを使用Linuxサービスとしてのoutsideアプリケーション)
  • warを作成し、スタンドアロンTomcatにデプロイします(sshトンネルを使用insideapplication)、このオプションでは接続された問題を解決できません https://stackoverflow.com/questions/49471387/spring-boot-Tomcat-ssh-connection-link-失敗

どちらが最良の選択であり、その理由は何ですか?

2
banabella

オプション2を選択する必要があります。

戦争を引き起こし、スタンドアロンのTomcatにデプロイします(Linuxサービスとしてアプリケーション外のsshトンネルを使用)

SSHトンネルは、アプリではなく、基盤となるOSによって管理される必要があります。このようにして、SysAdminから委任できます(できれば構成管理ツールを使用して)。

開発するアプリは、バックエンドへのトンネルの永続化などのシステムタスクの管理に関与する必要はありません。

これは、 "12 Factor App" 'バッキングサービス'を処理する方法と一致します。

12ファクターアプリのコードでは、ローカルサービスとサードパーティサービスを区別していません。アプリには、両方とも添付リソースであり、構成に保存されているURLまたはその他のロケーター/資格情報を介してアクセスされます。 12ファクターアプリのデプロイでは、アプリのコードを変更することなく、ローカルのMySQLデータベースをサードパーティ(Amazon RDSなど)が管理するデータベースと交換できる必要があります。

したがって、コードベースにSSHトンネルの作成またはシステム接続の永続化に関連するものがある場合、それは間違っています;)

0
BoomShadow