Alle Dinge, die Sie erwähnt haben, wie Lastausgleich, Überwachung und automatische Skalierung, sind definitiv Vorteile.
Sie müssen jedoch so denken: In einer echten Platform as a Service (PAAS) besteht das Ziel darin, die Anwendung von der Plattform zu trennen. Als Entwickler kümmern Sie sich nur um Ihre Anwendung. Die Plattform ist an Sie "vermietet". Die Plattform- "Instanzen" werden automatisch für Sie aktualisiert, verwaltet, skaliert, ausgeglichen usw. Sie laden einfach Ihre WAR-Datei hoch und es funktioniert einfach (zumindest theoretisch).
EC2 an sich ist kein PAAS. Es ist eher wie IAAS ( Infrastructure as a Service ). Sie müssen sich noch um die Serverinstanzen kümmern, Software darauf installieren, sie auf dem neuesten Stand halten usw.
Elastic Beanstalk ist ein PAAS-System. So sind App Engine und Azure unter vielen anderen.
In einem echten PAAS-System ist das DBMS eine separate Komponente von den Webanwendungsservern. Der Grund liegt auf der Hand: Das DBMS kann möglicherweise nicht auf den Instanzen installiert werden, die für den Anwendungsserver verwendet werden, da das DBMS beim Erstellen und Zerstören von Instanzen basierend auf Ihrem Datenverkehr verloren gehen würde! Es ist im Allgemeinen sowieso keine gute Idee, DBMS und Anwendungsserver auf demselben Computer / derselben Instanz zu haben.
In einem PAAS-System ist das DBMS ein separater Dienst. Für Amazon wäre es Amazon RDS . Genau wie bei Elastic Beanstalk, bei dem Sie sich nicht um den Anwendungsserver kümmern müssen und nur Ihre WAR-Datei hochladen, müssen Sie sich bei RDS nicht um das DBMS kümmern und nur Ihre Datenbank (en) bereitstellen.
Elastic Beanstalk und RDS arbeiten sehr gut zusammen, insbesondere wenn sie in derselben Verfügbarkeitszone bereitgestellt werden, in der die Latenz sehr gering wäre.
Schließlich kostet die Verwendung von Elastic Beanstalk nichts mehr als die bereitgestellten Ressourcen (EC2-Instanzen und Load Balancer). RDS ist jedoch nicht billig und definitiv teurer als die Verwendung einer einzelnen EC2-Instanz sowohl für den Anwendungsserver als auch für das DBMS.
Elastic Beanstalk bietet mehr als nur Lastausgleich, Überwachung und automatische Skalierung.
1) Verwaltet Anwendungsversionen durch Speichern und Verwalten verschiedener Versionen Ihrer Anwendung, sodass Sie problemlos zwischen verschiedenen Versionen Ihrer Anwendungen wechseln können.
2) Verfügt über das Konzept "Umgebungen" für jede Anwendung, sodass Sie in jeder Umgebung unterschiedliche Versionen Ihrer Anwendung bereitstellen können. Dies ist beispielsweise praktisch, wenn Sie separate QA- und DEV-Umgebungen einrichten und einen Build zuerst in DEV bereitstellen und dann dieselbe Version der Anwendung in QA bereitstellen möchten, wenn Ihr QA-Team für den nächsten Build bereit ist.
3) Externalisiert die wichtigen Containerkonfigurationseigenschaften (z. B. Tomcat-Speichereinstellungen) in die Elastic Beanstalk-Konsole und die API. Aus diesem Grund können Sie die Einstellungen einfach speichern und zwischen Umgebungen kopieren.
4) Zeigen Sie Anwendungsprotokolldateien über die Konsole an und rollen und archivieren Sie Protokolldateien automatisch in S3. (Zugegeben, diese Funktion ist derzeit etwas schwach.)
quelle
Ich hatte eine App sowohl in EC2 dediziert (Nginx & Gunicorn) als auch in Beanstalk Environment (CentOS & Apache2) bereitgestellt.
Meine Beobachtungen:
BeanStalk ist Paas. Das manuelle Erstellen einer EC2-Instanz (IAAS) ist wie alles von Grund auf neu, aber Sie haben eine solide Kontrolle.
BeanStalk wird standardmäßig mit CentOS und Apache (Httpd) geliefert. Sie können das Betriebssystem in einer dedizierten Instanz auswählen.
Diese Dinge, die mir wichtig waren,
In meinem Fall musste ich den Server (Beanstalk) skalieren, um die Installation einiger Pakete (wie Pandoc) ausführen zu können. Diese Dinge sind in Ubuntu einfacher.
Das Skalieren ist in BeanStalk viel einfacher. Das Klonen von Servern ist in BeanStalk unkompliziert.
Ich hatte in beiden Fällen Mikro genommen (dediziert & Bohnenstange). Ich fand, dass eine dedizierte Mikroinstanz besser war.
Automatisierte Bereitstellung in Beanstalk. Ich musste Skripte schreiben, um dasselbe zu automatisieren, was in Ordnung ist, da es nur einmal ist.
quelle