web-dev-qa-db-ja.com

最小限のダウンタイムでEC2に本番環境をデプロイ

EC2を使用して大規模なインスタンスにデプロイされた単純なWebアプリケーションがあります。このサーバーに最新のコードをデプロイしたいのですが、ダウンタイムを最小限に抑え、エンドユーザーにとって可能な限りスムーズな方法でこれを実行したいと思います。これが私の計画です:

  1. 別の大きなインスタンスを起動します
  2. そのインスタンスにすべてのソフトウェアレイヤーをインストールします
  3. EBSドライブを復元してインスタンスに接続します
  4. 最新の本番用コードを新しいインスタンスにデプロイします
  5. すべてのテストを実行します(アプリケーションの手動テストを含む)
  6. (テストに合格した場合)ライブサイトに「メンテナンス中のサイト」の通知を配置します。
  7. ライブサイトでEBSインスタンスをバックアップします
  8. 新しいサーバーからEBSインスタンスを切り離し、最新のバックアップに置き換えます
  9. Ec2-associate-addressを使用して、IPアドレスを新しいインスタンスに移動します
  10. 座って、トラフィックが新しいインスタンスを流れ始めるのを待ちます
  11. 古いインスタンスを終了します

これは良い戦略のように見えますか?このトピックをカバーする可能性のあるチュートリアルや本はありますか? GeorgeReeseによるCloudApplication Architecturesをすでに読んだことがあります。これは優れた本ですが、デプロイメントについては説明していません。さらに、RightScaleやenStratusのように、複数のインスタンスを使い始めたときに使用するツールがあることを知っています。

7
jensendarren

これは全体的に良いアプローチのように見えます。必要なすべてのソフトウェアレイヤーを含むカスタムAMIを作成することで、ステップ2を省略して、起動時間を短縮できます。そうは言っても、すべての最新のセキュリティ更新プログラムを確実に入手できるように、起動時にすべてのパッケージを更新します。

EBS-backed instance -を使用することも検討してください。そうすれば、ブートボリューム、ソフトウェアスタック、およびアプリケーションをすべてEBSに配置でき、上記の手順のいくつかが省略されます。 。

5
gareth_bowles