Push型デプロイ
Push型デプロイ
サービスが稼働しているサーバに対してコマンドを発行して新バージョンをデプロイする方式
開発者やCIがデプロイ処理をキックする方式
例
新バージョンのデプロイ対象を固めたファイルをscpでサーバに持ち込んでデプロイする
code:sh
# ビルドとデプロイ対象の生成
make app.tar.gz
# リモートサーバに対してデプロイを実行する
scp app.tar.gz 対象サーバ
ssh <対象サーバ> '/opt/infra/ops/script/deploy.sh'
この例ではSSHで踏み台サーバ経由でアプリケーションサーバにアクセスし、サーバ内からdeployスクリプトを叩く
https://gyazo.com/6862631ebbaf472e6201b4719abb57ff
メリット
単純な作りなので直感的で理解しやすい
デメリット
アプリケーションサーバがスケールアウトした時のデプロイが複雑になる
デプロイをする時に稼働しているサーバ台数を知る必要がある
上記の例では2台に対してデプロイを発行する必要がある
踏み台サーバ経由でアクセスしないといけないケースなどだと、デプロイのためだけに踏み台サーバを常駐させないといけない
基本踏み台サーバは、通常時は落としておいて、どうしてもアクセスが必要な時だけ立ち上げる物
常駐させるのはセキュリティリスクになる
踏み台サーバ経由アクセスの場合だとポートフォワーディングを利用した多段SSHが必要になったりとサーバのSSH設定が複雑になる
デプロイに必要な権限がサーバの外に出る
SSH経由でデプロイするなら、開発者にSSHアクセスの権限が必要
つまりAWSのアクセスキーが開発者のローカルPCか、CI環境に必要になる
CI環境からAWS CLIを叩いたり、terraformを適用したりするケースだとCI環境用のAWSアクセスキーが強い権限を持ちがち 漏洩リスクが高まるので良くない