

Planbar. Sauber. Grillen

Success Story: BBQ BUTLER
Der BBQ-Butler ist ein elektrisches Grillsystem für gemeinschaftlich genutzte Bereiche wie z.B. Campingplätze, Wohneinrichtungen, Parks und Firmengelände. Dieser bringt folgende Vorteile mit sich:
- Nach jedem Grillvorgang wird die Grillfläche gespült und somit ein Maximum an Hygiene und Sauberkeit geboten.
- Manuelle Regelung der Temperatur der zwei separaten Grillflächen auf zwei verschiedenen Temperaturstufen.
Challenge
Bei einem verteilten System wie BBQ Butler ist es eine der grössten Herausforderungen, die Stabilität der Geräte und der Cloud zu gewährleisten. Hierbei gilt es, die Kommunikation zwischen den Komponenten möglichst sicher zu gestalten und lockere Schnittstellen zu bieten, über welche Komponenten leicht hinzugefügt und ausgetauscht werden können, um so elastisch skalieren zu können. Zur Laufzeit des Systems sollte es zu jeder Zeit möglich sein zu erkennen, welche Geräte noch eine Verbindung zur Cloud haben und wie der Zustand der Geräte ist. Zudem muss es möglich sein, Störungen der Geräte frühzeitig zu erkennen, um den Endnutzer optimale Interaktion mit dem System zu bieten.
Solution
Um die Herausforderungen zu meistern, setzen wir auf den IoT Service der Google Cloud (Cloud IoT Core). Mit diesem werden die Geräte über ein verschlüsseltes Protokoll (MQTT) sicher an die Google Cloud angeschlossen. Die eingehende Kommunikation über diesen Service wird für das restliche System in der Pub/Sub Message-Queue bereitgestellt. Diese ermöglicht eine lose Kopplung der externen IoT-Devices mit den Services der BBQB Cloud. So können sich neue Services Nachrichten aus dieser Message-Queue holen, ohne dafür die Devices kennen zu müssen. Das selbe gilt für die Devices, welche nur den IoT Core Service sehen. Die API, um per App mit dem System zu interagieren, wird auf der App Engine gehostet, sodass geringe Kosten für die Wartung der Infrastruktur entstehen, da es sich um einen von Google verwalteten Service handelt. Dieser Service ermöglicht es, das System abhängig von der einkommenden Last zu skalieren. Die Gestaltung der API als REST-Service fügt sich hier ein und ermöglicht es transparent neue Instanzen zu starten, die API zu versionieren und zu erweitern, ohne bestehende Clients und Implementierungen zu beeinträchtigen. Als Datenbank wird Cloud Firestore verwendet, eine hoch skalierbare NoSQL Datenbank, die es ermöglicht, ohne Administrationsaufwand mit dem Rest des Systems zu skalieren. Zudem werden Monitoring Services verwendet, um Probleme des Systems frühzeitig zu erkennen und diese zu analysieren.

Konzeption
Für die Umsetzung wurden einige Dienste der Google Cloud ausgewählt, welche optimal auf die Herausforderungen zugeschnitten sind und zudem geringe Kosten für den Betrieb und die Wartung des Systems erzeugen.
Ionic: | Die mobile Applikation wurde mit dem Ionic Framework entwickelt, um mit einer Code Basis sowohl Android als auch iOS Nutzer mit einer App zu versorgen. Dabei handelt es sich um einen hybriden Ansatz, basierend auf Typescript und HTML. Der Zugriff von nativen Funktionalitäten wie beispielsweise Standort und Kamera wird durch Capacitor ermöglicht. |
Stripe: | Um einen reibungslosen Ablauf der Bezahl-Prozesse zu gewährleisten, wurde der Zahlungsdienst von Stripe verwendet. Somit wird auch die von der EU vorgegebene Zahlungsrichtlinie PSD2 umgesetzt durch Strong Customer Authentication (SCA). Weiterhin stellt Stripe eine automatische Rechnungserstellung sowie ein Gutscheinsystem zur Verfügung, um zukünftig Aktionen und Rabatte zu planen. |
App Engine: | Die App Engine hostet die Dienste für die API und die Nachrichtenverarbeitung. Mithilfe der App Engine ist es möglich, Instanzen dynamisch zur Nutzlast zu skalieren. |
Springboot: | Mit SpringBoot wurde eine API Schnittstelle zur mobilen Applikation umgesetzt. Alle Operationen für Buchungen/Benutzer/Grillstationen werden darüber abgewickelt. Die API ist unter anderem auch verantwortlich für das Veröffentlichen (publish) von Nachrichten zu Cloud PubSub (Entsperrsignal), für die Kommunikation mit den Grillstationen. Weiterhin wurde auf der App Engine eine weitere Springboot Instanz (Message Processor) zum Verarbeiten von Nachrichten aus IoT Core durch PubSub aufgesetzt. Diese horcht endlos auf Nachrichten (subscribe) und aktualisiert über diese den Zustand der Business-Objekte in Cloud Firestore. Der Service agiert völlig unabhängig von der API. |
Cloud Firestore: | Als Datenbank wurde die hoch skalierbare NoSQL Datenbank Cloud Firestore verwendet. Die NoSQL Datenbank unterstützt die Agile Vorgehensweise und integriert sich perfekt in die verteilte Natur unserer Cloud Architektur. |
IoT-Core: | Als Herzstück des Systems wurde IoT Core eingesetzt, um eine stabile und sichere Verbindung zu den BBQ Butlern aufzubauen. Diese ist eng verbunden mit Cloud Pub Sub und realisiert die Kommunikation der Grillstationen mit der Cloud über das MQTT Protokoll. Das Protokoll ermöglicht es, über den IoT-Core Service Nachrichten von den BBQ Butlern zu erhalten, aber auch Nachrichten an diese zu senden. |
Cloud Pub Sub: | Damit die Nachrichten nach dem Empfangen in der Cloud von den verschiedenen Services asynchron weiterverarbeitet werden können, wurde die Message-Queue Cloud Pub/Sub eingesetzt. Dies ermöglicht, dass zentral die Daten von verschiedenen verteilten Systemen verarbeitet werden können. Mit diesem Dienst wird eine lose Kopplung der Systeme ermöglicht und somit die Skalierbarkeit des Systems gewährleistet. Im BBQB-System wird der Service im Wesentlichen für die Kommunikation des aktuellen Zustands bzw. des aktuellen Status der Devices an die Cloud genutzt. Diese werden im System “Heartbeats” genannt. |
Cloud Identity: | Für die Authentifizierung und Benutzerverwaltung wurde Cloud Identity verwendet, um Benutzer und Services über das OIDC(OAuth) Framework zu autorisieren und eine sichere Kommunikation zu ermöglichen. Dieser Service ist gekoppelt mit dem Cloud Firestore. |
Benefits
Egal ob ein oder eine Millionen BBQ Butlers, mit den ausgewählten Diensten ist das System in der Lage, ohne zusätzlichen Aufwand diese Herausforderung zu meistern. Durch dieses Setup ist es BBQ Butler möglich, Ihre Geräte optimal zu betreiben und auch in Zukunft die Anzahl Ihrer Geräte mit sehr geringem Aufwand zu erweitern.