Gorodenkoff - stock.adobe.com

Amazon ElastiCache einrichten und optimal bereitstellen

Amazon ElastiCache ist ein verteilter In-Memory-Datenspeicher. Der Service bietet zwei Optionen: man kann mit einem Serverless-Cache beginnen oder einen Cache-Cluster entwerfen.

Amazon ElastiCache ist ein vollständig verwalteter In-Memory-Datenspeicher und Cache-Dienst von AWS, der für schnelle Datenabrufzeiten optimiert ist. Indem Daten im Arbeitsspeicher statt auf Festplatten gespeichert werden, erreicht ElastiCache eine erhebliche Leistungssteigerung und minimiert die Latenz.

Amazon ElastiCache eignet sich für Anwendungen mit hohen Anforderungen an die Geschwindigkeit, wie Websession-Management, Echtzeitanalysen und Gaming-Leaderboards. Die Nutzung des Services verbessert die Benutzererfahrung durch kürzere Ladezeiten und entlastet Backend-Systeme, indem häufig abgerufene Daten direkt aus dem Speicher bereitgestellt werden.

Welche Technologien unterstützt Amazon ElastiCache?

ElastiCache unterstützt Memcached und Redis, die unterschiedliche Anwendungsfälle adressieren:

  • Memcached eignet sich für die Zwischenspeicherung großer Datenblöcke in dynamischen Webanwendungen.
  • Redis bietet erweiterte Funktionen für komplexe Datentypen, Replikation und hohe Verfügbarkeit, was es für Messaging-Systeme oder Echtzeitanalysen geeignet macht.

Ein zentraler Vorteil von ElastiCache ist seine hohe Verfügbarkeit und Zuverlässigkeit. Der Dienst repliziert Daten über mehrere Knoten und Verfügbarkeitszonen hinweg, wodurch Ausfälle einzelner Komponenten abgefangen werden können. Dies ermöglicht eine konsistente Leistung und verhindert Datenverluste. Darüber hinaus skaliert ElastiCache dynamisch, um die Anforderungen der Arbeitslast zu erfüllen. Die Auto-Scaling-Funktion passt die Kapazität automatisch an, was Kosten einspart und die Ressourcenauslastung optimiert.

ElastiCache: erste Schritte
Abbildung 1: ElastiCache kann Webanwendungen und Datenanalysen beschleunigen.

Amazon ElastiCache einrichten

Die Einrichtung von Amazon ElastiCache ist einfach und schnell umsetzbar. Zunächst wird im AWS-Managementkonsole eine ElastiCache-Instanz erstellt, wobei man zwischen Memcached und Redis auswählt. Danach werden die Konfigurationsparameter wie Clustergröße, Verfügbarkeitszonen und Sicherheitsgruppen definiert. Anschließend wird der Dienst mit der gewünschten Anwendung integriert, indem die Cache-Endpunkte in der Anwendungskonfiguration hinterlegt werden. Mit diesen Einstellungen wird der Cache aktiviert, und die Daten können für die Anwendung bereitgestellt werden. ElastiCache skaliert anschließend automatisch mit der Arbeitslast, um eine optimale Leistung zu gewährleisten.

Amazon ElastiCache und Redis
Abbildung 2: Amazon ElastiCache und Redis einrichten.

Amazon ElastiCache bietet dazu zwei zentrale Bereitstellungsoptionen. Serverless Cache ist eine vollständig verwaltete Lösung, bei der AWS die gesamte Infrastruktur, einschließlich Skalierung, Hardwarekonfiguration und Ressourcenzuweisung, automatisch übernimmt. Diese Option eignet sich für Anwendungen mit unvorhersehbarem oder stark schwankendem Datenverkehr, da sie automatisch auf Lastspitzen reagieren kann, ohne dass manuelle Eingriffe erforderlich sind. Mit der automatischen Skalierung reduziert Serverless Cache die Komplexität der Verwaltung, da weder Nodes, Shards noch Replikas konfiguriert werden müssen. Zudem erfolgt die Abrechnung nach einem Pay-as-you-go-Modell, sodass nur die tatsächlich genutzten Ressourcen berechnet werden. Diese Option ist besonders vorteilhaft für Entwicklerteams, die eine schnelle und unkomplizierte Bereitstellung suchen, ohne sich um Infrastrukturmanagement kümmern zu müssen.

Im Gegensatz dazu bietet Design Your Own Cache eine vollständige Kontrolle über die Konfiguration und Verwaltung der Cache-Infrastruktur. Diese Option ermöglicht es, die Anzahl der Nodes, Shards und Replikas manuell anzupassen und spezifische Anforderungen wie Cluster Mode Enabled oder Cluster Mode Disabled zu definieren. Beide Modi, Cluster und Non-Cluster, können bei Redis und Memcached verwendet werden. Diese Bereitstellungsart ist optimal für Organisationen mit vorhersagbarem Datenverkehr und spezialisierten Teams, die maßgeschneiderte Lösungen entwickeln möchten, um die Leistung ihrer Anwendungen zu optimieren. Unternehmen profitieren hier von einer feineren Kontrolle, die es erlaubt, die Infrastruktur genau auf die Anforderungen der Anwendung zuzuschneiden.

Die Wahl zwischen den beiden Optionen hängt maßgeblich von der Art der Anwendung und den betrieblichen Anforderungen ab. Serverless Cache überzeugt durch einfache Handhabung und automatische Skalierung, während Design Your Own Cache für Nutzer ideal ist, die maximale Anpassungsfähigkeit und Kontrolle benötigen.

Cluster in Amazon ElastiCache einrichten
Abbildung 3: Ein Cluster in Amazon ElastiCache einrichten.

Optimierung von Sitzungsdaten und Benutzererfahrungen

Amazon ElastiCache eignet sich für die Verwaltung von Sitzungsdaten, insbesondere in Architekturen mit Elastic Load Balancing. In solchen Szenarien kann ElastiCache zum Beispiel Daten wie Warenkörbe in Online-Shops zwischenspeichern. Statt Sitzungsinformationen auf EC2-Instanzen zu speichern, was durch die dynamische Lastverteilung des Load Balancers zu Datenverlusten führen kann, oder auf langsamere Datenbanken wie Amazon Relational Database Service (RDS) zuzugreifen, ermöglicht ElastiCache einen schnellen und zuverlässigen Zugriff auf Sitzungsdaten.

Durch seine niedrige Latenz sorgt ElastiCache dafür, dass Benutzer auch bei einem Seiten- oder App-Refresh nahtlos auf ihre Daten zugreifen können. Dieses Prinzip optimiert nicht nur die Performance, sondern verhindert auch eine schlechte Benutzererfahrung, da Daten konsistent und ohne Verzögerung bereitgestellt werden. ElastiCache balanciert so die Anforderungen zwischen Geschwindigkeit und der Notwendigkeit von Datenpersistenz aus, indem es flüchtige Daten effizient verwaltet.

Valkey mit Amazon ElastiCache einsetzen

Valkey ist eine häufig genutzte Struktur für Schlüssel-Wert-Speicher, die sich mit Amazon ElastiCache kombinieren lässt, um leistungsstarke und skalierbare Lösungen zu entwickeln. In einem Valkey-Setup fungiert der Schlüssel (Key) als eindeutiger Bezeichner für einen Wert (Value), der in einem schnellen In-Memory-Datenspeicher wie Redis oder Memcached gespeichert wird. 

Amazon ElastiCache Dashboard
Abbildung 4: Über das Dashboard von ElastiCache lassen sich verschiedene Einstellungen vornehmen.

Mit Amazon ElastiCache können Valkey-Daten effizient verwaltet werden, indem häufig abgerufene Schlüssel-Wert-Paare im Cache gehalten werden. Dies reduziert die Last auf der Hauptdatenbank und verkürzt die Antwortzeiten. Zudem erlaubt die Verwendung von Redis in ElastiCache zusätzliche Funktionen wie das Setzen von Ablaufzeiten für Schlüssel, was sicherstellt, dass nur aktuelle und relevante Daten im Speicher verbleiben. Valkey-Strukturen werden häufig in Anwendungsfällen wie Benutzerprofilen, Sitzungsdaten oder dynamischen Inhalte verwendet, bei denen schneller Zugriff und hohe Verfügbarkeit entscheidend sind. Durch die Integration mit ElastiCache kann Valkey seine Stärken in modernen Cloud-Anwendungen ausspielen.

Cluster Mode Enabled versus Cluster Mode Disabled in Amazon ElastiCache

Amazon ElastiCache bietet für Redis zwei Betriebsmodi: Cluster Mode Enabled und Cluster Mode Disabled. Diese Modi bestimmen, wie Daten gespeichert, verteilt und verwaltet werden, und richten sich nach den spezifischen Anforderungen an Skalierbarkeit, Datenmenge und Verfügbarkeit.

Cluster Mode Enabled ermöglicht die horizontale Skalierung durch die Aufteilung von Daten über mehrere Shards. Jeder Shard repräsentiert eine logische Partition des gesamten Datensatzes und enthält einen Primärknoten sowie bis zu fünf Replikationsknoten. Die Daten eines großen Clusters werden dabei gleichmäßig auf die Shards verteilt, was eine effektive Verwaltung großer Datenmengen und eine hohe Leistung auch bei massivem Datenverkehr gewährleistet.

Durch die Sharding-Mechanik wird die Datenverarbeitung parallelisiert, sodass Lese- und Schreiboperationen auf mehrere Knoten verteilt werden. Dies steigert die Gesamtleistung. Zudem gewährleisten die Replikationsknoten eine hohe Verfügbarkeit, indem sie bei einem Ausfall des Primärknotens nahtlos dessen Rolle übernehmen können. Cluster Mode Enabled ist daher ideal für Anwendungen, die große Datenmengen verarbeiten und eine horizontale Skalierbarkeit benötigen.

Cluster Mode Disabled hingegen verwendet einen einzigen Shard, der den gesamten Datensatz enthält. Innerhalb dieses Shards gibt es ebenfalls einen Primärknoten und optionale Replikationsknoten. Dieser Modus eignet sich für kleinere Datenmengen oder Anwendungen, die keine Datenpartitionierung erfordern. Obwohl Cluster Mode Disabled einfacher zu konfigurieren ist, bietet er weniger Skalierungsmöglichkeiten. Die vertikale Skalierung erfolgt durch die Zuweisung von mehr Ressourcen an den einzelnen Primärknoten, was jedoch bei großen Datenmengen schnell an seine Grenzen stößt.

Die Wahl zwischen diesen Modi hängt von der Art der Anwendung und deren Anforderungen ab. Cluster Mode Enabled bietet Vorteile für datenintensive Anwendungen mit hohem Traffic, da die Last gleichmäßig verteilt wird und die Skalierbarkeit nahezu unbegrenzt ist. Cluster Mode Disabled ist dagegen besser geeignet für einfache Anwendungen oder Szenarien mit überschaubarem Datenvolumen, bei denen die Verwaltung weniger komplex sein soll.

Einrichtung eines Redis-Clusters mit Amazon ElastiCache

Um ein Redis-Cluster einzurichten, wird zunächst ein Setup mit Cluster Mode Enabled gewählt, um Daten effizient über mehrere Knoten zu verteilen. Dies verbessert die Performance durch horizontale Skalierbarkeit, da bis zu 500 Shards zur Datenpartitionierung genutzt werden können. Jeder Shard enthält einen Primärknoten für Schreiboperationen und optional Replikationsknoten für Lese-Anforderungen und Ausfallsicherheit. Die Konfiguration umfasst die Auswahl der Shard-Anzahl, der Anzahl der Replikate sowie die Speicherkapazität der Knoten. Für die Netzwerksicherheit wird ein VPC-Subnetz mit spezifischen Sicherheitsgruppen und geöffneten Ports wie 6379 für Redis eingerichtet.

Nach der Cluster-Konfiguration wird eine EC2-Instanz erstellt, um auf den Redis-Cluster zuzugreifen. Über die Instanz werden die notwendigen Pakete wie GCC und Redis installiert, da Redis als Open-Source-Lösung ausgeliefert wird und zunächst kompiliert werden muss. Nach der Installation wird die Instanz mit dem Redis-Cluster verbunden. Hierbei wird der Redis-Endpunkt mit Port 6379 in der Instanz hinterlegt. Über die Befehlszeile können anschließend Testdaten im Cluster gespeichert, abgerufen und gelöscht werden. Beispiele umfassen das Speichern eines Schlüssel-Wert-Paares oder das Festlegen von Ablaufzeiten, um sicherzustellen, dass nur aktuelle Daten im Cache verbleiben.

Die Redis-Cluster-Einrichtung bietet einige Vorteile. Häufig abgefragte Daten werden direkt aus dem Speicher bereitgestellt, was die Latenz reduziert, und die Hauptdatenbank entlastet. Die Möglichkeit, Ablaufzeiten für Daten festzulegen, stellt sicher, dass veraltete Informationen automatisch entfernt werden, was insbesondere bei dynamischen Datenquellen von Vorteil ist. Diese Kombination aus Geschwindigkeit, Skalierbarkeit und Flexibilität macht Redis mit Amazon ElastiCache zu einer guten Option für datenintensive Anwendungen.

Datenabfragen mit ElastiCache und Relational Database Service (RDS)

Amazon ElastiCache spielt eine entscheidende Rolle bei der Optimierung von Datenabfragen in Systemen, die auf relationalen Datenbanken wie Amazon Relational Database Service (RDS) basieren. In einer typischen Architektur, die sowohl RDS als auch ElastiCache verwendet, dient der Cache als schnelle Zwischenspeicherebene zwischen den Anwendungen und der Datenbank. Wird eine Abfrage gestellt, prüft ElastiCache zunächst, ob die entsprechenden Daten bereits im Speicher vorhanden sind. Ist dies der Fall, liefert ElastiCache die Ergebnisse sofort zurück, wodurch die Abfragezeiten auf Mikrosekunden reduziert werden. Sind die angefragten Daten noch nicht im Cache, leitet ElastiCache die Abfrage an die Datenbank weiter, speichert das Ergebnis jedoch für zukünftige Anfragen zwischen. Dadurch wird die Datenbank entlastet, insbesondere bei wiederholten Abfragen, da diese nicht erneut verarbeitet werden müssen.

Dieses Prinzip ist besonders in Szenarien nützlich, in denen Anwendungen eine hohe Abfragefrequenz haben, wie etwa bei Echtzeit-Datenanalysen, Transaktionsverarbeitungen oder umfangreiche E-Commerce-Anwendungen. Ein typisches Beispiel ist der Umgang mit Warenkorbdaten in Online-Shops. Anstatt bei jedem Benutzerzugriff die Daten aus einer relationalen Datenbank abzurufen, speichert ElastiCache die Warenkorbinhalte für die Dauer der Sitzung. Dies verbessert nicht nur die Benutzererfahrung durch schnelle Ladezeiten, sondern verhindert auch unnötige Datenbankzugriffe.

Die Verwendung von ElastiCache bietet zudem Vorteile bei der Skalierbarkeit. Während Datenbanken wie RDS mit wachsendem Abfragevolumen und steigender Nutzeranzahl an ihre Leistungsgrenzen stoßen, fängt ElastiCache die Spitzenlast ab. Indem häufig genutzte Daten im Speicher gehalten werden, bleiben die Antwortzeiten selbst bei hoher Last niedrig.

Die Konfiguration von ElastiCache in Kombination mit RDS erfordert nur minimale Anpassungen in der bestehenden Architektur. Nach der Integration wird der Cache automatisch mit relevanten Daten gefüllt und synchronisiert, was den Verwaltungsaufwand gering hält.

Ein weiterer Vorteil von ElastiCache zeigt sich bei der Verarbeitung von komplexen Abfragen, die häufig zeitkritisch sind. Anwendungen wie Echtzeit-Streaming, Leaderboards in Online-Spielen oder hochdynamische Dashboards profitieren von der schnellen Datenbereitstellung. Hierbei ermöglicht es ElastiCache, die Antwortzeiten zu reduzieren, da die Daten direkt aus dem Arbeitsspeicher bereitgestellt werden und nicht erst aus der Datenbank abgerufen werden müssen. Dies sorgt nicht nur für eine effizientere Nutzung der Ressourcen, sondern auch für eine erhebliche Verbesserung der Skalierbarkeit und Gesamtleistung des Systems.

Dynamische Aktualisierung und Ablauf von zwischengespeicherten Daten

Amazon ElastiCache ermöglicht nicht nur eine Leistungssteigerung durch schnelles Abrufen von Daten aus dem Cache, sondern sorgt auch für die dynamische Aktualisierung dieser Daten. Ein entscheidender Vorteil ist die Möglichkeit, die Gültigkeitsdauer von Cache-Daten durch Time-to-Live-Werte (TTL) zu steuern. Beim Zwischenspeichern von Abfrageergebnissen speichert ElastiCache die Daten zunächst im Cache, um sie bei nachfolgenden Anfragen direkt und ohne Zugriff auf die Datenbank bereitzustellen. Allerdings kann dies zu Inkonsistenzen führen, wenn sich die zugrunde liegenden Daten in der Datenbank ändern. Hier setzt die TTL-Funktion an, indem sie sicherstellt, dass Daten nach einer definierten Zeitspanne automatisch aus dem Cache entfernt werden.

Dieser Ansatz verhindert, dass veraltete Informationen an Anwendungen zurückgegeben werden, insbesondere bei dynamischen Datenquellen wie Echtzeit-Bestandsverfolgungen oder Benutzerprofilen. Ein Beispiel: Führt ein Nutzer eine SQL-Abfrage in einer MySQL-Datenbank aus, und sind die Ergebnisse noch nicht im Cache vorhanden, wird die Abfrage zunächst an die Datenbank gesendet. Das Ergebnis wird anschließend im Cache gespeichert und der Benutzer erhält die Daten. Dank TTL wird dieses Ergebnis jedoch nur für eine festgelegte Zeit, beispielsweise 30 Sekunden, zwischengespeichert. Nach Ablauf dieser Zeit wird die Abfrage erneut an die Datenbank geleitet, um aktualisierte Daten zu erfassen, die wiederum im Cache gespeichert werden.

Mit der Redis-Befehlssyntax lässt sich der Ablaufzeitpunkt einer zwischengespeicherten Information festlegen. Beispielsweise kann mit dem Befehl EXPIRE key 30 sichergestellt werden, dass der zugehörige Schlüssel nach 30 Sekunden aus dem Cache entfernt wird. Möchte man die verbleibende Gültigkeitsdauer eines Schlüssels prüfen, ermöglicht der Befehl TTL key einen schnellen Überblick.

Solche Mechanismen sind wichtig, um die Konsistenz zwischen Cache und Datenbank zu gewährleisten und gleichzeitig die Systemleistung durch reduzierte Datenbankabfragen zu optimieren. Durch die dynamische Verwaltung des Cache-Inhalts sorgt ElastiCache dafür, dass stets aktuelle und relevante Daten bereitgestellt werden, ohne die Geschwindigkeit der Datenbereitstellung zu beeinträchtigen.

Erfahren Sie mehr über Cloud-Software