Wahlergebnisse als Realtime WebApp in wenigen Tagen?

Stellen Sie sich folgende Situation vor: Eine vorgezogene Gemeinderatswahl findet statt und die Wahlbehörde wünscht sich kurzfristig ein öffentliches Realtime-Dashboard mit den aktuellen Wahlergebnissen. Alle vorläufigen Wahlergebnisse werden im Fünfminuten-Takt angeliefert. Diese Rohdaten sollen dann auf einer öffentlichen Website in Form von aktuellen, interaktiven Grafiken dargestellt werden, um die Bürger live über das Wahlergebnis zu informieren. Die Lösung soll binnen weniger Tage umgesetzt sein. Ist die Entwicklung einer Echtzeit-Web-Applikation in so kurzer Zeit möglich?
Wir zeigen in diesem Blogbeitrag, wie dies gelingen kann – am Beispiel des skizzierten Use-Cases und mithilfe von fünf Leitfragen. Ihre Beantwortung ermöglicht es, für das geplante Vorhaben geeignete Tools zu wählen und diese intelligent zu verknüpfen – Technology follows business.
#1 Wie werden die Daten verarbeitet?
Für das initiale Data Engineering stellen sich die zentralen Fragen:
- Welche Daten werden geliefert?
- Auf welche Weise?
- Und wie oft?
Komplexe und wechselnde Datenstrukturen sowie eine hohe Frequenz der Datenlieferung sind hierbei übliche Herausforderungen. Mit ihnen steigt der Komplexitätsgrad der IT-Lösung.
Im konkreten Use-Case wird die Microsoft Azure Cloud als Technologiebasis gewählt. Alle notwendigen Services sind in der reinen Cloud-Applikation vorhanden.
Alle fünf Minuten wird die Datei mit den vorläufigen Wahlergebnissen auf einen BLOB-Storage geladen. Ein Python-Script liest und verarbeitet diese Daten. Für die interaktive Bedienung der WebApp wird ebenfalls Phyton eingesetzt. Die Applikation läuft als Docker Container in einer WebApp.
#2 Wie werden die Ergebnisse dargestellt?
Für eine anschauliche Visualisierung der Ergebnisse soll die WebApp auf der Website eingebunden werden. Dabei stellen vor allem sehr interaktive und responsive Websites eine Herausforderung dar. Filter- und Analysemöglichkeiten oder komplexe Menüführungen sollten sich auch in der WebApp-Lösung widerspiegeln. Im mobilen Zeitalter gilt es außerdem zu berücksichtigen, dass die WebApp vermutlich nicht nur auf dem Desktop, sondern auch auf mobilen Geräten aufgerufen wird.
Im konkreten Use-Case reichert die Python-Applikation die Rohdaten mit entsprechenden Style-Tags und Formatierungen an und generiert individuelle Grafiken als Dash-Responsive. Auf diese Weise ist eine ansprechende Darstellung sowie eine intuitive Bedienung der WebApp gewährleistet.
#3 Wie kommt die Applikation ins öffentliche Netz?
Benutzer erwarten heute von Internetseiten und Apps eine gesicherte Verfügbarkeit sowie stabile und schnelle Zugriffszeiten. Insbesondere bei Projekten mit einer sehr hohen Öffentlichkeitswirksamkeit ist eine schnelle, sichere und stabile IT-Lösung extrem wichtig. Zudem empfiehlt sich für den gesicherten Betrieb ein automatisiertes Monitoring der WebApp.
In unserem Use-Case wird die Applikation in einen Docker Container verpackt und auf die Azure Cloud gepushed. Die WebApp holt sich das Docker-Image und steht für Requests zur Verfügung. Die Ausgabe der WebApp ist bereits das fertig gerenderte HTML mit allen Grafiken aus den aktuellen Daten.
Der laufende Betrieb wird live gemonitort. Zusätzlich wurden Alerts eingerichtet, um schnell reagieren zu können. Sobald die Zugriffszeit auf die Website eine Sekunde überschreitet oder wenn mehr als zehn Web-Fehler innerhalb von fünf Minuten auftreten, wird eine SMS an das Operating versendet.
#4 Wie kann ich flexibel auf kurzfristige Änderungswünsche reagieren?
Damit man auf geänderte Rahmenbedingungen rasch reagieren kann, ist es wichtig, Möglichkeiten zur kurzfristigen Anpassung zu schaffen, ohne dabei Systemausfälle zu riskieren. Dies gilt es am besten bereits in der Architektur, der Technologiewahl und den Prozessen berücksichtigen.
Auch im Fall der WebApp zur Gemeinderatswahl wird eine entsprechende Möglichkeit vorgesehen, auf benötigte oder gewünschte Änderungen flexibel reagieren zu können. Die Anpassungen werden als lokales Docker-Image wieder auf Azure gepushed und stehen automatisch durch einen WebHook in der App zur Verfügung.
#5 Wie reagiert die WebApp unter Last?
Kein Ausrollen ohne Test – das gilt wohl für jede IT-Lösung. Gerade bei öffentlichkeitswirksamen Ereignissen braucht es eine gute Performance der Applikation mit schnellen Zugriffszeiten. Ein Lasttest im Vorfeld schafft zusätzliche Sicherheit.
So auch im konkreten Use-Case: Ein Test mit 1.000 gleichzeitigen Web Requests wird aufgebaut und durchgeführt. Hier kommt der Vorteil zum Tragen, dass – je nach aufkommendem Traffic – die Realtime WebApp skaliert werden kann. Bei der einfachsten und kostengünstigsten Skalierung zeigen sich bei zehn Zugriffen noch sehr gute Reaktionszeiten. Bei 1.000 gleichzeitigen Zugriffen sieht das schon ganz anders aus: Es werden zwar problemlos alle Requests verarbeitet, die Response-Time liegt allerdings bereits bei drei Sekunden; ideal sind 30 bis 100 Millisekunden. Mit einer höheren Skalierung ergeben sich sehr gute Zugriffszeiten von 25 Millisekunden.
Fazit zur Realtime WebApp
Der vorliegende Use-Case zeigt: Eine einfache Web-Applikation kann recht schnell entwickelt werden und als reine Cloud-Lösung in Azure vergleichsweise einfach eingerichtet werden. Ein großer Vorteil ist die Skalierung je nach Traffic und die angepasste Kostenkontrolle.