Client:
Münchner Konzern

Hausgerätehersteller

Project Information:
Topic |
API Gateway - Ein neuentwickelter Backend Service, gehostet in der AWS Cloud
Technology | Node.js, Redis, Kibana, Grafana

Die Herausforderung

Das Handling von mehreren Millionen Requests täglich, Hochverfügbarkeit und eine zunehmende Anzahl an Features sind nur drei der Herausforderungen einer IoT API, welche die unzähligen hauseigenen Integrationen von Smart Home Diensten wie Google Assistant, Alexa, und IFTTT, aber auch Drittanwendungen ermöglicht.

Unser Kunde, ein renommierter internationaler Hausgeräte Hersteller, bietet genau eine solche API an. Um aber auch für die Zukunft sicher aufgestellt zu sein, wie zum Beispiel beim Stemmen einer kontinuierlich steigenden Nutzerzahl, aber auch der Implementierung von neuen Features, musste eine Lösung her, welche einen Teil der Komplexität übernimmt. Konkret war die Kernaufgabe, anhand verschiedener Parameter zu entscheiden, wie das Routing erfolgen soll. Dabei lag der klare Fokus auf Skalierbarkeit, hohe Testabdeckung und ein verbessertes Monitoring, um einen ununterbrochenen Betrieb zu gewährleisten.


Die Lösung

Das sogenannte API Gateway ist eine komplette Neuentwicklung: ein Backend Service, bestehend aus modernen Technologien (NodeJS, Redis...), gehostet in der AWS Cloud als flexibel skalierbare Containeranwendung (ECS). Für das intelligente Routing wird auf das Web-Framework Express gesetzt, welches uns die erforderliche Stabilität, aber auch sehr gute Performance garantiert. Dieser Service ersetzt die bestehende Lösung, ein Nginx/OpenResty Proxy.

Die Vielzahl an geschriebenen Unit- und Integrationstests helfen uns, neue Erweiterungen, wie zum Beispiel die zukünftige Unterstützung von Websockets, schnell und mit minimiertem Risiko zu implementieren und auszurollen. Die AWS Cloud liefert uns die robuste Infrastruktur, welche wir automatisiert für verschiedene Lasten, wie die typische Feierabend-Last (auch Hausgeräte haben eine "Rush Hour"), aber auch für den erwarteten Anstieg der allgemeinen Nutzerzahl, skalieren.Abgerundet wird der Service mit detailliertem Logging (Kibana) und Monitoring (Grafana). Grafana bietet die Möglichkeit, Dashboards für einen schnellen Überblick des Services zu erstellen und Alarme so zu konfigurieren, dass User automatisch benachrichtigt werden, sobald vitale Metriken von ihren Standards abweichen.

Damit die variable Anzahl an Instanzen auch untereinander kommunizieren kann, verwenden wir Redis als performante Schnittstelle. Dies macht es möglich z.B. ein Rate Limiting über mehrere Instanzen hinweg umzusetzen.


Das Projekt

Die Entwickler und Consultants der Scandio waren bei diesem Projekt von der Konzipierung, Implementierung, bis hin zum Go-Live im ständigen Austausch mit dem Product Owner auf Kundenseite, um die Kernfunktionen als agiles Entwicklerteam umzusetzen. Bezüglich Technologien und der spezifischen Umsetzung hatte der Kunde vollstes Vertrauen in uns, dass wir die richtigen Entscheidungen treffen. Von den ersten Konzeptideen bis zum Go-Live verging weniger als ein Jahr und das System läuft nun seit einiger Zeit verlässlich. Weiterhin wird jedoch aktiv an neuen Features gearbeitet und Ideen werden besprochen - denn nach dem Feature ist vor dem Feature.