Überlegungen zum Design - AWS Elastic Beanstalk

Überlegungen zum Design

Da Anwendungen, die mithilfe von AWS Elastic Beanstalk bereitgestellt werden, auf AWS Cloud-Ressourcen ausgeführt werden, sollten Sie einige Dinge bei der Konzeption Ihrer Anwendung berücksichtigen: Skalierbarkeit, Sicherheit, dauerhafte Datenspeicherung, Fehlertoleranz, Bereitstellung von Inhalten, Software-Updates und Patches und Konnektivität. Jeder dieser Aspekte wird in diesem Thema separat behandelt. Eine umfangreiche Liste technischer AWS-Whitepaper zu Themen wie Architektur sowie Sicherheit und Wirtschaftlichkeit finden Sie unter AWS-Cloud-Computing-Whitepapers.

Skalierbarkeit

Wenn Sie in einer physischen Hardware-Umgebung arbeiten, können Sie im Gegensatz zu einer Cloud-Umgebung die Skalierbarkeit auf zwei Arten angehen. Entweder können Sie durch vertikale Skalierung hochskalieren oder durch horizontale Skalierung aufskalieren. Der Hochskalierungsansatz erfordert, dass Sie in leistungsstarke Hardware investieren, die die steigenden Anforderungen Ihres Unternehmens unterstützen kann. Der Aufskalierungsansatz setzt voraus, dass Sie einem verteilten Anlagemodell folgen. Daher können Ihre Hardware- und Anwendungsakquisitionen gezielter sein, Ihre Datensätze werden verbunden und Ihr Design ist serviceorientiert. Das Hochskalierungsansatz kann sehr teuer sein und es besteht weiterhin das Risiko, dass Ihr Bedarf Ihre Kapazität übersteigt. In dieser Hinsicht ist der Aufskalierungsansatz normalerweise effektiver. Wenn Sie ihn verwenden, müssen Sie jedoch in der Lage sein, den Bedarf in regelmäßigen Abständen vorherzusagen und Infrastruktur in Teilen bereitzustellen, um diesen Bedarf zu decken. Dieser Ansatz führt oftmals zu nicht genutzten Kapazitäten und erfordert eine sorgfältige Überwachung.

Durch die Migration in die Cloud können Sie Ihre Infrastruktur durch Ausnutzen der Elastizität der Cloud anpassen. Elastizität hilft, die Erfassung und Freigabe von Ressourcen zu rationalisieren. Mit ihr kann Ihre Infrastruktur rasch mit schwankendem Bedarf aufskaliert werden. Sie können mit Ihren Auto-Scaling-Einstellungen nach oben oder unten skalieren, basierend auf Metriken der Ressourcen in Ihrer Umgebung. Beispielsweise können Sie Metriken wie Serverauslastung oder Netzwerk-I/O festlegen. Sie können Auto Scaling verwenden, damit die Rechenkapazität automatisch hinzugefügt wird, wenn die Nutzung steigt, und diese bei sinkender Nutzung entfernt wird. Sie können Systemmetriken (z. B. CPU, Speicher, Festplatten-I/O und Netzwerk-I/O) in Amazon CloudWatch veröffentlichen. Anschließend können Sie CloudWatch verwenden, um Alarme zu konfigurieren, um Auto-Scaling-Aktionen auszulösen oder Benachrichtigungen basierend auf diesen Metriken zu senden. Weitere Informationen zur Konfiguration von Auto Scaling finden Sie unter Auto Scaling-Gruppe für Ihre Elastic Beanstalk-Umgebung.

Elastic-Beanstalk-Anwendungen sollten darüber hinaus möglichst zustandslos sein, dank lose gekoppelter, fehlertoleranter Komponenten, die bei Bedarf aufskaliert werden können. Weitere Informationen zum Konzipieren skalierbarer Anwendungsarchitekturen für AWSfinden Sie unterAWSWell-Architected Framework.

Sicherheit

Sicherheit in AWS ist eine geteilte Verantwortung. Amazon Web Services schützt die physischen Ressourcen in Ihrer Umgebung und stellt sicher, dass die Cloud ein sicherer Ort zum Ausführen von Anwendungen ist. Sie sind für die Sicherheit von Daten in und aus Ihrer Elastic-Beanstalk-Umgebung und die Sicherheit Ihrer Anwendung verantwortlich.

Konfigurieren Sie SSL, um Informationen zu schützen, die zwischen Ihrer Anwendung und den Clients fließen. Dazu benötigen Sie ein kostenloses Zertifikat von AWS Certificate Manager (ACM). Wenn Sie bereits ein Zertifikat einer externen Zertifizierungsstelle (CA) besitzen, können Sie ACM verwenden, um dieses Zertifikat zu importieren. Andernfalls können Sie es mit der AWS CLI importieren.

Wenn ACM in Ihrer AWS-Region nicht verfügbar ist, können Sie ein Zertifikat von einer externen Zertifizierungsstelle kaufen, wie beispielsweise VeriSign oder Entrust. Anschließend verwenden Sie die AWS Command Line Interface (AWS CLI), um ein Drittanbieter- oder selbstsigniertes Zertifikat und den privaten Schlüssel zu AWS Identity and Access Management (IAM) hochzuladen. Der öffentliche Schlüssel des Zertifikats authentifiziert Ihren Server gegenüber dem Browser. Außerdem dient er als Grundlage für die Erstellung des gemeinsamen Sitzungsschlüssels, der die Daten in beide Richtungen verschlüsselt. Weitere Anweisungen zum Erstellen, Hochladen und Zuweisen eines SSL-Zertifikats zu Ihrer Umgebung finden Sie unter Konfigurieren von HTTPS für Elastic Beanstalk-Umgebung.

Wenn Sie ein SSL-Zertifikat für Ihre Umgebung konfigurieren, werden Ihre Daten zwischen dem Client und der Elastic-Load-Balancing-Lastenverteilung verschlüsselt. Standardmäßig wird die Verschlüsselung beim Load Balancer beendet und Datenverkehr zwischen dem Load Balancer und Amazon EC2-Instances ist nicht verschlüsselt.

Persistenter Speicher

Elastic Beanstalk-Anwendungen werden auf Amazon EC2-Instances ausgeführt, die keine persistenten lokalen Speicher haben. Wenn die Amazon-EC2-Instances beendet werden, wird das lokale Dateisystem nicht gespeichert. Neue Amazon-EC2-Instances starten mit einem Standard-Dateisystem. Wir empfehlen Ihnen, Ihre Anwendung zum Speichern von Daten in einer persistenten Datenquelle zu konfigurieren. AWS bietet eine Reihe von persistenten Speicherservices, von denen Sie Gebrauch machen können. In der folgende Tabelle sind sie aufgelistet.

Anmerkung

Elastic Beanstalk erstellt einen webapp-Benutzer für Sie, den Sie als Besitzer von Anwendungsverzeichnissen auf EC2-Instances einrichten können. Für Amazon-Linux-2-Plattformversionen, die am 3. Februar 2022 oder danach veröffentlicht werden, weist Elastic Beanstalk dem webapp-Benutzer eine UID (Benutzer-ID) und einen gid-Wert (Gruppen-ID-Wert) von 900 für neue Umgebungen zu. Dasselbe geschieht für vorhandene Umgebungen nach einem Plattformversionsupdate. Dieser Ansatz behält eine konsistente Zugriffsberechtigung für den webapp-Benutzer auf den permanenten Dateisystemspeicher bei.

In dem unwahrscheinlichen Fall, dass ein anderer Benutzer oder Prozess bereits 900 verwendet, setzt das Betriebssystem die uid und gid des webapp-Benutzers auf einen anderen Wert zurück. Führen Sie den Linux-Befehl id webapp auf Ihren EC2-Instances aus, um die uid- und gid-Werte zu überprüfen, die dem webapp-Benutzer zugewiesen sind.

Fehlertoleranz

In der Regel sollten Sie pessimistisch bei der Entwicklung einer Architektur für die Cloud sein. Nutzen Sie die Elastizität, die dadurch ermöglicht wird. Berücksichtigen Sie beim Design, der Implementierung und Bereitstellung immer eine automatische Wiederherstellung nach einem Ausfall. Verwenden Sie mehrere Availability Zonen für Ihre Amazon EC2-Instances und Amazon RDS. Availability Zonen basieren auf dem gleichen Konzept wie logische Rechenzentren. Mit Amazon CloudWatch erhalten Sie bessere Einblicke in den Zustand Ihrer Elastic Beanstalk-Anwendung und können bei einem Hardware-Ausfall oder Leistungsabfall die angemessenen Maßnahmen ergreifen. Konfigurieren Sie Ihre Auto Scaling-Einstellungen so, dass Ihre Flotte von Amazon EC2-Instances eine feste Größe behält, sodass fehlerhafte Amazon EC2-Instances durch neue ersetzt werden. Wenn Sie Amazon RDS verwenden, richten Sie den Aufbewahrungszeitraum für Backups ein, damit Amazon RDS automatisch Backups erstellen kann.

Bereitstellung von Inhalten

Wenn Benutzer eine Verbindung mit Ihrer Website herstellen, werden ihre Anforderungen über eine Reihe einzelner Netzwerke geleitet. Daher kann es sein, dass Anwender eine schlechtere Leistung durch hohe Latenz bemerken. Amazon CloudFront kann helfen, Latenzprobleme zu verbessern, indem es Ihre Webinhalte, wie Bilder und Videos, über ein Netzwerk von Edge-Standorten auf der ganzen Welt verteilt. Benutzer werden an den nächsten Edge-Standort weitergeleitet, sodass die Bereitstellung der Inhalte mit der bestmöglichen Leistung erfolgt. Amazon CloudFront funktioniert außerdem reibungslos mit Amazon S3, auf denen die definitiven Originalversionen der Dateien gespeichert sind. Weitere Informationen zu Amazon CloudFront finden Sie im Amazon-CloudFront-Entwicklerhandbuch.

Software-Aktualisierungen und Patches

AWS Elastic Beanstalk veröffentlicht regelmäßig Plattformaktualisierungen mit Fehlerbehebungen, Softwareupdates und neuen Funktionen. Elastic Beanstalk bietet mehrere Optionen zur Handhabung von Plattformupdates. Mit verwalteten Plattformupdates wird Ihre Umgebung während eines geplanten Wartungsfensters automatisch auf die neueste Version einer Plattform aktualisiert, während Ihre Anwendung in Betrieb bleibt. In Umgebungen, die am 25. November 2019 oder später mit der Elastic-Beanstalk-Konsole erstellt wurden, werden verwaltete Updates standardmäßig aktiviert (sofern möglich). Sie können Updates auch manuell mit der Elastic Beanstalk-Konsole oder der EB CLI starten.

Konnektivität

Elastic Beanstalk muss eine Verbindung zu den Instances in Ihrer Umgebung herstellen können, um Bereitstellungen abzuschließen. Wenn Sie eine Elastic Beanstalk-Anwendung in einer Amazon VPC bereitstellen, hängt die Konfiguration für die Konnektivität, die Sie erstellen, vom Typ der Amazon VPC-Umgebung ab, die Sie erstellen:

  • Für Einzel-Instance-Umgebungen ist keine zusätzliche Konfiguration erforderlich. Der Grund hierfür ist, dass Elastic Beanstalk jeder Amazon-EC2-Instance einer öffentliche Elastic-IP-Adresse zuweist, über die die Instance direkt mit dem Internet kommunizieren kann.

  • Für skalierbare Umgebungen mit Lastausgleich in einer Amazon VPC mit öffentlichen und privaten Subnetzen müssen Sie die folgenden Schritte ausführen:

    • Erstellen Sie eine Lastenverteilung im öffentlichen Subnetz, um den eingehenden Datenverkehr des Internets an die Amazon-EC2-Instances weiterzuleiten.

    • Erstellen Sie ein NAT-Gerät (Network Address Translation), um ausgehenden Datenverkehr von den Amazon-EC2-Instances in privaten Subnetzen in das Internet weiterzuleiten.

    • Erstellen Sie Routing-Regeln für ein- und ausgehenden Datenverkehr für die Amazon EC2-Instances im privaten Subnetz.

    • Wenn Sie eine NAT-Instance verwenden, konfigurieren Sie die Sicherheitsgruppen für die NAT-Instance und Amazon-EC2-Instances, um Internet-Kommunikation zu ermöglichen.

  • Für eine skalierbare Umgebung mit Lastenverteilung in einer Amazon VPC mit einem öffentlichen Subnetz ist keine zusätzliche Konfiguration erforderlich. Dies liegt daran, dass Ihre Amazon-EC2-Instances in dieser Umgebung mit einer öffentlichen IP-Adresse konfiguriert sind, über die die Instances mit dem Internet kommunizieren können.

Weitere Informationen zum Verwenden von Elastic Beanstalk mit Amazon VPC finden Sie unter Verwenden von Elastic Beanstalk mit Amazon VPC.