Beschreibung
Die Entwickler von SCAND haben eine aus mehreren Stufen bestehende Datenpipeline implementiert.
Die erste Stufe: Sammlung von den Rohdaten. Um die Kosten für die Berichts-API zu minimieren und sie vor einem unautorisierten Zugriff zu schützen, nutzte das Team für die Web-Entwicklung den Amazon Cognito Service, der sowohl den autorisierten als auch den Gastbenutzern ein differenziertes Berechtigungsmanagement bietet. Berichte von Android-Anwendungen werden auf den Geräten gesammelt und direkt an den S3-Bucket übertragen, wobei der Schreibzugriff vom Cognito-Dienst gesteuert wird. Das ist eine absolut sichere Transaktion, denn es ist unmöglich, die Information aus dem nur für das Schreiben geschützten Amazon S3-Bucket zu stehlen. Die als Ergebnis der oben genannten Operationen empfangenen Daten enthalten eine große Menge von kleinen Berichtsdateien in einem speziellen «Puffer» S3-Bucket.
Die zweite Stufe: Kompression von den Daten. Bevor die Daten in dem Haupt-Bucket gespeichert werden, werden sie in einige viel größere komprimierte Spaltenformat-Dateien konvertiert, die für das teilweise Lesen von Daten optimiert wurden. Die Konvertierung wird mit Hilfe von dem Spark-Code aktiviert. Der Code wird im Hadoop-Cluster von Amazon Web Services EMR Spot Instances ausgeführt, der automatisch gestartet und gestoppt wird. Wir sehen hier die Vorteile, die das AWS Control Panel dem Projekt bringt, da der EMR-Service ein automatisches Hadoop-Cluster-Management ohne Beteiligung von den Ingenieuren bietet.
Die dritte Stufe: Berechnung der Statistik. Ein ähnlicher EMR-basierter Cluster wird von den Ingenieuren von SCAND bei Bedarf manuell gestartet und führt das verteilte Spark-Programm, das die erforderlichen Statistiken berechnet, aus. Die statistische Ausgabe wird in einer großen SQL-Datenbank, die von Amazon gehostet wird, gespeichert. Die statistische Ausgabe enthält mehrere SQL-Tabellen, die für eine Zeitbereichssuche optimiert sind.
Die vierte Stufe: die Präsentation der Statistik. Das Web-Frontend, das auf dem Apache Tomcat läuft, verwendet die D3 JavaScript Bibliothek, um die Diagramme basierend auf den Ergebnissen der in der SQL-Datenbank gespeicherten und nach bestimmten Kriterien ausgewählten Daten zu zeichnen.