AWS Relational Database Service (RDS) ist ein verwalteter Dienst, mit dem Kunden relationale Datenbanken einfach in der Cloud nutzen können. Zur Auswahl stehen die marktgängigen Produkte. AWS kümmert sich um das Patch-Management, das regelmäßige Backup und um Failover in eine andere Availabilty Zone.
Die Vielfalt von Speichertechnologien in AWS ist enorm, die Auswahl hängt vom Workload ab. Sieht man von Elastic Block Store (EBS) ab, der nur innerhalb von EC2-Instanzen genutzt wird, etwa als Installationsziel für Betriebssysteme oder für Laufzeitdaten, dann stehen für Anwendungs- und Betriebsdaten diverse Datenbanktechnologien sowie der Objektspeicher AWS S3 bereit.
Datenbanken in EC2-Instanzen
Grundsätzlich kann jeder Nutzer nach Belieben relationale Datenbanken (MySQL, Postgres, SQL-Server, Oracle oder NoSQL-Datenbanken (Cassandra, MongoDB, CouchDB) auf EC2-Instanzen selbst betreiben.
Dies ist aber meist nicht empfehlenswert, weil wichtige Anwendungsdaten dann wieder auf EC2-Instanzen und damit auf EBS-Volumes lagern. Dies würde nicht nur vollständig andere Sicherheits- und Backup-Strategien erfordern, sondern in komplexen mehrschichtigen Web-Anwendungen auch die Web-Server selbst unnötig belasten.
Diese sollten sich jedoch auf das Ausliefern von Web-Seiten bzw. auf das Annehmen von Jobs beschränken und nicht auf das Ausführen einer Geschäftslogik (Middleware) oder das Betreiben von Datenbanken (Backends).
AWS RDS
RDS-Datenbanken basieren faktisch jedoch auch auf EC2-Instanzen und damit indirekt auf EBS-Volumes. RDS-EC2-Instanzen (DB-Instances) tauchen aber nicht in der Instanzliste des EC2-Dashboard auf, sondern nur in jener des RDS-Dashboards.
Unter AWS lassen sich die SQL-Datenbanken (MariaDB/MySQL, PostgresQL, Oracle, MS SQL Server und Oracle betreiben, bei. Bedarf auch mit Bring your own License (BYOL).
Der Nutzer muss sich dort um viele Aspekte nicht mehr explizit kümmern. Als Beispiel sei hier nur der Datenbank-Instanzspeicher erwähnt. RDS-Instanzen für MySQL, MariaDB, PostgreSQL, Oracle und Microsoft SQL Server verwenden EBS-Volumes als Datenbank- und Log-Speicher.
Abhängig von der Größe der Datenmenge verteilt Amazon RDS diese automatisch via Striping auf mehrere EBS-Volumes, um die IOPS-Leistung zu verbessern.
Vorteile von RDS gegenüber Datenbanken auf EC2
Die Vorteile bzw. der Unterschied zum Installieren und Betreiben einer relationalen Datenbank auf EC2 sind auch sonst immens.
Nutzer müssen sich nicht um Datenbankinstanzen selbst kümmern, das Pflegen und Patchen des Betriebssystems in den der DB-Instanzen sowie das Einspielen von Major- und Minor-Updates für die Datenbank selbst übernimmt AWS.
Auf Wunsch erstellt RDS automatisch regelmäßig Backups in Wartungsfenstern, die der Nutzer konfigurieren kann. Hinzu kommt die Möglichkeit, jederzeit Snapshots der kompletten DB-Instanzen in S3 zu speichern.
Bei einem Hardware-Ausfall ersetzt Amazon RDS automatisch die Datenverarbeitungsinstanz, welche die Grundlage der Bereitstellung bildet. Außerdem gilt wie bei EC2, dass die EBS-Volumes selbst innerhalb der Availability Zone (AZ) mehrfach repliziert werden.
Zur Erhörung der Verfügbarkeit kann der Nutzer mit dem von AWS bereitgestellten Feature Multi-AZ mit nur einem Mausklick einen synchronen Standby-Spiegel in einer zweiten Availability Zone erstellen. Ein Failover beim Ausfall der primären DB-Instanz oder AZ findet dann automatisch statt. Dies macht sich RDS auch beim Einspielen von Patches für die primäre DB-Instanz zunutze und minimiert damit deren Downtime. Auch beim vertikalen Skalieren, also dem Offline-Nehmen der primären Instanz, um diese durch einen größeren (EC2-DB)-Instanztyp oder schnelleren Instanzspeicher zu ersetzen, vermeidet Multi-AZ die prinzipiell erforderliche Downtime durch Failover auf das Standby-Replikat.
Zur Erhöhung des Lesedurchsatzes lässt sich zudem das in vielen DB-Engines verfügbare Read-Replica-Feature nutzen. Es erlaubt je nach Datenbank bis zu 5 asynchrone Replikate (15 bei AWS Aurora), die durch den parallelen Read-Zugriff den Lesedurchsatz erhöhen.
Unabhängig von einer quasi-horizontalen Skalierung der Lesekapazität durch Read Replicas kann RDS den verwendeten Instanzspeicher ohne Downtime der Datenbank auf Wunsch auch automatisch vergrößern, wenn man den Instanzspeichertyp SSD mit Provisioned IOPS verwendet. Der Speicher von relationalen Datenbanken, die AWS verwaltetet, kann je nach Instanztyp (vertikal skalieren geht immer) auf bis zu 30000 IOPS erzielen. Sind die Anforderungen und Transaktionsvolumina deutlich höher, muss man nach einer geeigneten NoSQL-Datenbank Ausschau halten.
Leider ist es eine essentielle Eigenschaft von relationalen Datenbanken, dass deren Performance nicht nur vom Workload (OLTP, LTP, Analytics), sondern vor allem von der Art und Qualität der verwendeten Speichergeräte abhängt. Zur Verbesserung der Sicherheit erlaubt RDS auf einfache Weise das Verschlüsseln der Datenbanken sowie auf Wunsch das Verwenden von IAM-Nutzern und -Gruppen anstelle von Konten des DB-internen User-Managements. Dafür richtet es auch ein entsprechendes transparentes Mapping ein.