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


121

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

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

私が言うことができることから、両方が本質的に同じことをしているようです-AWSクラウドへのアプリケーションのデプロイをより簡単にします(EC2インスタンスのセットアップ、ロードバランサー、自動スケーリングなど)。両方を読んでみましたが、同じように聞こえる一連の流行語以外に何も得られないようです。この正確な質問に答えるはずのFAQをAWSウェブサイトで見つけましたが、本当にわかりません。

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


この質問はStackoverflowの少し外れたトピックですが、おそらくServerFaultにもうまく適合しません...私はこのような質問のために新しいサイトを提案しました、同意したらフォローしてください!area51.stackexchange.com/proposals/82757/...
ダンCiborowski - MSFT

回答:


212

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

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

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


ありがとう!私は今のところEBSを使い続けるようです。
kspearrin 2013年

37
@xxkylexx FYI:「EBS」は「Elastic Block Store」という名前のAWSサービスを指します。「EBS」の代わりに「Elastic Beanstalk」と言うつもりだと思います。
ekillaby 2013年

2
クラウド
ネットワーキング

51

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

App Services比較グラフィック

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

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

CloudFormation(CFn)は、既存のAWS APIに対する軽量で低レベルの抽象化です。静的なJSON / YAML テンプレートドキュメントを使用して、AWS APIのCRUDオペレーションに対応する一連のリソースEC2インスタンスS3バケットなど)を宣言します。

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

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

AWS Elastic Beanstalkは、Java.NETPHPNode.jsPythonRubyGoDockerを使用して、Apache、Nginx、Passengerなどの使い慣れたサーバー上で開発されたWebアプリケーションおよびサービスをデプロイおよびスケーリングするための使いやすいサービスです、およびIIS。

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

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

EBを使用して、ための機能で、内蔵のすべての種類を取得するアプリケーション環境を監視し、アプリケーションの新しいバージョンを展開します

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

結論

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

もし、あんたが:

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

次にCloudFormationを直接使用し、Elastic Beanstalkの追加の構成レイヤーを避けます。


14

クラウド形成は、AWSサービスをデプロイできるサービスです。必要なサービスを記述したテンプレートファイルを作成します。そのテンプレートをデプロイすると、Cloud Formationが「パッケージ」としてリソースを作成します。テンプレートで定義したすべてのリソースは、一緒に開始および終了されます。クラウド形成で作成できるリソースのタイプの例は、S3、EC2インスタンス、AutoScaling、DynamoDbなどです。EC2の場合、クラウド形成には、「cfn-init」スクリプトを使用する機能もあります。テンプレートと組み合わせて使用​​して、インスタンスをブートストラップできます。

Elastic Beanstalkはクラウド形成テンプレートとスクリプトを使用して、次のことを行います。1.ロードバランサーとAuto Scalingグループを作成します。2。コードをS3にコピーします。3。Ec2インスタンスをブートストラップしてS3からコードをダウンロードし、デプロイします。

クラウド形成はEBほど簡単に使用できませんが、EC2インスタンス以外のリソースを作成したり、cfn-initスクリプトなどを制御したりできるため、はるかに強力です。


10

注目に値する他の違いがあります。Elastic Beanstalkは、単一のアプリのコンテナーとして設計されています。私はいくつかのウェブサイトとサービスのセットを持っていますが、beanstalkを使用して複数のウェブサイトをデプロイするのは非常に困難であることがわかり、数回試行した後、AWSはこの状況でクラウド形成を使用することを勧められました。Theresのは、AWSクラウドの形成をブートストラップし、実行しているサイトの更新の本当に便利の記事ここでは、 AWSのページよりもはるかに明確なのthats。それでも、VSからS3に保存されているクラウド形成テンプレートに直接デプロイして、beanstalkのように自動更新できるかどうかを試しています...


3

これらのサービスは、互いに補完し合うように設計されています。AWS Elastic Beanstalkは、アプリケーションをクラウドに簡単にデプロイして実行するための環境を提供します。開発者ツールと統合されており、アプリケーションのライフサイクルを管理するためのワンストップエクスペリエンスを提供します。AWS CloudFormationは、幅広いAWSおよびサードパーティのリソースの便利なプロビジョニングメカニズムです。既存のエンタープライズアプリケーション、レガシーアプリケーション、さまざまなAWSリソースを使用して構築されたアプリケーション、コンテナベースのソリューション(AWS Elastic Beanstalkを使用して構築されたものを含む)など、さまざまなタイプのアプリケーションのインフラストラクチャニーズをサポートします。

AWS CloudFormationは、AWSリソースタイプの1つとしてElastic Beanstalkアプリケーション環境をサポートしています。これにより、たとえば、AWS Elastic BeanstalkでホストされるアプリケーションをRDSデータベースとともに作成および管理して、アプリケーションデータを保存できます。RDSインスタンスに加えて、サポートされている他のAWSリソースもグループに追加できます。


1

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.