Die Architektur von „data intensive“ Apps

Die 5 Ebenen einer „data-intensiv“ App

Eine der großen Herausforderungen beim Design einer „datenintensiven Applikation“ ist, nicht den Überblick über seine Architektur zu verlieren. Zu diesem Zweck haben wir eine kleine Zusammenfassung  über das Framework einer solchen Applikation erstellt.

Die Software-Architektur einer solchen App basiert auf den folgenden fünf Ebenen:

Infrastuktur

Hauptbestandteil dieser Ebene ist die Bereitstellung einer skalierbaren und dynamischen Infrastruktur. Dazu werden nicht selten Clouddienste wie Amazon S3 mit on-premise-Infrastruktur kombiniert, um die Kosten für den Betrieb an die Bedürfnisse flexibel anpassen zu können. Continuous Integration (CI) pipelines eigen sich dazu, die Entwicklungen kontinuierlich und automatisiert zu testen. Üblicherweise werden für diese Aufgabe Tools wie zum Beispiel Vagrant, Chef, Puppet und Docker genutzt.

Persistenz

Ziel ist die persistente Speicherung der Daten. Dabei ist es üblich, nicht nur auf eine Technologie zu setzen, sondern zu evaluieren, für welchen Bedarf sich welcher Typ von Datenspeicher am besten eignet. Dazu stehen beispielsweise folgende Datenspeichertypen zur Verfügung:

  • Relationale Datenbank wie MySQL oder PostgreSQL
  • Key/Value-Speicher wie Hadoop oder Redis
  • Spaltenorientierte Datenbanken wie HBase oder Cassandra
  • Dokumentorientierte Datenbanken wie MongoDB oder Couchbase
  • Graph-Datenbanken wie Neo4j

Darüber hinaus muss sich beim Einsatz von verteilten Dateisystemen wie z.B. HDFS oder NFS für eines oder mehrere auf den Use Case abgestimmte Dateiformate entscheiden. Darunter fallen bekannte Formate wie CSV oder JSON, wobei sich diese sich weniger für die Speicherung von Daten im HDFS eignen. Deutlich effizienter ist das speziell für verteilte Dateisysteme entwickelte Serializierungs-Framework Avro oder das spaltenorientierte Dateiformat Parquet und Optimized Row Columnar (ORC).

Integration

Kernelemente der Integration sind die Beschaffung, Transformation, Qualität, Verarbeitung und Steuerung der Daten. Getrieben wird diese Ebene von den fünf C’s:

  • Connect (Verbinden)
    • Ziel ist es, den besten Weg zu finden für das Erheben der Daten aus unterschiedlichsten Datenquellen
  • Correct (Korrigieren)
    • Fokussiert sich auf die Transformation der Daten und die Kontrolle auf Qualität und Konsistenz
  • Collect (Sammeln)
    • Prüfen, welche Daten für die weitere Verarbeitung überhaupt gespeichert werden müssen und in welchem Dateiformat
  • Compose (Zusammenstellen)
    • Ziel ist die Kombination verschiedener Datensätze zur Schaffung eines datengetriebenen Produktes
  • Consume (Gebrauch)
    • Regelt die Verarbeitung und Verfügbarkeit der Daten

Die fünf Schritte beschreiben den Lebenszyklus der Daten.

Dabei stehen folgende Fragestellungen im Fokus:

  • Wie erhalte ich die relevanten Daten?
  • Wie lassen sich diese Daten analysieren?
  • Wie können diese Daten iterativ verfeinert werden?
  • Wie können die relevanten Daten mit weiteren Informationen angereichert werden?
  • Wie müssen die Daten für die Verarbeitung vorbereitet werden?

Analyse

Für die Analyse stehen diverse Tools, Frameworks und Bibliotheken zur Verfügung. Die wohl bekanntesten sind Map Reduce und Spark. Mit diesen Technologien lassen sich die Daten in verschiedenen Modellen, Algorithmen und Machine Learning Pipelines verwenden, um analytische Einblicke zu erhalten. Mit Spark lassen sich viele verschiedene Paradigmen innerhalb des Analyseprozesses umsetzen, und zwar alles vereint in einer einzigen Plattform. Es ermöglicht nicht nur die Verarbeitung von Batchjobs, sondern auch Streams und interaktive Analysen.

Präsentation

Hierbei geht es um die Visualisierung von Daten. Ziel ist es, in für den Endnutzer verständlichen Diagrammen die Information darzustellen, die sich in den Daten verbergen. Dabei soll der Benutzer möglichst dynamisch und interaktiv mit den Charts arbeiten können. Ein Anwendungsbeispiel wäre die Entwicklung eines Frühwarnsystems, welches Alerts an die Stakeholder kommuniziert. Für die Visualisierung existieren zahllose Bibliotheken wie zum Beispiel D3.js, Seaborn, Bokeh uvm.

Autor: David Schenk

Nehmen Sie Kontakt zu uns auf.

0

Tragen Sie Ihren Suchbegriff unten ein und drücken die Enter-Taste