-
Notifications
You must be signed in to change notification settings - Fork 1
1. Systemarchitektur
Für die technische Realisierung des Klima-Dashboards setzen wir auf einen verteilten Ansatz, bei dem wir die folgenden Open-Source-Software-Komponenten miteinander verbinden. Die Aufteilung des Dashboards in mehrere Komponenten hat den Vorteil, dass einzelne Komponenten relativ einfach gewartet und aktualisiert werden können. Außerdem können mit diesem Ansatz komplexe Anwendungsszenarien einfach umgesetzt werden. Dies reduziert dann auch deutlich den Schulungs- und Einarbeitungsaufwand.
Zur Nutzung und Bedienung der einzelnen Komponenten beachten Sie bitte die hier verlinkten Dokumentationen!
Alle Systemkomponenten laufen auf in einer Docker Swarm Umgebung. Docker Swarm eine von Docker entwickelte Technologie für das Orchestrieren und Verwalten von Containern und damit zur einfachen Installation und dem parallelen Betrieb unterschiedlicher Anwendungen. Docker Swarm ist Teil des Docker-Ökosystems und ermöglicht es, Containeranwendungen über mehrere Hosts (Server) hinweg zu verteilen und zu skalieren.
Als Load Balancer und Reverse Proxy kommt außerdem Traefik zum Einsatz. Hier laufen alle eingehenden HTTP(S)-Anfragen auf und werden an die entsprechenden Dienste oder Anwendungen weiterleitet.
Das Hosting erfolgt in einem mit grünem Strom betriebenen Rechnenzentrum. Siehe https://thegreenwebfoundation.org/green-web-check/?url=https://bad-belzig.klima-daten.de
Grundsätzlich lassen sich die im folgenden beschriebenen Komponenten aber in einer Vielzahl unterschiedlicher Hosting-/Systemumgebungen installieren, so dass hier auf die spezifischen Einzelheiten unseres Setups nicht weiter eingegangen werden soll.
- URL: https://node-red.bad-belzig.klima-daten.de/ (Zugriff nur für authorisierte Nutzer:innen)
- Homepage: https://nodered.org
- Lizenz: Apache License 2.0
- Dokumentation: https://nodered.org/docs/
- Installation: https://nodered.org/docs/getting-started/
Node-RED ist ein sogenanntes „Low Code“-Werkzeug um unterschiedliche Sensoren und Computer-Hardware, Cloud-Dienste und Schnittstellen zu verbinden. Über den browserbasierten Editor können auch Nutzer:innen neue Datenquellen erstellen bzw. Daten aus unterschiedlichen Quellen einlesen, dynamisch bearbeiten lassen und zur dauerhaften Speicherung an externe Datenbanken weiterleiten. Die jeweiligen Abläufe („flows“) werden einfach aus vordefinierten Bausteinen per „drag and drop“ zu komplexen Prozessen zusammengestellt. Falls die vorhandenen Bausteine nicht ausreichen, können weitere einfach aus dem Internet heruntergeladen oder ganz neu definiert werden. Node-RED ist gerade im IoT-Bereich sehr verbreitet und bietet damit die besten Aussichten die zahlreichen im Softwareentwicklungsplan genannten Datenquellen, die SenseBox-Sensoren und auch derzeit noch gar nicht absehbare Daten auszulesen. Dabei kann Node-RED nicht nur die jeweiligen Daten selbst verarbeiten, sondern auch die Meta-Informationen der jeweiligen Datenquelle (z.B. ihren Erreichbarkeitsstatus) auswerten. Damit ist Node-RED gleichzeitig für das Service- bzw. Device-Management zuständig.
Um die parallele Arbeit an Node-RED zu ermöglichen wurden mehrere Node-RED-Instanzen installiert. Nur eine dieser Instanzen wird aber produktiv genutzt.
Das konkrete Setup-Script für unsere Node-RED-Instanzen ist unter https://github.com/Klima-Dashboard/data-tools zu finden. Die verschiedenen sog. "Flows" sind unter https://github.com/Klima-Dashboard/data-tools/flows zu finden und unter Übersicht aller Datenvisualisierungen unter bad belzig.klima daten.de verlinkt.
- URL: https://influxdb.bad-belzig.klima-daten.de/ (Zugriff nur für authorisierte Nutzer:innen)
- Homepage: https://www.influxdata.com/products/influxdb
- Lizenz: MIT License
- Dokumentation: https://docs.influxdata.com
- Installation: https://docs.influxdata.com/influxdb/v2.7/install/
Für die Speicherung der in Node-RED erfassten und aufbereiteten Daten nutzen wir InfluxDB. Dieses Datenbanksystem ist speziell für die Erfassung von Zeitreihen („time series“) ausgelegt. InfluxDB ist mit Abstand das beliebteste System für diesen Anwendungszweck und bereits seit fast 10 Jahren am Markt.
Das konkrete Setup-Script für unsere InfluxDB-Instanz ist ebenfalls unter https://github.com/Klima-Dashboard/data-tools zu finden.
- URL: https://grafana.bad-belzig.klima-daten.de/
- Homepage: https://grafana.com/grafana
- Lizenz: GNU Affero General Public License v3.0
- Dokumentation: https://grafana.com/docs/grafana/latest/
- Installation: https://grafana.com/docs/grafana/latest/setup-grafana/installation/
Obwohl InfluxDB auch eine eigene Oberfläche für die Auswertung und Visualisierung der gespeicherten Daten bereitstellt, nutzen wir für diesen Zweck das deutlich mächtigere Grafana. Diese seit 2014 verfügbare Software bietet eine große Bandbreite an Darstellungsformen (wie z.B. Zeitbasierte Graphen, Heatmaps, Linien- und Kreisdiagramme, Ampeldarstellungen , Tabellen, Karten, ...) durch die unterschiedliche (Echtzeit-)Daten hervorragend dargestellt werden können. Einzelne Datenvisualisierungen („panels“) können thematisch zu komplexeren, interaktiven Dashboards zusammengestellt werden. Sowohl einzelne Panele als auch ganze Dashboards können in externe Webseiten (wie die o.g. WordPress-Seite) eingebunden oder in die sozialen Netzwerke geteilt werden. Nutzer:innen können über die Oberfläche eigene Dashboards zusammenstellen oder eigene Datenvisualisierungen generieren.
Eine weitere wichtige Funktion von Grafana sind die „alerts“, durch die bei der Über- oder Unterschreitung von frei definierten Grenzwerten Benachrichtigungen über unterschiedliche Kanäle an unterschiedliche Empfänger gesendet werden können. So könnte z.B. auf unerwartete Umweltereignisse oder den Ausfall einzelner Datenquellen oder Sensoren reagiert werden.
Das konkrete Setup-Script für unsere Grafana-Instanz ist ebenfalls unter https://github.com/Klima-Dashboard/data-tools zu finden.
- URL: https://bad-belzig.klima-daten.de/
- Homepage: https://wordpress.org
- Lizenz: GNU Public License
- Dokumentation: https://wordpress.org/documentation/
- Installation: https://wordpress.org/documentation/category/installation/
Mit einem Marktanteil von über 65% aller CMS-basierten Webseiten ist WordPress das bekannteste Redaktionssystem (CMS) für Webseiten. Im Kontext des Klimadashboards dient es auch hier als allgemeines Redaktionssystem um die Projektstartseite, spezielle Landingpages oder allgemeine Infoseiten (wie das Impressum oder die Datenschutzhinweise) sowie die seitenübergreifende Navigation zu generieren.
Da in Wordpress auch sehr einfach systemfremde Inhalte eingebettet werden können, kann es auch genutzt werden, um umfangreichere Themenseiten oder „Stories“ mit einer Mischung aus redaktionellen Inhalten und dynamischen Datenvisualisierungen (vergleichbar z.B. zu https://interaktiv.tagesspiegel.de/lab/karte-sars-cov-2-in-deutschland-landkreise) zu erstellen. Diese Mischform ist besonders gut geeignet, um die anspruchsvollen Datenvisualisierungen laienfreundlich zu präsentieren und in einem erklärenden Kontext zu setzen.
Über entsprechende Plugins lassen sich in Wordpress einfach Formular-Generatoren einbinden, die für die manuellen Dateneingabe von nicht- maschinenlesbaren Daten genutzt werden können. So können auch sehr einfach zukünftige Mitmachaktionen wie z.B. Citizen Science Projekte umgesetzt werden.
Das konkrete Setup-Script für unsere Wordpress-Instanz ist unter https://github.com/Klima-Dashboard/wordpress zu finden. Auf Wunsch stellen wir auch gerne eine vollständige Kopie
- URL: https://bad-belzig.klima-daten.de/
- Homepage: https://www.webmandesign.eu/portfolio/reykjavik-wordpress-theme/
- Lizenz: GNU Public License v3
- Dokumentation: https://webmandesign.github.io/docs/reykjavik/
- Installation: https://webmandesign.github.io/docs/reykjavik/#installation
Grundlage der grafischen Gestaltung ist das Wordpress-Theme "Reykjavik" erweitert um individuelle Anpassungen.
- URL: https://bad-belzig.klima-daten.de/
- Homepage: https://www.wpbeaverbuilder.com/
- Lizenz: GNU Public License
- Dokumentation: https://docs.wpbeaverbuilder.com/beaver-builder/
- Installation: https://docs.wpbeaverbuilder.com/beaver-builder/getting-started/install
Die Bearbeitung der (meisten) Seiten erfolgt mittel des verbreiteten Page-Builder-Plugin "Beaver Builder", der die Erstellung und Bearbeitung von Seite über ein Drag-and-Drop-Interface erlaubt. Da die Bearbeitung der Inhalte direkt innerhalb des bestehenden Layouts erfolgt, sind Änderungen immer sofort sichtbar.
- URL: https://keycloak.bad-belzig.klima-daten.de/
- Homepage: https://www.keycloak.org
- Lizenz: Apache License 2.0
- Dokumentation: https://www.keycloak.org/guides
- Installation: https://www.keycloak.org/guides#getting-started
Keycloak ist das meistgenutzte Open Source SSO Tool. Es unterstützt alle modernen Authentifizierung- und Authorisierungsprotokolle. Wir nutzen für unsere Services das sogenannte OpenID Protokoll, welches gleichzeitig Authentifizierung (basierend auf OAuth2) als auch Autorisierung beinhaltet und nutzen hierfür Keycloak Identity Provider. Keycloak ist also der zentrale Ort an dem alle unsere Nutzerkonten gespeichert werden, die dann in den verschiedenen Services genutzt werden können. Die verschiedenen Berechtigungen für die einzelnen Services werden ebenfalls bei Keycloak Eingestellt, sodass für einen Account die Rechte für jeden Service genau zugeschnitten werden können. Keycloak besitzt auch noch viele weitere Möglichkeiten, wie das anbinden von anderen Identity Providern (Github, Google, Facebook, ...), Two Factor Authentication, sowie eine Integrierte Oberfläche zur Nutzererstellung und -Verwaltung.
- URL: https://github.com/Klima-Dashboard
- Homepage: https://github.com/Klima-Dashboard
- Dokumentation: https://docs.github.com/de
Für Verwaltung der individuellen Setup-Scripte, der manuell erfassten Daten und diese Dokumentation nutzen wir Github. GitHub ist eine beliebte Webplattform, die Entwicklern und Entwicklerinnen ermöglicht, ihre Softwareprojekte zu hosten, zu verwalten, zu teilen und zusammenzuarbeiten. Es wurde im Jahr 2008 gestartet und hat sich seitdem zu einer der größten Plattformen für Open-Source-Entwicklung und kollaboratives Arbeiten entwickelt.
GitHub erleichtert die Zusammenarbeit an Softwareprojekten erheblich. Mehrere Entwickler können gleichzeitig am Code arbeiten, Änderungen vorschlagen (in Form von Pull Requests) und Feedback geben. Diese Art der kollaborativen Entwicklung fördert Innovation und beschleunigt den Entwicklungsprozess.
GitHub basiert auf dem Versionskontrollsystem Git, das es ermöglicht, Änderungen im Code nachzuverfolgen, zu verwalten und rückgängig zu machen. Dadurch wird es einfacher, den Code in einem konsistenten und organisierten Zustand zu halten. Die Plattform bietet bietet zudem integrierte Tools zur Verfolgung von Problemen und Fehlern. Andere Benutzer können Fehler melden, und das Projektteam kann diese nachverfolgen und entsprechende Lösungen bereitstellen.