AWS を使用する場合、新しく作成したインスタンスにアプリケーションをデプロイするには、AWS CodeDeploy を使用するのが良い方法のようです。これは次のように機能します。
- アプリケーションの Auto Scaling グループを設定する
- CodeDeploy エージェントを S3 からプルし、インストールして起動する自動スケーリング グループ用のユーザー データ bash スクリプトを作成します。
- 自動スケーリング グループにデプロイする CodeDeploy デプロイ グループを設定する
これで、アプリケーション バンドル (jar または debian パッケージなど) がデプロイ グループにデプロイされると、自動スケーリング グループで起動された新しいインスタンスに自動的にデプロイされます。
私の質問は、この展開戦略を Travis CI のような CI ツールにどのように適合させることができるかということです。
具体的には:
- Travis CI のような CI ツールでビルドされたパッケージを CodeDeploy で取得するにはどうすればよいですか? ビルドジョブはパッケージを S3 にアップロードする必要がありますか?
- CodeDeploy を使用して、アプリケーションを段階的に (一度に 1 つのインスタンスなど) デプロイするにはどうすればよいですか?
- このデプロイ戦略では、実行中の各インスタンスをシャットダウンして置き換える必要がありますか? それとも、アプリケーションの新しいバージョンを既存のインスタンスにデプロイしますか? 前者の場合、展開中にマシンの IP アドレスが変更されるため、他のサービスが新しく展開されたアプリケーションをどのように検出できるでしょうか (つまり、IP アドレスがハードコーディングされていない場合)。