vectorfusionart - stock.adobe.co
Entwickeln mit AWS: So gelingt der Einstieg
Sie möchten sich Entwicklerfähigkeiten für AWS aneignen, aber wissen nicht, wie Sie am besten loslegen? In diesem Artikel erfahren Sie alles, was Sie für den Start wissen müssen.
Für moderne Entwickler ist die Fähigkeit, Anwendungen in der Cloud zu entwerfen und einzurichten, eine wesentliche Fertigkeit. Allerdings verfügen nicht alle über die notwendige Cloud-Erfahrung.
Der Anwendungsbereitstellungsprozess ist in der Cloud anders als On-Premises. Außerdem müssen Entwickler die Unterschiede zwischen lokalen und Cloud-Ressourcen beim Aufbau ihrer Anwendungen berücksichtigen.
Wenn Sie noch nicht mit AWS gearbeitet haben, sollten Sie sich vorab mit bestimmten Konzepten und Diensten vertraut machen, bevor Sie mit dem Entwerfen und Bereitstellen einer Anwendung fortfahren.
In diesem Artikel fassen wir die Grundlagen für das Entwickeln mit AWS zusammen und erklären, wie ein einfacher Anwendungsbereitstellungsprozess in AWS normalerweise aussieht.
Wichtige AWS-Konzepte für Entwickler
Die AWS Cloud ist ein komplexes Ökosystem aus verschiedenen Tools und Services. Entwickler, die mit der Anwendungsentwicklung und -bereitstellung auf AWS beginnen möchten, müssen nicht jeden Aspekt der Plattform beherrschen, sollten jedoch mit den folgenden Kernkonzepten vertraut sein.
Programmiersprachen
Mit wenigen Ausnahmen unterstützt AWS wahrscheinlich die Programmiersprache Ihrer Wahl – zumindest wenn Sie sie in einer Virtuellen Maschine (VM) hosten.
Wenn Sie für Ihre Anwendung jedoch mit bestimmten Diensten wie AWS Lambda oder AWS Elastic Beanstalk nutzen, schränkt das die Wahl der Sprache etwas ein. Selbst in diesen Fällen ist Unterstützung für die beliebtesten Sprachen verfügbar, einschließlich Python, Ruby, Java und PHP.
APIs
APIs sind integraler Bestandteil von Cloud-basierten Anwendungen; Sie sind der Klebstoff, der die verschiedenen Dienste und Anwendungen miteinander verbindet.
Die meisten Cloud-Dienste verfügen über eine Cloud-API, über die Ihre Anwendungen mit diesem Dienst interagieren können. Wenn Sie beispielsweise Daten in einen S3-Speicherbereich (Amazon Simple Storage Service) verschieben oder aus diesem entfernen möchten, tun Sie dies normalerweise mit der S3-API. Es gibt andere Möglichkeiten, mit S3 zu interagieren, aber für eine Anwendung ist die API die beste Wahl. Sie verwenden APIs auch für andere AWS-Anwendungsentwicklungsaufgaben, zum Beispiel um eine IP-Adresse zuzuweisen oder einen Snapshot einer virtuellen Amazon Elastic Compute Cloud (EC2)-Maschine zu erstellen.
Vernetzung
Die meisten Cloud-basierten Anwendungen sind über einen Cloud Load Balancer mit dem Netzwerk verbunden. Load Balancer akzeptieren eingehenden Datenverkehr aus dem Internet und leiten ihn an interne Anwendungen oder einzelne Dienste weiter, die in Ihrer Cloud-Umgebung laufen. Sie leiten außerdem ausgehenden Datenverkehr an sein Ziel weiter.
Load Balancer sind nicht unbedingt erforderlich – Sie können Anwendung ohne einen solchen in der Cloud bereitstellen – aber aus Sicherheits- und Leistungsgründen sollten Sie auf jeden Fall einen verwenden, um Ihre Anwendung vom Internet zu trennen.
Darüber hinaus haben Sie die Option, ein VPN zu konfigurieren, das Ihre Cloud-basierten Ressourcen mit einem privaten Netzwerk verbindet. Zusätzlich zu einem VPN können Sie Amazon VPC verwenden, ein von Ihnen definiertes virtuelles Netzwerk, um die Verbindung privater Ressourcen in einer Cloud-Umgebung zu vereinfachen.
AWS berechnet Gebühren für das Verschieben von Daten über das Netzwerk außerhalb der Cloud. In der Regel fallen auch Gebühren für Datenverkehr von einer AWS-Region in eine andere an. Je mehr Daten Sie verschieben, desto höher sind Ihre AWS-Kosten. Für eingehende Daten fallen normalerweise keine Gebühren an.
Cloud-Überwachung
Die meisten Cloud-Dienste generieren automatisch Ereignis- und Metrikdaten, um die Anwendungsleistung zu überwachen. On-Premises erheben Sie entweder Leistungskennzahlen aus der Anwendung selbst heraus oder messen die Leistung anhand von Kennzahlen auf Infrastrukturebene wie Netzwerkverkehrsmuster, CPU- und Speicherauslastung.
Die Überwachung von Cloud-Anwendungen hängt jedoch von den Datentypen ab, die jeder Cloud-Dienst verfügbar macht, und von der Art und Weise, wie das geschieht. Die Überwachung eines Speicherdienstes erfordert einen anderen Ansatz als die Überwachung einer VM oder eines Containerdienstes.
AWS stellt grundlegende Tools wie AWS CloudWatch zur Überwachung von Anwendungen zur Verfügung, die jedoch in der Regel nicht für umfangreiche Überwachungsanforderungen ausreichen. Die meisten Teams verlassen sich auf Überwachungs-Tools von Drittanbietern, um die nativen AWS-Angebote zu erweitern oder gar zu ersetzen. Lösungen von Drittanbietern wie Splunk oder New Relic fügen umfassendere Funktionen hinzu.
Cloud-Sicherheit
Cloud-Sicherheit ist ein komplexes Thema, wir beschränken uns hier nur auf die absoluten Grundsätze.
Zunächst wäre da das Thema Authentifizierung. Im Servicekatalog von AWS gibt es verschiedene Identitätsdienste, um zu festzulegen, welche Benutzer oder Anwendungen auf bestimmte Ressourcen in der Cloud zugreifen. AWS Identity and Access Management (IAM), ein grundlegendes Element der AWS-Sicherheit, das Sie aktiv konfigurieren müssen. Machen Sie niemals Annahmen über die Sicherheit Ihrer Anwendungen oder Cloud-Ressourcen. Sie müssen selbst Schritte unternehmen, um sie zu schützen.
Zweitens sollten Sie sich um Verschlüsselung kümmern, denn die meisten Daten, die Sie in der Public Cloud speichern sind standardmäßig unverschlüsselt. Sie müssen Cloud-Speicher-Buckets, Datenbanken und Netzwerke selbst sichern.
Das dritte Schlüsselkonzept ist die Sicherheitsüberwachung. AWS bietet einige Tools wie AWS CloudTrail, mit Sie eine grundlegende Überwachung der Cloud-Sicherheit einrichten. Diese Tools allein sind jedoch keine umfassenden Cloud-Sicherheitsplattformen. Sie werden höchstwahrscheinlich zusätzliche externe Tools nutzen wollen.
Palo Alto Prisma Cloud und Dome9 Arc sind Beispiele für Sicherheits- und Compliance-Überwachungsplattformen, die tiefer gehen als die nativen Tools von AWS. Sie bieten umfangreichere Richtliniendateien zum Identifizieren von Sicherheitsproblemen in AWS-Konfigurationen sowie Visualisierungs- und Analysefunktionen, die AWS-eigene Tools nicht beherrschen.
Schließlich sollten sich Entwickler mit dem Konzept der geteilten Verantwortung vertraut machen, das definiert, welche Sicherheitsaspekte AWS verwaltet und welche in der Verantwortung seiner Kunden liegen.
Grundlegende AWS-Services und -Tools, die Entwickler kennen müssen
AWS hat mehr als 200 Cloud-Services im Portfolio. Entwickler müssen nicht in jedem Fall ein Experte sein, aber die Kenntnis der folgenden Amazon Cloud-Dienste ist unerlässlich:
- Amazon Elastic Compute Cloud (EC2). Bei diesem AWS-Standard-Computing-Service wählen Sie aus Dutzenden verschiedener Konfigurationen virtueller Maschinen – einschließlich Linux und Windows, denen jeweils unterschiedliche virtuelle Hardwareressourcen zugewiesen sind. Nachdem Sie die Instanzen ausgewählt haben, starten sie diese und hosten Ihre Anwendung darin.
- Amazon Simple Storage Service (S3). Der AWS-Objektspeicherdienst speichert alle Arten von Daten unstrukturiert und greift dann nach Bedarf auf diese Daten zu.
- Amazon Relational Database Service (RDS). Amazon RDS kann Datenbanken mit einer Vielzahl von Datenbankmodulen erstellen und verwalten, einschließlich, aber nicht beschränkt auf MySQL, Microsoft SQL und PostgreSQL.
- Amazon Elastic Load Balancing (ELB). Amazon ELB bietet Zugriff auf verschiedene Arten von Load Balancern. Jeder Load-Balancer-Typ deckt einen anderen Satz von Anwendungsfällen ab. Wenn Sie AWS noch nicht kennen und Standard-Webanwendungen bereitstellen, wählen Sie am besten die Option Application Load Balancer (ALB) in ELB.
- Amazon Elastic Kubernetes Service (EKS). Dieser verwaltete Kubernetes-Dienst ist eine Variante, wie Sie einen Kubernetes-Cluster einrichten und containergestützte Anwendungen betreiben. AWS verfügt über weitere Container-Services wie Amazon Elastic Container Service (ECS), AWS Fargate und selbstverwaltete Kubernetes-Cluster mit EC2-Instances. EKS ist eher für Entwickler gedacht, die bereits mit Kubernetes vertraut sind, während ECS eine insgesamt einfachere Bedienung für Containerneulinge ermöglicht.
- Amazon CloudWatch. CloudWatch ist das grundlegende Überwachungstool für AWS-Services. Entwickler verschaffen sich damit einen Überblick über den Zustand und den Status von AWS-Diensten. Für erweiterte Überwachungsanforderungen ist es aber nicht ausreichend.
- AWS Lambda. Entwickler verwenden diese Serverless-Computing-Plattform, um Anwendungen als Serverless-Funktionen und nicht in Containern oder virtuellen Maschinen zu hosten.
- AWS Auto Scaling. Mit diesem Service definieren Sie Regeln für die Skalierung Ihrer Anwendungen, indem Sie bestimmen, wie viele Ressourcen oder Instanzen eine Anwendung wann belegen darf.
AWS Auto Scaling verwaltet Anwendungen automatisch basierend auf den von Ihnen festgelegten Parametern.
Darüber hinaus bietet AWS eine Reihe von Tools, mit denen Entwickler mit Cloud-Anwendungen auf der Plattform interagieren und diese erstellen können. Zu den wichtigsten Tools, die Sie für den Einstieg in AWS benötigen, gehören:
- Webkonsole. Die webbasierte Oberfläche zur Verwaltung von AWS-Ressourcen.
- AWS-Kommandozeile (AWS Command Line Interface, CLI). Diese CLI wird auch als aws-cli bezeichnet und ermöglicht Ihnen die Verwaltung von Ressourcen über eine Befehlszeile.
- AWS Cloud9. Diese integrierte Entwicklungsumgebung (Integrated Developmen Environment, IDE) hilft Entwicklern dabei, Anwendungen zu erstellen und diese auf Wunsch mit anderen AWS-Services für eine einfache Bereitstellung zu integrieren.
- AWS CloudFormation. Dieses Tool für native Infrastruktur als Code (IaC) automatisiert die Einrichtung von Cloud-Umgebungen mit Konfigurationsdateien.
- Software Development Kit (SDK). AWS bietet eine Vielzahl von SDKs, um die Entwicklung und Bereitstellung von Anwendungen zu vereinfachen, die in verschiedenen Sprachen und Frameworks geschrieben sind.
So entwerfen Sie eine App für AWS
Angesichts der Vielzahl von Diensten, die in AWS verfügbar sind, entwerfen Entwickler Anwendungen für die Plattform anders als On-Premises.
Statt eine Anwendung beispielsweise als Monolith auszuführen, unterteilen Sie sie in Microservices und hosten jeden Microservice in einem Container. Sie können Dienste auch als Funktionen ohne Server ausführen, was möglicherweise Kosten- und Leistungsergebnisse gegenüber Standardcontainern verbessert.
Der Betrieb Ihrer Anwendung in der Cloud vereinfacht zudem das maßstabsgetreue Entwerfen Ihrer App. Sie können Services wie AWS Auto Scaling verwenden, um die Kapazität Ihrer Anwendungen automatisch zu erhöhen, wenn sich die Nachfrage ändert.
Eine automatische Skalierung ist On-Premises kaum umzusetzen. Es erfordert zusätzliche Designschritte, um das Hinzufügen weiterer Server und die Lastverteilung zu ermöglichen sowie das Bereithalten von Reservekapazitäten für die Widerstandsfähigkeit gegen Nachfragespitzen.
So stellen Sie eine App in AWS bereit
Es gibt verschiedene Varianten, wie Sie eine Anwendung in die Public Cloud von AWS bringen. Der richtige Ansatz hängt davon ab, welche Art von Anwendung Sie entwickelt haben, welche Cloud-Services Sie verwenden und wie viel Kontrolle Sie über die Ausführung haben möchten.
AWS-Bereitstellung mit Elastic Beanstalk
Wenn Sie ein Anfänger in AWS sind, ist die Verwendung von Elastic Beanstalk eine der einfachsten Möglichkeiten, eine App in AWS zu bringen. Dieses PaaS Tool (Platform as a Service, Plattform als Service) automatisiert den größten Teil der Konfiguration und des Einrichtungsprozesses.
Führen Sie die folgenden Schritte aus, um eine AWS-Anwendung mit Beanstalk hinzuzfügen:
- Erstellen Sie eine neue Anwendung in Beanstalk. Das bedeutet nicht, dass sie den eigentlichen Anwendungscode schreiben – das sollten Sie außerhalb von Beanstalk erledigen – sondern dass Sie eine neue Anwendungsinstanz hochfahren, um sie in AWS zu verwalten.
- Wählen Sie die Konfiguration für Ihre Anwendung. Beanstalk enthält vorkonfigurierte Umgebungen für das Hosten von Anwendungen, die in den meisten gängigen Sprachen für die Webprogrammierung verfasst sind.
- Laden Sie Ihre Anwendung als Zip-Datei in Beanstalk hoch.
- Konfigurieren Sie die Umgebung, das Netzwerk und die Zugriffsoptionen für Ihre Anwendung. Für einfache Apps reichen die Standardeinstellungen normalerweise aus; Sie sollten die Auswirkungen dieser Einstellungen auf Sicherheit und Leistung verstehen, wenn Sie mit Produktions-Apps arbeiten.
- Klicken Sie auf Starten, um die Anwendung bereitzustellen.
Nach dem Start ist die Anwendung unter der URL verfügbar, die Sie bei der Konfiguration in Elastic Beanstalk festgelegt haben. Die App wird in einer EC2-Instanz gehostet, die AWS anhand Ihrer Angaben automatisch einrichtet.
Andere AWS-Bereitstellungsoptionen
Für andere Arten von Anwendungen stehen verschiedene AWS-Bereitstellungsansätze zur Wahl. Dies ist keine umfassende Liste, aber für Entwickler sind dies die gängigsten Ansätze.
- Richten Sie eine EC2-Instanz manuell ein, laden Sie die Anwendung hoch und konfigurieren Sie sie.
- Stellen Sie Anwendungscode in serverlosen Funktionen in AWS Lambda bereit.
- Richten Sie einen Kubernetes-Cluster auf EKS ein und betreiben Sie darin containerisierte Anwendungen.