web-dev-qa-db-ja.com

.NETプロジェクトのElastic BeanstalkとCloudFormationの違いは何ですか?

.NET MVCアプリケーションを開発し、AWSをいじり始め、Visual Studio Toolkitを介してデプロイし始めました。ツールキットのElastic Beanstalkオプションを使用して、アプリケーションを正常にデプロイしました。

ツールキットを使用して.NETアプリをAWSにデプロイするためのチュートリアルを進めていたときに、 Elastic BeanstalkとCloudFormationの両方 を使用してデプロイするためのチュートリアルがあることに気付きました。これら2つの違いは何ですか?

私の知る限り、両者は本質的に同じことを行っているようです-AWSクラウドへのアプリケーションのデプロイを容易にします(EC2インスタンス、ロードバランサー、自動スケーリングなど)。私はそれらの両方を読んでみましたが、私には同じことのように聞こえる一群の流行語以外のものを得ることができないようです。 AWSのウェブサイトで [〜#〜] faq [〜#〜] を見つけて、この正確な質問に答えているはずですが、実際にはわかりません。

どちらを使用する必要がありますか?両方?

95
kspearrin

実際にはかなり違います。 Elastic Beanstalkは、開発者の生活を楽にすることを目的としています。 CloudFormationは、システムエンジニアの生活を楽にすることを目的としています。

Elastic Beanstalkは、基礎となるEC2インスタンス、Elastic Load Balancer、自動スケーリンググループなどを抽象化する、AWSのIaaSサービスの上のPaaSのようなレイヤーです。これにより、アプリケーションをAWSに迅速にデプロイするためのシステムスタッフ。 Heroku、EngineYard、Google App Engineなど、他のPaaS製品と非常によく似ています。ElasticBeanstalkでは、基礎となる魔法がどのように機能するかを理解する必要はありません。

一方、CloudFormationは自動的には何もしません。これは、展開に必要なすべてのリソースを巨大なJSONファイルに定義する方法です。そのため、CloudFormationテンプレートは実際に2つのElasticBeanstalk環境(運用環境とステージング)、ElasticCacheクラスター、DyanmoDBテーブル、Route53の適切なDNSを作成します。次に、このテンプレートをAWSにアップロードし、立ち去り、45分後にすべての準備が整い、待機しています。プレーンテキストのJSONファイルであるため、ソース管理に貼り付けて、アプリケーションの展開をバージョン管理する優れた方法を提供できます。また、別の地域に迅速に展開できる、繰り返し可能な「既知の良好な」構成を確保します。

172
jamieb

標準の.NET Webアプリケーションの迅速なデプロイを開始するには、Elastic Beanstalkが適切なサービスです。

App Services Comparison Graphic

AWS CloudFormation : "テンプレート駆動プロビジョニング"

AWS CloudFormationにより、開発者とシステム管理者は、関連するAWSリソースのコレクションを簡単に作成および管理し、それらを規則正しく予測可能な方法でプロビジョニングおよび更新できます。

CloudFormation(CFn)は、既存のAWS APIを軽量で低レベルに抽象化したものです。静的JSON/YAML template ドキュメントを使用して、一連の ResourcesEC2インスタンス または S3バケットなど) )AWS APIのCRUD操作に対応します。

CloudFormationスタックを作成すると、CloudFormationは対応するAPIを呼び出して関連リソースを作成し、スタックを削除すると、CloudFormationは対応するAPIを呼び出してそれらを削除します。 ほとんど(すべてではない)AWS API がサポートされています。

AWS Elastic Beanstalk :「Webアプリを簡単に」

AWS Elastic Beanstalkは、 Java。NET[〜#〜] phpで開発されたウェブアプリケーションとサービスをデプロイおよびスケーリングするための使いやすいサービスです。 [〜#〜]Node.jsPythonRubyGo 、- Docker Apache、Nginx、Passenger、IISなどの使い慣れたサーバー。

コードをアップロードするだけで、Elastic Beanstalkはキャパシティプロビジョニング、ロードバランシング、自動スケーリングからアプリケーションのヘルスモニタリングまで、デプロイメントを自動的に処理します。

Elastic Beanstalk(EB)は、 Herok と範囲が似ている、Webアプリケーションをホストするための高レベルの管理された「サービスとしてのプラットフォーム」(PaaS)です。 EBは、低レベルのAWSリソースを直接処理するのではなく、 アプリケーション環境を作成 を使用して ウェブインターフェース を選択し、どの プラットフォーム アプリケーションが ソースバンドル を使用、作成、アップロードし、EBが残りを処理します。

EBを使用すると、 アプリケーション環境の監視 および アプリケーションの新しいバージョンのデプロイ のあらゆる種類の組み込み機能を利用できます。

内部では、EBはCloudFormationを使用して、アプリケーションのさまざまなAWSリソースを作成および管理します。 CloudFormation Resources をアプリケーションにデプロイされた EB構成ファイル に追加することにより、デフォルトのEB環境をカスタマイズおよび拡張できます。

結論

アプリケーションがElastic Beanstalkのサポート対象プラットフォームのいずれかを使用する標準のWeb層アプリケーションであり、アプリケーションの管理が容易で拡張性の高いホスティングが必要な場合、Elastic Beanstalkを使用します

もし、あんたが:

  • アプリケーションのすべてのAWSリソースを直接管理したい。
  • インスタンスのプロビジョニングまたは展開プロセスを管理または大幅にカスタマイズしたい。
  • Elastic Beanstalkでサポートされていないアプリケーションプラットフォームを使用する必要があります。または
  • 高レベルのElastic Beanstalk機能を必要としない/必要としない

次にCloudFormationを直接使用し、Elastic Beanstalkの追加された設定レイヤーを避けます。

32
wjordan

他にも注目に値する違いがあります。 Elastic beanstalkは、単一のアプリのコンテナとして設計されています。私はいくつかのウェブサイトとサービスのセットを持っていますが、beanstalkで複数のウェブサイトをデプロイすることは非常に困難であることがわかりました。 AWSクラウド形成のブートストラップと実行中のサイトの更新に関する非常に役立つ記事があります here これはAWSページよりもはるかに明確です。 VSからS3に保存されているクラウド形成テンプレートに直接展開し、beanstalkのように自動更新できるようにするかどうか、まだ解決しようとしています...

10
Matt

Elastic Beanstalkは、容量のプロビジョニング、ロードバランシング、自動スケーリングから、アップロードするコードに基づくアプリケーションのヘルスモニタリングまで、デプロイメントを自動的に処理します。CloudFormationは、JSONスクリプトを介してクラウド環境全体をデプロイするように設計された自動プロビジョニングエンジンです。

1
Mahesh Bablu

ElasticFormstalkは、容量のプロビジョニング、負荷分散、自動スケーリングから、アップロードしたコードに基づいたアプリケーションのヘルスモニタリングまで、コードのデプロイを自動的に処理します。一方、cloudFormationは、JSONを介してクラウド環境全体をデプロイするように設計された自動エンジンです。脚本。

0
Prateek Gupta