2016-06-13 5 views
0

AWS(EC2)でNodeJSベースのアプリケーションを実行していますが、これまでのところすべてが非常にスムーズに行われています。しかし先週、私たちのクライアントは、デプロイメントを行うときにサイトが正常に機能しなくなったことに気付きました。これを少し調べてみると、これは私のノードアプリケーション(すべての設定ファイルの読み込み、サービスへの接続、キャッシュのウォーミングアップ)の起動時間のようです。AWS(NodeJS)上での優雅な展開

  • 新しいは新しいnpm startコマンドを実行する前に、同じ仮想マシン上で実行したり、マシンが取り壊される「展開」ん:私はこれについての質問のカップルを持っていますか?
  • AWSが新しいコードを引き継ぐ前にシグナルを待機させる方法はありますか?
+0

AWS CodeDeployを使用していますか? –

+0

いいえ、私たちはジェンキンスにビルドしています。 – Steven

+0

よろしくお願いいたします。そして、Jenkinsからサーバーへの展開メカニズムはまさに何ですか? –

答えて

1

AWSでは、より高度な展開を処理するために、ノードAPPをさまざまな方法で配置できます。この設定で

Using EC2, Load balancing

ます(更新はジェンキンスを使用して起こる直前に少なくとも規定2個の場合)ために、ノードのAppでEC2の少なくとも2つのインスタンスを設定し、各インスタンスに更新プログラムを展開することができます。ロードバランサの背後にあるインスタンスをセットアップして、システムが使用可能な状態を保つようにして、進行中の更新のために1つのインスタンスが利用できないときに、ロードバランサによって要求が他のインスタンスに送信されるようにする必要があります。

Using AWS Elastic Beanstalk

これは、既存のノードのアプリケーションをデプロイしている場合の対処するための推奨方法です。 Beanstalkプラットフォームはローリングアップデートを実行できます。 Beanstalkで新しい環境を作成し、Blue Green DeploymentsでDNSレコードをスワップすることもできます。

Using AWS ECS

あなたのノードのアプリケーションをコンテナ化することができます場合は、このために行くとあなたがローリングを行うことができる場所で稼働する複数のインスタンスを持つサービスを作成することができます。ここでの利点は、EC2インスタンスの起動(数分で起こる)と比較して、新しいコンテナインスタンスが実際に高速に開始することです(数秒で起こります)。

Using AWS Lambda, API Gateway, Cloudfront & S3

これは、プラットフォームは、システムの品質特性のほとんどを処理するラムダを、使用してセットアップノードAppsに近代的な方法です。たとえば、ダウンタイム、可用性、可用性のない展開など&など。これらのアーキテクチャは、一般にサーバーレスアーキテクチャと呼ばれます。

関連する問題