Ich bin seit den frühesten Tagen ein Fan von Heroku. Aber ich mag die Tatsache, dass Sie mit AWS Elastic Beanstalk mehr Kontrolle über die Eigenschaften der Instanzen haben. Eine Sache, die ich an Heroku liebe, ist die Tatsache, dass ich eine App bereitstellen kann und mich nicht darum kümmere, sie zu verwalten. Ich gehe davon aus, dass Heroku sicherstellt, dass alle Sicherheitsupdates für das Betriebssystem rechtzeitig angewendet werden. Ich muss nur sicherstellen, dass meine App sicher ist.
Meine ersten Untersuchungen zu Beanstalk haben gezeigt, dass die Instanzen zwar für Sie erstellt und konfiguriert werden, danach jedoch manuell verwaltet werden. Sicherheitsupdates werden nicht automatisch auf die Instanzen angewendet. Es scheint zwei Bereiche zu geben, die Anlass zur Sorge geben:
- Neue AMI-Releases - Wenn neue AMI-Releases veröffentlicht werden, möchten wir anscheinend die neueste (vermutlich sicherste) Version ausführen. Nach meinen Recherchen müssen Sie jedoch ein neues Setup manuell starten, um die neueste AMI-Version anzuzeigen , und anschließend eine neue Umgebung erstellen, um diese neue Version zu verwenden . Gibt es eine besser automatisierte Möglichkeit, Ihre Instanzen in neue AMI-Releases umzuwandeln?
- Zwischen den Releases werden Sicherheitsupdates für Pakete veröffentlicht. Scheint, wir wollen auch diese aktualisieren. Meine Nachforschungen scheinen darauf hinzudeuten , dass Benutzer Befehle installieren, um gelegentlich ein yum-Update auszuführen. Da jedoch neue Instanzen basierend auf der Verwendung erstellt / zerstört werden, scheinen die neuen Instanzen nicht immer über die Aktualisierungen zu verfügen (dh die Zeit zwischen der Instanzerstellung und dem ersten yum-Update). Gelegentlich gibt es Instanzen, die nicht gepatcht sind. Außerdem werden sich Instanzen ständig selbst patchen, bis das neue AMI-Release angewendet wird. Meine andere Sorge ist, dass diese Sicherheitsupdates möglicherweise nicht von Amazon überprüft wurden (wie dies bei den AMI-Versionen der Fall ist) und meine App möglicherweise nicht mehr funktioniert, um sie automatisch zu aktualisieren. Ich weiß, Dreamhost hatte einmal einen 12-stündigen Ausfall, weil sie Debian-Updates völlig automatisch ohne Überprüfung anwendeten. Ich möchte sicherstellen, dass mir nicht dasselbe passiert.
Meine Frage ist also, ob Amazon eine Möglichkeit bietet, vollständig verwaltete PaaS wie Heroku anzubieten. Oder handelt es sich bei AWS Elastic Beanstalk wirklich nur um ein Installationsskript, und danach sind Sie selbstständig (mit Ausnahme der von ihnen bereitgestellten Überwachungs- und Bereitstellungstools)?
quelle
Antworten:
Zunächst einmal, um klar zu sein, ist keine elastische Bohnenstange nicht so, wie Sie es sich vorstellen. Wenn Sie es in Teile zerlegen, ist es wirklich eher so, als hätten Sie virtualisierte Instanzvorlagen und Automatisierung der Anwendungsbereitstellung wie Puppet oder Chef. Darüber hinaus erhalten Sie automatisierten Zugriff auf den Load-Balancer-Service von awe und die Cloud-Watch-Überwachung, mit deren Hilfe Sie neue Anwendungsserver starten oder vorhandene auf der Grundlage von Metriken herunterfahren können.
Es fühlt sich wie PaaS an, dass das Hauptverkaufsargument das Anwendungsbereitstellungssystem ist, das Ihren Code auf alle Anwendungsserver in Ihrem Cluster kopiert.
Eine der Beschwerden, die einige Leute über PaaS haben, ist, dass der PaaS-Anbieter Entscheidungen über die Anwendungsumgebung für Sie trifft. Dies scheint mir das Wertversprechen von PaaS zu sein: Als Kunde können Sie sich auf die Anwendungsfunktionalität konzentrieren und alle anderen Details dem PaaS-Anbieter überlassen. Sie bezahlen für jemanden, der die Infrastruktur verwaltet und die Systemadministration übernimmt. Für diese Einfachheit zahlen Sie ihnen eine Prämie, wie im Fall von Heroku, dessen Infrastruktur ebenfalls auf ec2 läuft, nur auf eine Weise, die für Sie transparent ist.
Amazon bietet Elastic Beanstalk wirklich zusätzlich zu Ec2 und den REST-APIs an und bemüht sich kaum, dies vor Ihnen zu verbergen. Dies liegt daran, dass sie ihr Geld über IaaS verdienen und EB nur die Einrichtung einer Gruppe von ec2-Ressourcen koordiniert, die Sie angesichts der Zeit und des Know-hows selbst einrichten können.
In Bezug auf die Besonderheiten eines AMIs sind AMIs wieder eines der vielen ec2-Elemente, die zur Erleichterung des EB eingesetzt werden. Ein EB-AMI ist nichts Magisches - es ist nur ein Amazon-Linux-AMI, das für die Arbeit mit EB vorkonfiguriert ist. Wie bei jedem anderen AMI können Sie es in EC2 starten, optimieren und einen neuen angepassten AMI von Ihrer laufenden Instanz ableiten. Amazon Linux ist im Grunde eine Kreuzung zwischen Centos und Fedora, mit Paravirtualisierungs-Patches und vorkonfigurierten Yum-Repos, die von Amazon verwaltet werden.
Wie Sie wahrscheinlich wissen, ist Amazon Linux bereits so konfiguriert, dass Sicherheitspatches beim Booten installiert werden. Laufende Instanzen unterscheiden sich jedoch in Bezug auf das Patchen nicht von anderen Servern. Das Patchen kann den Dienst unterbrechen. Wenn Sie extrem besorgt über Sicherheitspatches sind, können Sie immer einen Container-Befehl verwenden und cron einrichten, um yum update --security in bestimmten Abständen auszuführen.
Sie können die EB-API auch verwenden, um die EB-Konfiguration zu ändern oder die Erstellung einer neuen EB-Umgebung zu automatisieren. Anschließend können Sie zu dieser Umgebung wechseln, sobald sie betriebsbereit ist. Anschließend können Sie die alte herunterfahren. Dies wird hier beschrieben: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html
Wie im Rest von AWS gibt es auch hier eine Möglichkeit, programmgesteuert auf alle Nicht-SaaS-Funktionen zuzugreifen und diese zu steuern. Sie können also keine gepatchten AMIs erstellen, die dann zum Erstellen neuer EB-Umgebungen und zum Rollout dieser verwendet werden. EB wird Ihnen weder Konfigurationsspezifikationen aufzwingen, noch eine Systemadministrationsgruppe bereitstellen, um die Infrastruktur zu warten.
quelle
Ab April 2016 unterstützt Elastic Beanstalk automatische Plattformaktualisierungen:
https://aws.amazon.com/about-aws/whats-new/2016/04/aws-elastic-beanstalk-introduces-managed-platform-updates/
quelle
Alle Beanstalk-Anwendungen und -Umgebungen können über EBEXTENSIONS-Dateien konfiguriert werden, die mit Ihrem Anwendungsbereitstellungspaket (z. B. WAR-Datei für Java-Apps) mit YAML-basierter Konfiguration gepackt werden, um einen beliebigen Teil Ihrer Anwendung, Ihres Containers, Ihres Betriebssystems usw. zu aktualisieren oder neu zu konfigurieren PaaS, da es eine Plattform ist, mit der Sie Anwendungen bereitstellen können, ohne sich um den zugrunde liegenden IaaS sorgen zu müssen. Letztendlich verschleiern alle PaaS-Anbieter den zugrunde liegenden IaaS durch irgendeine Form der Automatisierung. Da es sich jedoch um Informatik handelt, gibt es keinen einzigen optimalen Zustand für alle Anwendungen, und ohne die Möglichkeit, die IaaS unter PaaS zu optimieren, sind Sie dem PaaS-Dienstanbieter ausgeliefert, um sicherzustellen, dass Ihre Anwendungen reibungslos funktionieren. schnell und sicher.
Heroku wird auf AWS mit einer anderen Verwaltungsebene ausgeführt. Es wird jedoch zu einem Ärgernis, wenn Sie beispielsweise Ihre Bewerbung sichern müssen. Obwohl sie sich nach besten Kräften bemühen, ihre Lösung effizient zu verwalten und die Sicherheit usw. aufrechtzuerhalten, können und werden sie am Ende des Tages nicht das Risiko und die Folgen einer Sicherheitsanfälligkeit in Ihrer App übernehmen. Sie wollen ihre Dienste als Ausstecher so gut wie möglich machen.
Die Fähigkeit, das der Plattform zugrunde liegende IaaS zu optimieren, ist eine Stärke und Anziehungskraft von Beanstalk IMO.
quelle