Was ist der Unterschied zwischen Elastic Beanstalk und CloudFormation für ein .NET-Projekt?

121

Ich habe eine .NET MVC-Anwendung entwickelt und angefangen, mit AWS herumzuspielen und sie über das Visual Studio Toolkit bereitzustellen. Ich habe die Anwendung erfolgreich mit der Option Elastic Beanstalk im Toolkit bereitgestellt.

Als ich die Tutorials zum Bereitstellen von .NET-Apps für AWS mit dem Toolkit durchging , stellte ich fest, dass es Tutorials zum Bereitstellen mit Elastic Beanstalk und CloudFormation gibt . Was ist der Unterschied zwischen diesen beiden?

Soweit ich das beurteilen kann, scheinen beide im Wesentlichen dasselbe zu tun - was die Bereitstellung Ihrer Anwendung in der AWS-Cloud erleichtert (Einrichten von EC2-Instanzen, Load Balancer, automatische Skalierung usw.). Ich habe versucht, sie beide nachzulesen, aber ich kann anscheinend nichts anderes als ein paar Modewörter verstehen, die für mich gleich klingen. Ich habe sogar eine FAQ auf der AWS-Website gefunden, die genau diese Frage beantworten soll, aber ich verstehe sie nicht wirklich.

Soll ich den einen oder anderen benutzen? Beide?

kspearrin
quelle
Diese Frage ist für Stackoverflow ein wenig unangebracht, passt aber wahrscheinlich auch nicht gut zu ServerFault ... Ich habe eine neue Site für Fragen wie diese vorgeschlagen. Folgen Sie, wenn Sie damit einverstanden sind! area51.stackexchange.com/proposals/82757/…
Dan Ciborowski - MSFT

Antworten:

212

Sie sind eigentlich ziemlich unterschiedlich. Elastic Beanstalk soll Entwicklern das Leben erleichtern. CloudFormation soll Systemingenieuren das Leben erleichtern.

Elastic Beanstalk ist eine PaaS-ähnliche Schicht auf den IaaS-Diensten von AWS, die die zugrunde liegenden EC2-Instanzen, Elastic Load Balancers, Gruppen mit automatischer Skalierung usw. abstrahiert. Dies erleichtert Entwicklern, die nicht mit allen arbeiten möchten, die Arbeit erheblich die Systeme, um ihre Anwendung schnell auf AWS bereitzustellen. Es ist anderen PaaS-Produkten wie Heroku, EngineYard, Google App Engine usw. sehr ähnlich. Mit Elastic Beanstalk müssen Sie nicht verstehen, wie die zugrunde liegende Magie funktioniert.

CloudFormation hingegen macht nicht automatisch etwas. Es ist einfach eine Möglichkeit, alle für die Bereitstellung erforderlichen Ressourcen in einer riesigen JSON-Datei zu definieren. Eine CloudFormation-Vorlage kann also tatsächlich zwei ElasticBeanstalk-Umgebungen (Produktion und Staging), einige ElasticCache-Cluster, eine DyanmoDB-Tabelle und dann das richtige DNS in Route53 erstellen. Ich lade diese Vorlage dann auf AWS hoch, gehe weg und 45 Minuten später ist alles fertig und wartet. Da es sich nur um eine Klartext-JSON-Datei handelt, kann ich sie in meine Quellcodeverwaltung einfügen, um meine Anwendungsbereitstellungen zu versionieren. Außerdem wird sichergestellt, dass ich eine wiederholbare, "bekanntermaßen gute" Konfiguration habe, die ich schnell in einer anderen Region bereitstellen kann.

Jamieb
quelle
Vielen Dank! Scheint, als würde ich vorerst bei EBS bleiben.
Kspearrin
37
@xxkylexx FYI: "EBS" bezieht sich auf den AWS-Dienst mit dem Namen "Elastic Block Store". Ich denke, Sie wollen "Elastic Beanstalk" anstelle von "EBS" sagen.
Ekillaby
2
Ich denke, sie haben eine Cloud Formation-Vorlage verwendet und automatisiert, um die Elastic Beanstalk-Umgebung für die von Ihnen erstellte Anwendung zu erstellen - .Net oder was auch immer ... FWIW
Codeputer
51

Für den schnellen Einstieg in die Bereitstellung einer Standard-.NET-Webanwendung ist Elastic Beanstalk der richtige Dienst für Sie.

App Services-Vergleichsgrafik

AWS CloudFormation : "Template-Driven Provisioning"

Mit AWS CloudFormation können Entwickler und Systemadministratoren auf einfache Weise eine Sammlung verwandter AWS-Ressourcen erstellen und verwalten sowie diese ordnungsgemäß und vorhersehbar bereitstellen und aktualisieren.

CloudFormation (CFn) ist eine einfache Abstraktion auf niedriger Ebene über vorhandene AWS-APIs. Mithilfe eines statischen JSON / YAML- Vorlagendokuments deklarieren Sie eine Reihe von Ressourcen (z. B. eine EC2-Instanz oder einen S3-Bucket ), die CRUD-Operationen auf den AWS-APIs entsprechen.

Wenn Sie einen CloudFormation-Stapel erstellen, ruft CloudFormation die entsprechenden APIs auf, um die zugehörigen Ressourcen zu erstellen. Wenn Sie einen Stapel löschen, ruft CloudFormation die entsprechenden APIs auf, um sie zu löschen. Die meisten (aber nicht alle) AWS-APIs werden unterstützt.

AWS Elastic Beanstalk : "Web Apps leicht gemacht"

AWS Elastic Beanstalk ist ein benutzerfreundlicher Dienst zum Bereitstellen und Skalieren von Webanwendungen und -diensten, die mit Java , .NET , PHP , Node.js , Python , Ruby , Go und Docker auf bekannten Servern wie Apache, Nginx, Passenger entwickelt wurden und IIS.

Sie können einfach Ihren Code hochladen und Elastic Beanstalk übernimmt automatisch die Bereitstellung, von der Kapazitätsbereitstellung über den Lastausgleich, die automatische Skalierung bis hin zur Überwachung des Anwendungszustands.

Elastic Beanstalk (EB) ist eine übergeordnete, verwaltete "Platform as a Service" (PaaS) zum Hosten von Webanwendungen, ähnlich wie Heroku . Anstatt sich mit Low-Level - AWS - Ressourcen direkt, bietet EB eine vollständig verwaltete Plattform , wo Sie eine Anwendungsumgebung erstellen mit Hilfe eines Web - Interface , wählen , welche Plattform Ihre Anwendung erstellen und eine Upload Source Bundle , und EB übernimmt den Rest.

Mit EB erhalten Sie alle möglichen integrierten Funktionen zum Überwachen Ihrer Anwendungsumgebung und zum Bereitstellen neuer Versionen Ihrer Anwendung .

Unter der Haube verwendet EB CloudFormation, um die verschiedenen AWS-Ressourcen der Anwendung zu erstellen und zu verwalten. Sie können die Standard-EB-Umgebung anpassen und erweitern, indem Sie einer mit Ihrer Anwendung bereitgestellten EB-Konfigurationsdatei CloudFormation-Ressourcen hinzufügen .

Fazit

Wenn Ihre Anwendung eine Standardanwendung auf Webebene ist, die eine der von Elastic Beanstalk unterstützten Plattformen verwendet, und Sie ein einfach zu verwaltendes, hoch skalierbares Hosting für Ihre Anwendung wünschen, verwenden Sie Elastic Beanstalk .

Wenn du:

  • Sie möchten alle AWS-Ressourcen Ihrer Anwendung direkt verwalten.
  • Sie möchten Ihren Instanzbereitstellungs- oder Bereitstellungsprozess verwalten oder stark anpassen.
  • Sie müssen eine Anwendungsplattform verwenden, die von Elastic Beanstalk nicht unterstützt wird. oder
  • Ich möchte / brauche nur keine der übergeordneten Elastic Beanstalk-Funktionen

Verwenden Sie dann CloudFormation direkt und vermeiden Sie die hinzugefügte Konfigurationsebene von Elastic Beanstalk.

wjordan
quelle
14

Cloud Formation ist ein Dienst, mit dem Sie AWS-Dienste bereitstellen können. Sie erstellen eine Vorlagendatei, die beschreibt, welche Dienste Sie möchten. Wenn Sie diese Vorlage bereitstellen, erstellt Cloud Formation die Ressourcen für Sie als "Paket". Alle Ressourcen, die Sie in Ihrer Vorlage definiert haben, werden gemeinsam gestartet und beendet. Beispiele für Ressourcentypen, die mit Cloud Formation erstellt werden können, sind: S3, EC2-Instanzen, AutoScaling, DynamoDb usw. Für EC2 bietet Cloud Formation auch die Möglichkeit, "cfn-init" -Skripte zu verwenden. Dies kann in Verbindung mit der Vorlage verwendet werden, um Ihre Instanzen zu booten.

Elastic Beanstalk verwendet Cloud Formation-Vorlagen und -Skripte, um: 1. einen Load Balancer und eine Auto Scaling-Gruppe zu erstellen, 2. Ihren Code nach S3 zu kopieren, 3. eine Ec2-Instanz zu booten, um den Code aus S3 herunterzuladen und bereitzustellen.

Cloud Formation ist nicht so einfach zu verwenden wie EB, aber viel leistungsfähiger, da Sie andere Ressourcen als EC2-Instanzen erstellen, steuern können, wie das cfn-init-Skript usw.

Edwin
quelle
10

Es gibt noch andere bemerkenswerte Unterschiede. Elastische Bohnenstange ist als Container für eine einzelne App konzipiert. Ich habe eine Reihe von Websites und Diensten, fand es jedoch sehr schwierig, mehrere Websites mit Beanstalk bereitzustellen, und wurde nach mehreren Versuchen von AWS empfohlen, die Cloud-Bildung in dieser Situation zu verwenden, da sie die zusätzliche Flexibilität bietet. Es gibt einen wirklich hilfreichen Artikel zum Bootstrapping der AWS-Cloud-Bildung und zum Aktualisieren einer laufenden Site , der viel klarer ist als die AWS-Seiten. Ich versuche immer noch herauszufinden, ob wir VS direkt auf die in S3 gespeicherte Cloud-Formationsvorlage bereitstellen und sie wie Beanstalk automatisch aktualisieren können ...

Matt
quelle
3

Diese Dienste sollen sich ergänzen. AWS Elastic Beanstalk bietet eine Umgebung zum einfachen Bereitstellen und Ausführen von Anwendungen in der Cloud. Es ist in Entwicklertools integriert und bietet Ihnen die Möglichkeit, den Lebenszyklus Ihrer Anwendungen aus einer Hand zu verwalten. AWS CloudFormation ist ein praktischer Bereitstellungsmechanismus für eine breite Palette von AWS- und Drittanbieter-Ressourcen. Es unterstützt die Infrastrukturanforderungen vieler verschiedener Arten von Anwendungen, z. B. vorhandene Unternehmensanwendungen, Legacy-Anwendungen, Anwendungen, die mit einer Vielzahl von AWS-Ressourcen erstellt wurden, und containergestützte Lösungen (einschließlich solcher, die mit AWS Elastic Beanstalk erstellt wurden).

AWS CloudFormation unterstützt Elastic Beanstalk-Anwendungsumgebungen als einen der AWS-Ressourcentypen. Auf diese Weise können Sie beispielsweise eine von AWS Elastic Beanstalk gehostete Anwendung zusammen mit einer RDS-Datenbank zum Speichern der Anwendungsdaten erstellen und verwalten. Zusätzlich zu RDS-Instanzen kann der Gruppe auch jede andere unterstützte AWS-Ressource hinzugefügt werden.

Mohit Sharma
quelle
1

Elastic Beanstalk übernimmt automatisch die Bereitstellung, von der Kapazitätsbereitstellung über den Lastausgleich und die automatische Skalierung bis hin zur Überwachung des Anwendungszustands basierend auf dem Code, den Sie hochladen. CloudFormation ist eine automatisierte Bereitstellungs-Engine, mit der ganze Cloud-Umgebungen über ein JSON-Skript bereitgestellt werden können.

Mahesh Bablu
quelle