Amazon Web Services

Amazon auf dem Weg zum Cloud-Primus

15.05.2011 von Wolfgang Sommergut
Amazon baut sein Cloud-Portfolio im Eiltempo aus. Die Amazon Web Services sind längst mehr als Storage zur Miete.
Amazon baut seine Cloud-Services im Eiltempo aus und erhöht Jahr für Jahr die Zahl der neuen Features. Der Wert für 2011 ist geschätzt.
Foto: Cloudscaling

Die Amazon Web Services (AWS) haben vor allem mit Elastic Compute Cloud (EC2) und dem Simple Storage Service (S3) Bekanntheit erlangt. Sie gelten als Musterbeispiel für Infrastructure as a Service (IaaS), weil sie im Gegensatz zum herkömmlichen Hosting wesentliche Cloud-Computing-Prinzipien realisieren. Daran ändern auch die jüngsten Ausfälle einiger AWS-Dienste nichts. Zu den wesentlichen Cloud-Prinzipien gehören vor allem die Mandantenfähigkeit durch eine virtualisierte Infrastruktur und eine Abrechnung nach dem Modell "pay as you go". Letztere erlaubt es Kunden, über die Eingabe einer Kreditkartennummer die gewünschten Ressourcen zu buchen, sie sofort zu nutzen und exakt nach Verbrauch zu bezahlen.

Softwareplattformen aus der Cloud
Softwareplattformen aus der Cloud
Platform as a Service (PaaS) erlaubt es, Anwendungen direkt in der Cloud zu betreiben. Was bieten die Dienste von Amazon, Google und Co. in der Praxis?
Google App Engine
Google App Engine - Nachteile:
o Wesentliche Einschränkungen gegenüber dem üblichen Java-Programmiermodell <br> o Zur Zeit keine relationale Datenbank verfügbar <br> o Durch die Einschränkungen ergeben sich Abhängigkeiten in der Anwendung (Lock In)<br> o Keine Eingriffsmöglichkeiten oder Tuningmöglichkeiten auf Ebene des Web Servers oder Betriebssystems
Google App Engine - Vorteile:
o Automatische Skalierung der Anwendung <br> o Lange am Markt, bewährt
Amazon Beanstalk
Amazon Beanstalk - Nachteile:
o Zur Zeit noch in Beta und nur in US-East verfügbar <br> o Grobgranulare Skalierung durch zusätzliche Rechner
Amazon Beanstalk - Vorteile:
o Bewährte Cloud-Infrastruktur als Basis<br> o Übliches Enterprise-Java-Programmiermodell (Tomcat Web Server/ relationale Datenbank)<br> o Daher geringe Lock-In-Gefahr auf Code-Ebene<br> o Zahlreiche weitere Services (RDS, SimpleDB, Payment ...)
Cloud Bees
Cloud Bees - Nachteile
o RUN@Cloud zur Zeit noch in Beta-Phase<br> o Kein echtes Skalierungskonzept<br> o Keine SLAs<br> o Datenbank-Lösung eher rudimentär<br> o Tomcat-Installation kaum anpassbar
Cloud Bees - Vorteile:
o Attraktiv für Entwickler wegen Continuous Integration und Repository Server<br> o RUN@Cloud kostenlos<br> o EC2-Infrastruktur, daher leicht mit Amazon-Angeboten kombinierbar
VMware Cloud Foundry
VMware Cloud Foundry - Nachteile:
o Zurzeit noch in Beta-Phase<br> o Benötigt Framework-Integration<br> o Public-Cloud-Infrastruktur im Moment nur in den USA
VMware Cloud Foundry - Vorteile:
o Offene Plattform<br> o Open-Source-Lizenz<br> o Services-Konzept<br> o Flexibilität: Nutzung auf Amazon EC2 und lokal möglich, Private Cloud denkbar

Diese flexibel nutzbaren Basisdienste versetzen heute zahlreiche Web-Startups in die Lage, schnell eigene Angebote auf den Markt zu bringen und gegen große Konkurrenten zu bestehen, weil sie nicht mehr gezwungen sind, teure eigene Rechenzentren aufzubauen. Auch wenn es scheinbar nur um Rechenleistung und Speicher im Internet geht, haben sich EC2 und S3 über die Zeit erheblich weiterentwickelt.

Die wichtigsten Amazon Web Services im Überblick

Elastic Compute Cloud: EC2 stellt virtuelle Rechner bereit, die über eine Web-Oberfläche administriert werden. So lassen sich auf diesem Weg Instanzen auf Basis ausgewählter Images starten, die Zugangsberechtigungen verwalten und die benötigten Ressourcen zuteilen.

Simple Storage Service: Bei Amazon S3 handelt es sich um mietbaren Online-Speicher. Er bietet eine einfache Webservice-Schnittstelle zum Speichern und Abrufen von Daten, und zwar nicht nur von EC2 aus, sondern von jedem Rechner im Internet.

Elastic Block Store: EBS stellt hoch verfügbare Volumes für EC2-Instanzen bereit, die innerhalb der virtuellen Maschinen als Gerät angesprochen werden können.

Elastic Load Balancing: Der Service verteilt eingehende Anfragen automatisch über mehrere EC2-Instanzen. Er kann problematische VMs erkennen und den Traffic auf intakte Instanzen umleiten, bis die Schwierigkeiten beseitigt sind.

Virtual Private Cloud: VPC stellt via VPN eine sichere Verbindung zwischen der internen IT eines Unternehmens und EC2-Instanzen her. Es erlaubt die Anwendung von internen Sicherheitssystemen (Firewalls, Intrusion Detection, etc.) auf die AWS-Ressourcen.

Relational Database Service: RDS ist ein Web-Service zum Einrichten und Betreiben einer relationalen Datenbank in der Cloud. Er bietet vollen Zugriff auf die Funktionen von MySQL und Oracle 11g. Im Gegensatz zu einer Datenbank, die man selbst in einer EC2-Instanz betreibt, übernimmt Amazon bei RDS das Patch-Management und das Backup.

Simple DB: Dabei handelt es sich um eine nicht-relationale Datenbank, die Entwickler über ein REST-Interface ansprechen können.

Simple Queue Service: SQS ist eine asynchrone Middleware zum Speichern von Messages, während diese zwischen Computern weitergeleitet werden. Entwickler können sie ebenfalls über ein Web-API in ihre Anwendungen einbinden.

CloudWatch: Dabei handelt es sich um einen Monitoring-Service, der EC2-Instanzen, EBS-Volumes, Elastic Load Balancers und RDS-Instanzen in Echtzeit überwachen kann.

CloudFormation: Dieser Dienst eignet sich dafür, eine Sammlung von AWS-Komponenten zu definieren und diese automatisch in einer vorbestimmten Reihenfolge bereitzustellen.

Elastic Beanstalk: Es handelt sich dabei um einen Mechanismus für das Deployment von Java-Applikationen. Er kümmert sich etwa um das Kapazitätsmanagement, Load-Balancing, Auto Scaling und Health-Monitoring.

Route 53: Dabei handelt es sich um einen hochverfügbaren DNS-Service, der Anfragen vom nächstgelegenen Standort aus beantworten kann. Er steht nicht nur für AWS-Ressourcen wie EC2 oder S3 zur Verfügung, sondern kann auch Adressen für beliebige Server auflösen.

Teaserbild: AA+W, Fotolia.de

Laufende Verbesserungen der Basisdienste

Im Fall des Storage-Service etwa kam erst kürzlich eine Client-seitige Verschlüsselung für das Java-SDK sowie ein Multipart-Upload hinzu, der es zulässt, dass große Dateien in mehreren Tranchen hochgeladen werden, um den Anforderungen unverlässlicher und langsamer sowie besonders schneller Netze gerecht zu werden. Zusätzlich fielen quantitative und regionale Schranken, indem S3 in immer mehr Regionen verfügbar wurde und das Größenlimit für einzelne Objekte auf 5 TB hochgeschraubt wurde.

Zu einen der zahlreichen Verbesserungen von EC2 zählt, dass man den Instanztyp einer angehaltenen VM ändern kann.
Foto: Cloudscaling

Noch dramatischer waren die Fortschritte bei EC2, das Amazon durch die Einführung neuer Instanztypen immer weiter ausdifferenzierte. Sie reichen von der Micro Instance mit geringer, aber variabler CPU-Leistung, über den Standardtyp in drei verschiedenen Dimensionierungen bis hin zu Ausprägungen für hohen RAM-Bedarf, hoher Rechenleistung oder gleich solche, die sich zu Clustern mit bis zu 128 Knoten zusammenschließen lassen, um extrem aufwändige Rechenaufgaben zu bewältigen.

Vorgefertigte Images inklusive Anwendungen

Amazon beschränkt sich bei EC2 keineswegs darauf, virtuelle Maschinen als leere Container für Workloads bereitzustellen oder den beim Hosting üblichen Stack aus Linux, Apache, MySQL und PHP anzubieten. Vielmehr stehen nach Kooperationen mit verschiedenen Softwareherstellern mittlerweile zahlreiche vorgefertigte Images zur Verfügung, die sich nicht nur hinsichtlich Betriebssystem oder Middleware unterscheiden, sondern auch verschiedenste Anwendungen enthalten.

Erst kürzlich aktualisierte Amazon sein Angebot für Microsoft-Images und unterstützt nun Windows Server 2008 R2 inklusive SP1. Ebenfalls vor erst relativ kurzer Zeit ging Amazon eine Kooperation mit Oracle ein, so dass nun neben MySQL auch Oracle 11g im Rahmen des Relational Database Service zur Verfügung steht. Während die AWS für die Virtualisierungsschicht normalerweise ein modifiziertes Xen nutzen, führen sie die Oracle Applications sogar auf Basis von Oracle VM aus, um der eigenwilligen Support-Politik von Oracle entgegenzukommen.

Lizenzkosten als Teil der Nutzungsgebühr

Bei der Verwendung von kommerzieller Software versucht Amazon das Cloud-typische Abrechnungsmodell nach Ressourcenverbrauch durchzuhalten, indem es die Lizenzgebühren in den Nutzungskosten anteilsmäßig berücksichtigt. Daher ist es in der Regel nicht nötig, Lizenzen separat zu erwerben, um eine bestimmte Software in einer EC2-Instanz auszuführen. Für Kunden mit Enterprise Agreements bieten einige Hersteller die Möglichkeit, Lizenzen in die Amazon-Cloud mitzunehmen. Beispiele für dieses Modell namens "Bring your own License" (BYOL) sind Oracle, IBM und in begrenztem Umfang Microsoft, das während eines Pilotprogramms seinen US-Kunden mit Software Assurance die Mitnahme von Windows-Server-Lizenzen erlaubte.

Trotz des zunehmenden Funktionsumfangs senkte Amazon laufend die Preise für EC2 und S3, weil es als Marktführer die nötigen Skaleneffekte erzielt und darüber den Wettbewerb unter Druck setzen kann. Die große Zahl von Kunden mit unterschiedlichem Nutzungsverhalten hilft dabei, die enormen IT-Ressourcen in global verteilten Rechenzentren möglichst gleichmäßig auszulasten und so hochgradig effizient zu arbeiten. Amazon trägt seinen Teil zu einem idealen Nutzungsmuster bei, indem es einerseits Instanztypen für jeden Bedarf anbietet, andererseits durch verschiedenste Preismodelle das Verhalten der Benutzer steuert. So lassen sich weniger dringliche Aufgaben mit nicht verkaufter Rechenleistung abarbeiten, die man in Form von Spot Instances ersteigern kann, während umgekehrt die kürzlich eingeführten Reserved Instances die benötigten Ressourcen für mindestens ein Jahr buchen.

Ergänzende Services für EC2 und S3

S3 verzeichnet seit mehreren Jahren ein exponentielles Wachstum und beherbergt derzeit mehr als 250 Mrd. Datenobjekte.
Foto: Cloudscaling

Viele der Innovationen, die den Nutzen von EC2 oder S3 erhöhten, betreffen nicht diese Services selbst, sondern schlugen sich in eigenen Diensten nieder. Dazu zählt beispielsweise der Amazon Elastic Block Storage (EBS), der als persistenter Speicher für eine EC2-Instanz dient und sich wie ein lokales Storage verwenden lässt. So lässt es sich auch als Boot-Laufwerk einsetzen. In diese Kategorie fallen auch die "Elastic IP Addresses", mit deren Hilfe feste IP-Adressen zwischen EC2-Instanzen getauscht werden können, oder der VPN-Service "Virtual Private Cloud", der eine transparente Anbindung der Amazon-Ressourcen an in die Firmen-IT erlaubt.

Die typische Nutzung der bloßen Basisdienste besteht darin, EC2-Instanzen als Black Box zu betrachten und in ihnen ein komplettes Paket aus Betriebssystem, Middleware und Anwendung zu kapseln. Bei Bedarf kann es S3 als eine Art SAN verwenden. Mit dem Ausbau seiner Plattform bietet Amazon jedoch die Möglichkeit, Anwendungen zu entwickeln, die nicht wie Legacy-Programme nur in einer VM hausen, sondern auf die reichhaltigen Dienste der AWS aufsetzen. Damit geht der Anbieter den Schritt von IaaS zu "Platform as a Service" (PaaS).

Komplette Umgebung für Cloud-Anwendungen

Für Amazon entwickelte Applikationen können über Speicher und Rechenleistung hinaus Datenbank- und Middleware-Services in Anspruch nehmen, die ebenfalls den Vorteil fast uneingeschränkter Elastizität bieten. Für die Datenhaltung bietet Amazon neben dem erwähnten Amazon Relational Database Service (RDS) auch das nichtrelationale SimpleDB an, das über ein proprietäres Web-API angesprochen wird und daher die Portabilität von Anwendungen auf andere Cloud-Plattformen einschränkt. In puncto Middleware enthalten die AWS Funktionen für Message Queuing, Load Balancing und Notification.

Die reine Bereitstellung aller Komponenten, auf deren Basis sich Cloud-Anwendungen entwickeln lassen, ist indes nur ein erster Schritt. Wenn Entwickler oder Administratoren gezwungen sind, alle nötigen Bausteine für eine Applikation manuell zu einer Infrastruktur zusammenzustellen, dann entspricht dies nicht den Erwartungen an die Cloud. Vonnöten ist zum einen die automatisierte Bereitstellung einer kompletten Ablaufumgebung, zum anderen muss die Infrastruktur in der Lage sein, je nach Auslastung automatisch Ressourcen hinzuzufügen oder freizugeben.

Automatische Bereitstellung aller benötigten Komponenten

Auch in dieser Hinsicht baute Amazon seine Cloud-Services erst kürzlich um solche Funktionen aus. Eine wesentliche Rolle bei der automatischen Provisionierung von Ressourcen und Diensten für eine Anwendung spielt CloudFormation. Er erlaubt die Auswahl aller benötigten Komponenten, indem sie in einer textbasierten Steuerdatei beschrieben und dem Service zur Abarbeitung übergeben werden. Dieser hält auch die vorgegebene Reihenfolge bei der Aktivierung von Diensten ein und nimmt den gesamten Vorgang zurück, wenn ein Schritt im Ablauf scheitert.

Amazon bietet vorgefertigte Templates für mehrere Typen von Anwendungen, die auch als Ausgangsbasis für eigene Definitionen von Ressourcen-Stacks dienen. Interessant sind solche Steuerdateien vor allem dann, wenn bestimmte Konfigurationen mehrfach eingerichtet werden sollen, etwa in verschiedenen Regionen oder für wiederkehrende Tests. Eine mit ihnen eingerichtete Umgebung ist unter einer eigenen ID ansprechbar, so dass mit ihrer Hilfe alle angeforderten Ressourcen auf einen Schlag wieder freigegeben werden können.

Dynamische Ressourcenzuteilung zu Java-Anwendungen

Während CloudFormation die Bereitstellung einer kompletten Infrastruktur automatisieren kann, die für eine Applikation benötigt wird, weiß es nichts über die Software, die auf dieser Basis abläuft. Dagegen setzt Elastic Beanstalk eine Ebene höher an und automatisiert das Deployment von Anwendungen. Dabei stellt es die gleichen Basisdienste wie CloudFormation zur Verfügung, beispielsweise EC2-Instanzen inklusive Datenbanken, Message Queuing oder Load Balancing. Allerdings überwacht es die Applikation selbst durch entsprechende Monitoring-Funktionen, so dass Elastic Beanstalk besser nachverfolgen kann, an welcher Stelle Engpässe auftreten und Ressourcen nach Bedarf hinzufügen kann. Dieser Service befindet sich derzeit noch in der Betaphase und unterstützt in der ersten Ausführung nur Java-Programme.

Skalierungsfunktion für bedarfsabhängige Leistung

Für die dynamische Bereitstellung von Ressourcen greifen CloudFormation und Elastic Beanstalk auf einen weiteren AWS-Dienst namens Auto Scaling zurück. Er bietet die Möglichkeit, bei Erreichen bestimmter Grenzwerte automatisch weitere EC2-Instanzen hinzuschalten. Amazon erlaubt die Definition von Policies für AutoScalingGroups, also verknüpften EC2-Instanzen. Diese können bei bestimmten Schwellwerten die verfügbare Leistung entweder prozentual oder absolut erhöhen bzw. reduzieren.

Auto Scaling reagiert jedoch nicht nur auf definierbare Ereignisse. Wenn vorher schon bekannt ist, dass zu einem bestimmten Datum oder eine bestimmten Uhrzeit Leistungsspitzen auftreten werden, dann kann das Zuschalten weiterer Instanzen auch zeitgesteuert erfolgen. Derzeit lässt sich dieses Feature entweder über REST-APIs oder Kommandozeilen-Tools steuern.

Fazit

Der Online-Händler Amazon hat im Gegensatz zu den etablierten IT-Lieferanten, die noch stark dem klassischen Enterprise-Business und dem Lizenzgeschäft verhaftet sind, schon früh die Möglichkeiten der Cloud erkannt. Als Marktführer bei IaaS baut er ohne großes Aufsehen den Funktionsumfang seiner Dienste rasant aus und schickt sich an, den Schritt in Richtung PaaS zu tun. Im Gegensatz zu den bekannten IT-Anbietern für das Enterprise hat Amazon kein Standbein in der Firmen-IT, so dass etwa eine flexible und intelligente Verteilung von Workloads zwischen Public und Private Clouds unter Kompatibilitätsproblemen leidet. Sollten sich jedoch offene PaaS-Frameworks wie Cloud Foundry von VMware durchsetzen, dann könnte sich dieses Manko verflüchtigen. Derzeit ist Amazon vor allem für Web-Unternehmen wie Dropbox oder Netflix interessant, die damit auf den Bau eigener Rechenzentren verzichten können.

Für deutsche Anwender stellen sich bei global agierenden US-Anbietern zusätzliche Probleme. Zwar unterhält Amazon auch Rechenzentren in Europa, so dass die aus Datenschutzgründen häufig unerwünschte Speicherung und Bearbeitung von Informationen in amerikanischen Einrichtungen vermieden werden kann. Wie der Fall von Wikileaks jedoch gezeigt hat, beugt sich Amazon dem Druck von US-Behörden und kann in solchen Fällen beispielsweise Dienstleistungen kurzfristig einstellen. Eine weitere Hürde bei der Nutzung von Diensten globaler Player sind häufig die ausschließlich in Englisch abgefassten AGBs oder Gerichtsstandorte außerhalb Deutschlands.