2. Mai 2024 von Yannik Rust
Big Data Streaming mit AWS: Architektur Design
Im Zeitalter der digitalen Innovation und der datengestützten Entscheidungsfindung ist die effiziente Verarbeitung und Analyse von Daten zu einem entscheidenden Wettbewerbsvorteil geworden. Insbesondere in dynamischen Umgebungen, in denen Informationen in Echtzeit den Unterschied zwischen Erfolg und Misserfolg ausmachen können, ist Big Data Streaming zu einem unverzichtbaren Werkzeug geworden.
Amazon Web Services (AWS) bietet eine breite Palette von Diensten und Tools, mit denen Unternehmen Daten in Echtzeit erfassen, verarbeiten und analysieren können. Von der Erfassung großer Datenmengen bis hin zur Generierung wertvoller Einblicke in Echtzeit bietet AWS eine robuste Infrastruktur und skalierbare Lösungen für Streaming-Anwendungsfälle.
In diesem Blog-Beitrag werfen wir einen genaueren Blick auf das Architekturdesign für Streaming mit AWS mit einem Fokus auf Big Data. Wir werden die verschiedenen Komponenten und Services untersuchen, die zur Entwicklung einer leistungsstarken und zuverlässigen Streaming-Architektur beitragen, und Best Practices und Empfehlungen zur Optimierung Ihrer Streaming-Lösung diskutieren.
Big Data
Big Data bezieht sich auf die enormen Datenmengen, die in unserer modernen, digitalisierten Welt erzeugt werden. Diese Daten umfassen nicht nur strukturierte Informationen, die leicht in traditionellen Datenbanken organisiert werden können, sondern auch unstrukturierte Daten wie Texte, Bilder, Videos und Audiodateien. Das Besondere an Big Data ist nicht nur die schiere Menge der Daten, sondern auch die Vielfalt der Quellen, aus denen sie stammen.
Big Data wird oft durch die 3V's charakterisiert:
- Volume bezieht sich auf die große Menge an Daten, die täglich generiert wird.
- Velocity beschreibt die Geschwindigkeit, mit der diese Daten erzeugt, gesammelt und verarbeitet werden.
- Variety bezieht sich auf die verschiedenen Arten von Daten, die aus unterschiedlichen Quellen stammen.
Diese Eigenschaften machen Big Data zu einer Herausforderung, aber auch zu einer großen Chance für Unternehmen und Organisationen, da sie wertvolle Einblicke liefern können, die mit traditionellen Analysemethoden oft nicht möglich sind.
Streaming
Streaming-Daten sind eine wesentliche Komponente im Zeitalter der Echtzeitkommunikation und -analyse. Im Gegensatz zu statischen Datensätzen, die in Batch-Systemen verarbeitet werden, werden Streaming-Daten kontinuierlich und in Echtzeit erzeugt, übertragen und verarbeitet. Diese Datenströme können aus einer Vielzahl von Quellen stammen, darunter IoT-Geräte, Sensoren, soziale Medien, Webanwendungen und vieles mehr. Die Fähigkeit, diese Daten in Echtzeit zu verarbeiten und zu analysieren, ermöglicht es Unternehmen, sofortige Einblicke in sich schnell entwickelnde Ereignisse und Trends zu gewinnen. Durch die Nutzung von Streaming-Daten können Unternehmen schneller reagieren und fundiertere Entscheidungen treffen.
Big Data Streaming Use Cases
Big Data Streaming bietet eine Vielzahl von Anwendungsfällen in verschiedenen Branchen:
- Netzwerküberwachung und Sicherheit: Die kontinuierliche Analyse von Netzwerkdaten in Echtzeit ermöglicht es, verdächtige Aktivitäten zu erkennen, Sicherheitsbedrohungen zu identifizieren und schnell darauf zu reagieren.
- Überwachung von Finanztransaktionen: In der Finanzbranche ermöglicht Big Data Streaming die Überwachung von Transaktionen in Echtzeit, um betrügerische Aktivitäten aufzudecken und zu verhindern, indem verdächtige Muster sofort erkannt und untersucht werden.
- Echtzeitanalyse von Kundendaten im Einzelhandel: Durch die Analyse von Streaming-Daten über das Kaufverhalten können Einzelhändler das Verhalten ihrer Kunden in Echtzeit verstehen und personalisierte Angebote und Empfehlungen unterbreiten, um die Kundenzufriedenheit zu erhöhen und den Umsatz zu steigern.
- Echtzeit-Log-Analyse und Fehlererkennung: Durch die Analyse von Log-Daten in Echtzeit können Unternehmen potenzielle Probleme und Fehler in Anwendungen und Systemen identifizieren, um schnell Lösungen zu implementieren und die Betriebszeit zu maximieren.
Streaming-Architektur mit AWS-Diensten
Um Streaming-Daten für Analysen nutzbar zu machen, müssen diese zunächst gesammelt, gespeichert und gegebenenfalls transformiert werden. Es gibt eine Vielzahl von Möglichkeiten und Technologien, um diese Ziele zu erreichen. Sowohl Open-Source-Produkte als auch Plattform-as-a-Service- oder Software-as-a-Service-Lösungen können hier zum Einsatz kommen. Die Anwendungsbereiche sind nicht auf die Cloud beschränkt. Abhängig vom Anwendungsfall, den Datenschutzrichtlinien und den zu erwartenden Kosten kann es sinnvoller sein, Streaming-Daten auch auf On-Premise-Plattformen zu verarbeiten. Dennoch bieten Cloud-Dienste wie AWS erhebliche Vorteile hinsichtlich Verfügbarkeit, Skalierbarkeit und dem Angebot von Managed Services. Auch für Streaming Use Cases bietet AWS eine große Vielfalt an Services, die für die unterschiedlichsten Prozessschritte bei der Verarbeitung von Streaming-Daten genutzt werden können. Im folgenden Abschnitt werde ich ein Beispiel für ein Architekturdesign vorstellen, das den oben genannten Zweck erfüllt. Dies ist ein Beispiel und sollte nicht als endgültige Lösung für jeden Streaming-Anwendungsfall angesehen werden. Bei der Auswahl der Dienste gibt es oft mehrere Möglichkeiten und es sollte sorgfältig abgewogen werden, welche Dienste für das gewünschte Ergebnis am besten geeignet sind.
Nachfolgend ist die Beispielarchitektur als Diagramm dargestellt. Hier werden vier AWS Managed Services verwendet. In den folgenden Abschnitten werden diese Services und die zugehörigen Prozessschritte näher erläutert.
Kinesis - Datenerfassung
Um Streaming-Daten für Analysezwecke zugänglich zu machen, ist die Erfassung aus den entsprechenden Quellsystemen unerlässlich. In diesem Zusammenhang erweist sich der AWS Kinesis Data Firehose-Dienst als wertvolles Werkzeug. Firehose ist ein leistungsstarker Dienst, der Streaming-Daten einfach und nahtlos erfasst, transformiert und an verschiedene AWS-Speicher- und Analyseziele liefert. Nutzerinnen und Nutzer können Daten aus einer Vielzahl von Quellen in Echtzeit erfassen, ohne sich Gedanken über Infrastrukturmanagement oder Skalierbarkeit machen zu müssen. Die Quellen können andere AWS-Dienste wie CloudWatch, EventBridge, Kinesis Data Stream oder Lambda sein. Darüber hinaus kann die Firehose-API über ein SDK direkt angesprochen werden, um externe Software und Infrastruktur wie IoT- oder Netzwerkgeräte anzubinden.
Aufgrund seiner nahtlosen Skalierbarkeit eignet sich Kinesis Firehose auch hervorragend für die Verarbeitung großer Datenmengen. Darüber hinaus ermöglicht der Dienst die einfache Konfiguration von Datenlieferungen an verschiedene AWS-Speicherorte wie Amazon S3, Amazon Redshift, Amazon Elasticsearch Service und Amazon OpenSearch Service, wodurch die Daten sofort für Analysen, Berichte und andere Geschäftsanwendungen zur Verfügung stehen.
In unserer Beispielarchitektur werden die Daten von AWS Kinesis Data Firehose erfasst und pro eingehendem Ereignis als JSON-Datei in einem S3-Bucket gespeichert. Die Speicherung erfolgt zeitpartitioniert, wobei der Zeitpunkt des Dateneingangs als Dateiname für die Speicherung verwendet wird. Dadurch können die verschiedenen Events im Nachhinein besser verarbeitet werden. Als Speicherformat wird häufig das standardisierte Hadoop-Format verwendet:
/year=2023/month=03/day=26/hour09.json
S3 - Speicherung
Wie oben erwähnt, wird für die Speicherung der Amazon Simple Storage Service (S3) verwendet. S3 ist ein hochskalierbarer Cloud-Speicherdienst von AWS, der große Datenmengen sicher und kostengünstig speichert. S3 bietet eine zuverlässige Infrastruktur, die es den Nutzern ermöglicht, Daten in Form von Objekten in beliebiger Menge und Größe hochzuladen und zu speichern. Dieser Dienst ist ideal für Big Data und Streaming-Daten, da er hohe Verfügbarkeit und Langlebigkeit bietet und eine einfache Integration mit anderen AWS-Diensten ermöglicht.
Für Big-Data-Anwendungen bietet S3 die Möglichkeit, große Datenmengen effizient zu speichern und darauf zuzugreifen, was eine wichtige Voraussetzung für die Analyse und Verarbeitung von Daten ist. Durch die nahtlose Integration mit AWS Kinesis Services können Streaming-Daten direkt in S3 gespeichert werden.
Für die Speicherung großer Mengen unstrukturierter Daten, wie sie bei Big Data anfallen, gibt es verschiedene Architekturprinzipien. Eines der am weitesten verbreiteten ist das Konzept der Data Lakes. Ein Data Lake ist dabei eine zentrale Speicherumgebung, die es Unternehmen ermöglicht, eine Vielzahl von strukturierten und unstrukturierten Daten in ihrem nativen Format zu speichern, ohne diese vorher transformieren zu müssen.
Darüber hinaus ist es sinnvoll, in einem Data Lake verschiedene Ebenen/Zonen je nach Qualität der Daten einzuführen. Üblicherweise werden die folgenden 3 Zonen verwendet:
- 1. Landing Zone (Erfassungszone): In dieser Zone werden Rohdaten aus verschiedenen Quellen gesammelt und in ihrem nativen Format gespeichert. Die Daten werden hier unverändert gespeichert, ohne dass strukturelle Änderungen oder Transformationen vorgenommen werden. Die Landing Zone dient als Eingangstor für neue Daten und ermöglicht eine schnelle und einfache Datenerfassung.
- 2. Staging Zone (Vorbereitungszone): In dieser Zone werden die Rohdaten aus der Landing Zone zwischengespeichert und aufbereitet, um sie für Analysen und andere Verarbeitungsprozesse vorzubereiten. Hier können Daten bereinigt, strukturiert und mit Metadaten angereichert werden, um ihre Qualität und Zugänglichkeit zu verbessern.
- 3. Data Consumption Zone: Diese Zone ist der Hauptbereich, in dem Datenanalysten, Wissenschaftler und andere Nutzerinnen und Nutzer auf die aufbereiteten Daten zugreifen und sie für Analysen, Berichte, maschinelles Lernen und andere Geschäftsanwendungen nutzen können. Hier werden die Daten in einem formatierten und benutzerfreundlichen Zustand präsentiert, um ihren Wert zu maximieren und fundierte Entscheidungen zu unterstützen.
Bei der Speicherung von Big Data Streaming-Daten ist die Anwendung des Data Lake sowie der 3-Zonen-Architektur von großer Bedeutung. Der AWS S3 Service bietet hier verschiedene Funktionalitäten zur Umsetzung dieser Konzepte. Hier kann pro Zone ein Bucket angelegt werden, wodurch eine Trennung möglich ist. In unserem Beispiel wurden die Daten von Kinesis Data Firehose in der Landing Zone abgelegt. Hier können sie nun von anderen Services verarbeitet und angereichert werden.
Glue - Transformation
Um die Rohdaten aus der Landing Zone für weitere Analyseschritte nutzbar zu machen, müssen sie transformiert werden. Die Transformation ist der Schritt, bei dem die extrahierten Daten in das gewünschte Zielformat oder Schema überführt werden, um sie für Analysen, Berichte oder andere Anwendungen vorzubereiten. Dabei können verschiedene Arten von Transformationen durchgeführt werden, wie beispielsweise das Bereinigen von Daten, das Zusammenführen von Daten aus verschiedenen Quellen, das Aggregieren von Daten, das Umwandeln von Datenformaten oder das Anreichern von Daten mit zusätzlichen Informationen.
In der AWS Cloud stehen verschiedene Dienste für diesen Schritt zur Verfügung, einer der umfassendsten ist AWS Glue. Mit Glue können Nutzerinnen und Nutzer Daten aus verschiedenen Quellen extrahieren, transformieren und in verschiedene AWS-Speicher- und Analyseziele laden, ohne sich um die Bereitstellung und Verwaltung der Infrastruktur kümmern zu müssen. Der Dienst bietet vorgefertigte Konnektoren für gängige Datenquellen und -ziele sowie eine visuelle Benutzeroberfläche für die Erstellung und Ausführung von ETL-Jobs.
Glue bietet eine Vielzahl von Funktionen, um die Datenverarbeitung zu vereinfachen. Unter anderem können mit sogenannten Glue Crawlern Datenkataloge auf S3 erstellt werden, um einen Überblick über die vorhandenen Daten zu erhalten. Für die Transformation können Python- und Pyspark-Skripte erstellt und über Glue serverlos ausgeführt und mit Glue-Jobs eingeplant werden. Mit Glue Studio steht eine grafische Oberfläche zur Verfügung, die das Erstellen, Ausführen und Überwachen von Extraktions-, Transformations- und Ladejobs (ETL) in AWS Glue vereinfacht. Hier können Datentransformations-Workflows visuell erstellt und nahtlos auf der Apache Spark-basierten, serverlosen ETL-Engine von AWS Glue ausgeführt werden.
Für die Referenzarchitektur ist es sinnvoll, Transformationsjobs mit Glue Studio zu erstellen. Diese Jobs können auf AWS gespeichert und periodisch ausgeführt werden. Die Ausführung der Jobs kann zeit- oder ereignisgesteuert erfolgen, zum Beispiel beim Eintreffen neuer Daten. Monitoring-Informationen werden in AWS Glue gespeichert und stehen für Analysezwecke zur Verfügung. Nach der Transformation werden die Daten in der zweiten (Staging) oder dritten (Consumption) Zone in S3 gespeichert.
Quicksight - Auswertung
Nachdem die Streaming-Daten durch den AWS Glue Job für die Analyse aufbereitet und in einem geeigneten Format in der Consumption Zone gespeichert wurden, kann nun der Analyse- und Dashboard-Service „QuickSight“ genutzt werden, um relevante Erkenntnisse aus den Daten zu gewinnen. QuickSight ermöglicht es den Nutzerinnen und Nutzern, interaktive Dashboards und Berichte zu erstellen, um Daten aus verschiedenen Quellen zu analysieren und zu präsentieren, ohne dass aufwändige Codierungen oder komplexe Abfragen erforderlich sind. Der Dienst bietet eine breite Palette von Visualisierungsoptionen, darunter Diagramme, Tabellen, Karten und vieles mehr, um Daten ansprechend und aussagekräftig darzustellen.
Dank der nahtlosen Integration mit anderen AWS-Diensten wie S3, RDS und Redshift können Nutzerinnen und Nutzer Daten direkt aus diesen Quellen importieren und in QuickSight analysieren. Die transformierten Streaming-Daten können mit diesem Dienst in Dashboards visualisiert werden. Bei Änderungen der zugrundeliegenden Daten in Echtzeit werden die Dashboards automatisch angepasst und die Benutzer können durch generierte Alerts über Änderungen oder Überschreitungen von KPIs informiert werden.
Fazit
Die hier vorgestellte Referenzarchitektur für einen Big Data Streaming Use Case verdeutlicht die umfangreichen Möglichkeiten der AWS Services zur effizienten Verarbeitung großer Mengen von Echtzeitdaten und deren Bereitstellung für Analysezwecke, ohne dass sich Unternehmen um die Verwaltung und Skalierung der zugrunde liegenden Infrastruktur kümmern müssen. Zuverlässigkeit, Skalierbarkeit und nahtlose Integration mit anderen AWS-Diensten sind entscheidende Vorteile von AWS Managed Services. Allerdings birgt der Aufbau einer solchen Architektur, die ausschließlich auf AWS-Diensten basiert, auch das Risiko eines Vendor-Lock-ins. Unternehmen, die sich für diese Dienste entscheiden, könnten Schwierigkeiten haben, ihre Infrastruktur auf andere Cloud-Plattformen zu migrieren, was ihre Flexibilität einschränken und eine langfristige Abhängigkeit von AWS schaffen könnte.
Ihr möchtet gern mehr über spannende Themen aus der adesso-Welt erfahren? Dann werft auch einen Blick in unsere bisher erschienenen Blog-Beiträge.