So wählen Sie Ihre IoT-Plattform aus - sollten Sie Open Source wählen?

Die Zahlen sprechen für sich…

In meinem vorherigen Artikel "Sollten Sie die serverlose Architektur für Ihre IoT-Lösung verwenden?" Habe ich den Ansatz von DataArt zur Erstellung einer serverlosen IoT-Lösung von Grund auf überprüft.

In diesem Artikel werde ich einen allgemeineren Überblick über die Auswahl der richtigen IoT-Plattform für Sie geben. Ich werde die wichtigsten Kriterien hervorheben, die in einer benutzerdefinierten oder Open-Source-IoT-Plattform berücksichtigt und bewertet werden müssen. Abschließend präsentiere ich eine mathematische Analyse und eine Kostenanalyse, die Open Source mit serverlosen IoT-Plattformen vergleicht, um zu entscheiden, welcher Ansatz gewählt werden soll.

Cloud-Giganten, darunter AWS, Azure, IBM und Google, tätigen erhebliche Investitionen in ihre Cloud-Services, wodurch sie kosteneffizient, komfortabel, skalierbar und fehlertolerant sind. Benutzerdefinierte IoT-Plattform der Wahl sollte nicht anders sein.

Als Leiter der IoT-Praxis bei DataArt, der DeviceHive betreibt, musste ich mich mit vielen Herausforderungen befassen, denen sich alle IoT-Plattformen gegenübersehen. Es hat mir geholfen, eine Liste mit Kriterien für die Bewertung einer IoT-Plattform mit Produktionsqualität zu erstellen:

  • Skalierbarkeit
  • Zuverlässigkeit
  • Anpassung
  • Operationen
  • Protokolle
  • Hardware-Agnostiker
  • Wolkenunabhängig
  • Unterstützung
  • Architektur & Technologie Stack
  • Sicherheit
  • Kosten

Wenn Sie mit diesen Kriterien vertraut sind, können Sie den nächsten Abschnitt überspringen und direkt zu Analyse / Berechnungen wechseln.

Skalierbarkeit

Wenn Sie eine serverlose IoT-Plattform in Betracht ziehen, sollten Sie berücksichtigen, dass sie automatisch skaliert wird, um einer wachsenden Last gerecht zu werden, ohne dass Sie zum Handeln aufgefordert werden. Es unterstützt das Unternehmenswachstum und verhindert Stromausfälle aufgrund fehlender Ressourcen hinter der Cloud.

Eine benutzerdefinierte IoT-Lösung, die sich beim serverlosen Ansatz hinter den Kulissen verbirgt, muss Optionen bieten, um sich selbst mit vorhersagbaren Kennzahlen für Leistung, Speicher und Durchsatz zu skalieren. Einige IoT-Frameworks bieten erweiterte und differenziertere Skalierungsoptionen, die effizienter sind, jedoch möglicherweise ein erfahrenes Team oder erweiterte Vorgänge erfordern.

Zuverlässigkeit

Echtzeit-Skalierung zur Deckung des sich ändernden Lastbedarfs mit mehr Rechenressourcen reicht nicht aus. In der Produktion haben Sie nicht den Luxus, die Gründe für das Verschwinden von Nachrichten von Geräten oder für das Nichtreagieren der gesamten Plattform zu ermitteln.

Das System sollte ein Failover sein und über Notfallwiederherstellungsfunktionen verfügen, um die Zuverlässigkeit der Produktion zu gewährleisten. In den meisten Fällen sollte es Gesundheitsprüfungen durchführen, seine Komponenten überwachen und Selbstheilungskräfte bereitstellen. Achten Sie bei der Auswahl Ihrer Plattform darauf, wie die Zuverlässigkeit erreicht werden kann. Es ist in der Regel eine Kombination aus Architektur und betriebsspezifischen Faktoren.

Anpassung

Der serverlose IoT-Ansatz ermöglicht Flexibilität, indem Integrationsoptionen für den Rest der Cloud-Dienste bereitgestellt werden. In den meisten Fällen können wir jedoch den Kern des IoT-Dienstes selbst nicht ändern. Eine benutzerdefinierte IoT-Lösung sollte eine hervorragende integrierte Funktionalität, umfangreiche Bibliotheken, APIs und Integrationsoptionen mit anderen Plattformen oder Diensten sowie die Möglichkeit bieten, den Kern des Systems durch die Verwendung benutzerdefinierter Plugins oder die Integration von benutzerdefiniertem Code zu erweitern.

Mit Open Source-Lösungen können wir weit darüber hinausgehen. Es besteht die Freiheit, das Produkt unbegrenzt an die jeweiligen Anforderungen anzupassen und anzupassen. Open Source gibt Ihnen auch das gesamte Bild von all seinen Vor- und Nachteilen.

Operationen

Operationen sind ein bedeutender und oft unterschätzter Faktor. Im Gegensatz zu serverlosen IoT-Plattformen, bei denen alle Vorgänge größtenteils unter der Haube verborgen sind, kann der Betrieb einer benutzerdefinierten IoT-Plattform für Ihr Team einen enormen Aufwand bedeuten. Sie sollten immer die Plattform-Orchestrierungsfunktionen in Betracht ziehen, insbesondere wenn die Plattform unter Verwendung der Micro-Services-Architektur erstellt wird.

Ein weiterer wichtiger Vorteil ist ein Dashboard, das die Gesamtsystemstatistiken und Gesundheitsinformationen, den Status jedes einzelnen Moduls oder Dienstes sowie die Option für Benachrichtigungen im Notfall anzeigt.

Protokolle

Es ist im Voraus zu überlegen, welche Protokolle die benutzerdefinierte IoT-Lösung unterstützt. Wenn Sie sich nicht sicher sind, ob Sie in Zukunft auf einer bestimmten IoT-Plattform bleiben möchten, sollten Sie prüfen, ob MQTT, das am häufigsten verwendete Protokoll, das vor fast 20 Jahren erfunden wurde, und ein De-facto-Standard im IoT, unterstützt wird.

Es bietet die Möglichkeit, fast nahtlos auf eine andere IoT-Plattform zu migrieren, indem der Backbone-MQTT-Broker durch eine andere IoT-Plattform ersetzt wird, die MQTT unterstützt. Darüber hinaus wird dieses Protokoll von den meisten Cloud-IoT-Anbietern, einschließlich AWS, Azure und IBM Watson, weitgehend übernommen.

Zusätzliche Flexibilität wird erreicht, wenn die IoT-Lösung API über WebSockets, REST und CoAP unterstützt.

Hardware-Agnostiker

Die Hardware-Industrie entwickelt sich extrem schnell und wir können beobachten, wie klein und leistungsstark Edge-Geräte sein können. Die meisten Geräte können heutzutage Betriebssysteme ausführen, wodurch sie äußerst flexibel sind und Programme ausführen können, die in einer beliebigen Sprache geschrieben sind.

Bei Low-End-Geräten ist man jedoch durch ihren Speicher und ihre Rechenleistung eingeschränkt, und Apps müssen beim Ressourcenverbrauch äußerst effizient sein. Bevor Sie sich für eine IoT-Plattform entscheiden, sollten Sie prüfen, welche Geräte unterstützt werden, ob native Implementierungen für Low-End-Geräte vorhanden sind oder ob Lightweight-Kommunikationsprotokolle (MQTT oder CoAP) unterstützt werden, die auf Low-End-Geräten ausgeführt werden können.

Wolkenunabhängig

In den meisten Fällen muss bei der Betrachtung einer benutzerdefinierten oder Open-Source-IoT-Plattform berücksichtigt werden, dass deren Bereitstellung, Betrieb und Wartung ebenfalls Teil der Gleichung sind.

Um sicherzustellen, dass die Flexibilität der Plattform nicht eingeschränkt ist, sollte sie für den Betrieb in jeder Infrastruktur einsetzbar sein, sei es in der Cloud, vor Ort oder als Hybrid. Wenn die Plattform in hohem Maße auf bestimmte Cloud-Dienste angewiesen ist, funktioniert sie wahrscheinlich nur mit dieser bestimmten Cloud. Auch wenn es eine gute sofortige Entscheidung ist, die Cloud-Lock-In-Option zu wählen, was ist, wenn Sie sich entscheiden, in eine andere Cloud zu wechseln, wenn Sie bedenken, wie schnell sie sich entwickeln und wie stark sie miteinander konkurrieren? Sie werden am Ende die gesamte Plattform wechseln, was eine große Verschwendung von Aufwand ist.

Unterstützung

Der Support ist einer der Dienste, die von den Unternehmen, die IoT-Plattformen entwickeln, gegen Aufpreis bereitgestellt werden, um sicherzustellen, dass die neuesten Updates, Sicherheitsprobleme und behobenen Fehler rechtzeitig gemeldet werden. Durch den Support können benutzerdefinierte Funktionen entwickelt und die Plattform im eigenen Namen betrieben werden.

Es gibt einige Möglichkeiten, um den Plattformsupport zu organisieren: die Einstellung oder Schulung eines dedizierten Teams, die Nutzung von Supportvereinbarungen mit dem Unternehmen hinter der Plattform oder die Inanspruchnahme von Community-Support im Falle einer Open-Source-Plattform.

Eine Mischung der oben genannten ist wahrscheinlich die effektivste, aber es hängt von einem bestimmten Fall ab. Auch wenn in Kürze kein Support benötigt wird, sollte diese Option im Voraus geprüft werden, um den Umgang mit einem nicht funktionierenden oder nicht unterstützten Produkt zu vermeiden. Es ist auch sinnvoll zu untersuchen, wie oft neue Versionen eingeführt werden, welche Roadmap zum Produkt gehört, wie viele Mitarbeiter an Support und Entwicklung beteiligt sind und ob es tatsächlich Personen gibt, mit denen gesprochen werden kann.

Architektur & Technologie Stack

Die Bedeutung der in der Plattform verwendeten Architektur und Technologien ist von grundlegender Bedeutung, da die zukünftige Wartbarkeit vom ursprünglichen Design abhängt.

Die Plattform sollte produktionsgerechte, gut unterstützte Frameworks, Tools und Sprachen verwenden und gleichzeitig ihre Vielfalt einschränken, um den Bedarf an Entwicklern mit entsprechenden Fähigkeiten zu verringern.

Micro-Services-Architektur sollte unter anderem berücksichtigt werden. Es ist zwar schwierig zu bedienen, bietet jedoch die größte Flexibilität, um einen Dienst durch eine benutzerdefinierte Implementierung zu ersetzen, während der Rest des Systems intakt bleibt.

Mit einem Open-Source-Produkt können Sie Ihre persönliche Sorgfalt einsetzen, um die Architektur zu erkunden und tief in den Technologiestapel einzutauchen.

Sicherheit

Sicherheit im Internet der Dinge ist eines der heißesten Themen. Das Kernproblem ist das Fehlen von Industriestandards. Während die Sicherheit jede Komponente des IoT-Ökosystems betrifft - Geräte, Plattformen und Anwendungen - konzentriert sich dieser Artikel auf die Plattformsicherheit.

Bei der Auswahl einer IoT-Plattform muss die Sicherheit eine der obersten Prioritäten sein, die bereits in der ersten Phase des Projekts festgelegt wurde. Das Überprüfen der Sicherheitsfunktionen einer vorhandenen IoT-Plattform ist ein Muss. Zumindest sollte es eine Transportebenensicherheit (TLS) für die Kommunikation mit Geräten und Anwendungen sowie eine Authentifizierung für Geräte und Benutzer bieten.

Es lohnt sich auch zu untersuchen, ob die Plattform über Berechtigungsfunktionen verfügt, welche Art von Datenlebenszyklusverwaltung verwendet wird, ob eine Option zum verschlüsselten Speichern Ihrer Daten verfügbar ist und nicht zuletzt, ob Sicherheitsüberprüfungsdokumente verfügbar sind.

Niemand möchte, dass sein Unternehmen zu einem Botnetz kompromittierter Geräte wird, die DDoS-Angriffe ausführen oder Sicherheitslücken auf Websites scannen. Das Wiederherstellen eines solchen „infizierten“ Ökosystems für Geräte-Cloud-Anwendungen und das Beheben von Sicherheitsproblemen sind sehr kostenintensiv und kosten enorme Anstrengungen. Bitte lassen Sie die Sicherheitskriterien nicht von Ihrer Liste streichen.

Kosten

Verschiedene IoT-Systementwickler bieten unterschiedliche Preismodelle an. In den meisten Fällen kann eine Open Source-Plattform kostenlos genutzt werden. Nachfolgend sind die gängigsten Preismodelle für das Internet der Dinge aufgeführt:

  • Bezahlen Sie pro Knoten / Jahr
  • Zahlen Sie pro aktivem Gerät
  • Zahlen Sie pro Nachricht
  • Premium Features bezahlen (optional)
  • Support bezahlen (optional)

Der Preis beinhaltet häufig nicht die Kosten für die Infrastruktur zum Hosten der IoT-Lösung und ist in der Regel der größte Teil der Rechnung. Ich werde es im nächsten Abschnitt aufschlüsseln.

Analyse / Berechnungen

Wir werden die Kosten für die Nutzung von serverlosen IoT- und Open-Source-IoT-Plattformen in der Cloud vergleichen. Der Einfachheit halber nehmen wir an, dass eine Open-Source-IoT-Plattform die folgenden Attribute aufweist:

  1. Die Skalierung ist linear und vorhersehbar. Jeder zusätzliche Knoten kann eine konstante Anzahl von Nachrichten pro Sekunde verarbeiten.
  2. Die Anfragen werden gleichmäßig und ohne Spitzen verteilt.
  3. Die Plattform arbeitet in einem garantierten Nachrichtenübermittlungsmodus.
  4. Die Nachrichtengröße beträgt 1 KB.
  5. Eine Knoteninstanz kann 5000 ms / s mit einer angemessenen Latenz von 200 ms oder weniger verarbeiten.

Vergleichen wir zunächst die Kosten der Rohinfrastruktur. Um sicherzustellen, dass wir Äpfel mit Äpfeln vergleichen, analysieren wir serverlose AWS IoT- und Open-Source-IoT-Lösungen, die auf der AWS-Infrastruktur gehostet werden.

Unsere Referenzinstanz für Open-Source-IoT-Lösungen ist c4.xlarge mit 500 GB Allzweck-SSD und 500 GB / Monat Backup-Speicherplatz für jeden Knoten. Außerdem berechnen wir die Kosten für eine elastische IP-Adresse, einen Lastenausgleich für Clusterzwecke und ausgehenden Datenverkehr basierend auf 1 KB pro Nachricht. Für serverloses IoT werden wir ein Setup aus meinem vorherigen Artikel berücksichtigen und nur AWS IoT selbst und DynamoDB-Services zählen.

Das AWS IoT-Preismodell basiert auf empfangenen und gesendeten Nachrichten. Es werden auch einige Dienstmeldungen wie Bestätigungen, Pings und einige andere gezählt. Der Einfachheit halber wird dies jedoch übersprungen.

Angenommen, ein Gerät sendet eine Nachricht pro Sekunde an die Cloud. Es werden monatlich 2.628 Millionen Nachrichten generiert, über 730 durchschnittliche Stunden pro Monat.

AWS IoT kostet 5 USD pro 1 Million Anfragen und DynamoDB kostet 0,0065 USD pro zehn gestellten Anfragen pro Sekunde und die gleichen Kosten pro 50 eingehenden Anfragen pro Sekunde.

Wir sehen eine sehr erschwingliche monatliche Rechnung bei rund 22 US-Dollar.

Mit einer Open-Source-IoT-Lösung, die auf einer AWS-Infrastruktur gehostet wird, erhalten wir eine Rechnung in der Nähe von 225 US-Dollar.

Wenn wir jedoch zehn Geräte haben, die monatlich 26,2 Millionen Nachrichten senden, werden uns 140 US-Dollar für AWS IoT und 225 US-Dollar für die Open-Source-Plattform berechnet.

Schauen wir uns die folgenden Diagramme an, um die monatlichen Kosten und die Korrelation der Kosten pro Nachricht mit einer Anzahl von Nachrichten zu sehen, die pro Sekunde gesendet werden.

Sobald ein AWS IoT-basiertes System mehr als 17 bis 18 Nachrichten pro Sekunde verarbeitet, ist es an der Zeit, über den Wechsel zu einer anderen IoT-Plattform nachzudenken, um die Betriebskosten zu senken. Darüber hinaus sinken die Kosten pro Nachricht bei Open-Source-IoT-Plattformen nach 20 Nachrichten pro Sekunde dramatisch und sinken mit zunehmender Nachrichtenrate weiter, während sie bei serverlosem IoT konstant bleiben.

Sehen wir uns größere Zahlen an. Was passiert, wenn wir 10000 Geräte haben? Wir erhalten 136.000 USD pro Monat für AWS IoT, gegenüber 3.300 USD für Open Source! Dies ist in der Tat beeindruckend, und wenn der Wechsel zu einer anderen Plattform zuvor nicht so attraktiv war, ist dies jetzt ein Muss. Je mehr Nachrichten Sie haben, desto weniger kosteneffizient ist das IoT ohne Server und desto mehr können Sie mit einer anderen Plattform sparen.

Die Differenz von fast 1,6 Millionen US-Dollar pro Jahr sollte ausreichen, um ein Ingenieurteam einzustellen, das das Produkt betreibt oder benutzerdefinierte Funktionen erstellt, einige zusätzliche Instanzen für die automatische Orchestrierung aufbaut und einen Supportvertrag mit dem Unternehmen abschließt, das die Software entwickelt Plattform.

Und schließlich ist hier das monatliche Kostendiagramm für ein hoch geladenes IoT-System. Sie können Ihre eigenen Schlussfolgerungen ziehen.

Der Fall mit AWS zeigt anschaulich den enormen Kostenunterschied zwischen den beiden Ansätzen. Bei kleinen Nachrichtenmengen mit anderen IoT-Cloud-Plattformen ist dies möglicherweise nicht offensichtlich. Es geht jedoch nur darum, den Punkt zu ermitteln, an dem der Ansatz ohne Server kostengünstig wird.

Schlussfolgerungen

Während cloudbasierte serverlose IoT-Lösungen sofort einsatzbereite Integrationsoptionen und eine sofortige Markteinführung bieten, sprechen die Zahlen für sich selbst - seien Sie bereit für eine riesige Rechnung.

Wenn nicht erwartet wird, dass das Unternehmen schnell wächst, oder wenn Geschäftskonzepte validiert werden sollen, ist eine cloudbasierte Lösung am besten geeignet. Wenn die IoT-Plattform ansonsten die meisten der oben genannten Kriterien erfüllt, kann ich Ihnen raten, eine Open-Source-Lösung zu wählen.

Geschrieben von Igor Ilunin, Leiter des IoT bei DataArt.

Möchten Sie die neuesten Entwicklungen und technischen Nachrichten direkt in Ihren Posteingang bekommen?