ウェブアプリのマルチステージ展開のベストプラクティスと一般的な理論は何ですか?多段階展開アドバイス?
私はGitの、カピストラーノ、および旅客を使用してアプリ、と私は、プロセスのナットとボルトを議論ポスト見つけたレールを展開する際に特に興味:
各段階(テスト、ステージング、制作)に関して考慮すべきことはありますか?ステージを別の物理サーバーに展開する必要がありますか?マルチステージ展開に関するヒントやアドバイスはありますか?私が目を向けなければならないものは何ですか?
最高、
ヤコブ
ウェブアプリのマルチステージ展開のベストプラクティスと一般的な理論は何ですか?多段階展開アドバイス?
私はGitの、カピストラーノ、および旅客を使用してアプリ、と私は、プロセスのナットとボルトを議論ポスト見つけたレールを展開する際に特に興味:
各段階(テスト、ステージング、制作)に関して考慮すべきことはありますか?ステージを別の物理サーバーに展開する必要がありますか?マルチステージ展開に関するヒントやアドバイスはありますか?私が目を向けなければならないものは何ですか?
最高、
ヤコブ
2つの異なるサーバ環境持っている方が良いです:ステージングと生産を。私はいつもテスト環境を無視します。テスト環境はプロダクションと同じように動作しますが、完了したらデータベースをロールバックします。同じサーバーで両方を実行すると、運用環境のパフォーマンスと安定性に悪影響を与える可能性があります。ステージング環境でテストするために宝石をアップグレードすると、生産に悪影響を与え、ダウンタイムが発生する可能性があります。
同じ宝石のバージョンが両方のサーバーにあることを非常に注意する必要があります。アプリのバージョンがステージングで動作していても、この種の不一致のために実際には動作していない場合は、スペルが問題になることがあります。
何か問題が生じた場合のために、最後の展開をロールバックする準備ができているコンソールウィンドウが常に開いています。実際にはそれ以上の処理はありません。
お金を節約し、できるだけ安いステージングサーバーを購入してください。あなたはそれを使用する唯一の人ですよね?彼らは同じプロバイダから来ていることを確認してください。
テスト環境は、サーバーを実行する環境ではありません。ユニット、機能テスト、統合テストでの使用を厳密に意図しています。新しいコードをチェックインする前にテストを実行する必要がある場合、ほとんどの人が同じ開発ボックスでこれを「実行」します。 –
私はいつもちょうど各デプロイターゲットのキャップタスクを作成し、コマンドラインでそれらを使用しました:
# deploy.rb
task :stage do
server 10.0.0.1 ...
end
> cap stage deploy
あなたはまた、そのような中でクリーンアップを行い展開として、各対象タスク内のタスクをカスタマイズ定義することができますステージングしますが、実稼働環境にはありません。
これらのデプロイメント対象のタスクは非常に大きくなることはめったにないので、マルチステージのキャップ拡張機能をインストールするようなことは実際には見たことがありませんでしたが、他の状況が異なる可能性があります。
私は、プロダクションがあなたの他の環境とは別のものでなければならないと思っています。そうでないと、ステージングなどでプロセスを誤ると生産パフォーマンスに影響を及ぼす危険があります。
私は、ステージングの利便性のために、データベースを爆破し、最新の生産ダンプから再ロードするなど、キャップタスクを定義することがあります。これらのタスクは、設定変数などを使用してデプロイメントターゲットをチェックし、深夜の入力ミスに対して保険として運用することを拒否する必要があります。
多くのカスタム動作をdeploy.rbに組み込むことが魅力的ですが、これは後退し、環境やキャップAPIの変更に多くのメンテナンスが必要になることがわかりました。
大きな環境で見たもう1つの習慣は、カピストラのコントロールポイントとして機能するように設定された安定したブランチを追跡するチェックアウトのシェルアカウントを持つことです。あなたはローカルではなくsshでコマンドを実行します。これにより、ローカルチェックアウトのdeploy.rbに、本番環境にデプロイする際に使用する準備ができていない変更がある問題を回避できます。これはgitとsvnの問題ではありませんが、引き続きcapコマンドを実行している時点でのローカルのdeploy.rbが何であるかを考えなければなりません。
最近、Herokuは本当にこのようなことを楽にしています.EYなどは、それほど遠くはありません。
私たちは、カピストラノ多段階展開を1年以上にわたって非常にうまく使用してきました。システムは、Rails環境ファイルとほぼ同じ方法で各ステージのデプロイメントファイルを素早く分離します。セットアップと管理は非常に簡単でした。
申し訳ありませんが、私はそれらのブログ投稿への2つのハイパーリンクを削除して質問を投稿しなければなりませんでした。より多くを見つけたいと思っている人は、Googleがそれらのアイテムを投稿に直接向けることができます。 – trisignia
なぜハイパーリンクを削除する必要がありましたか? –
私はここの新しいユーザーです。StackOverflowはまだ私の質問にハイパーリンクを投稿させません。 – trisignia