Open-Source-Lösungen können der Schlüssel zu einer kosteneffizienten Architektur sein, die die Vorteile von In-Memory-Computing nutzt. Um entscheiden zu können, welche Lösung für welches Einsatzszenario passt, ist jedoch etwas Detailwissen nötig.

Groß angelegte Initiativen zur digitalen Transformation oder sogenannte Omnichannel-Kundenbindungs-Kampagnen erfordern eine deutlich erhöhte Rechenleistung, die Datengewinnung und -analyse aus mehreren Quellen in Echtzeit stemmen kann. Der Aufbau einer Infrastruktur zur Umsetzung dieser Herausforderungen gelingt mit einer verteilten In-Memory-Computing-Lösung (IMC). Bei der Entwicklung einer IMC-Architektur ist es jedoch wichtig, die verschiedenen Anforderungen der angestrebten Anwendungen zu berücksichtigen. Dazu ist eine einheitliche Architektur zu erstellen, die eine einfache und kostengünstige Umgebung für die Entwicklung, Bereitstellung und Verwaltung der Anwendungen gewährleistet.

Viele Open-Source-Projekte oder Unternehmen, die ihre kommerziellen Lösungen basierend auf Open-Source-Projekten entwickeln, sorgen für eine einfache Integration zwischen ihrer Software und anderen Open-Source-Softwarelösungen. Auf diese Weise kreieren sie kostengünstige und sich ergänzende Lösungen, die Unternehmen schnell einsetzen können. Auch die Time-to-Market für Architekturen mit In-Memory-Computing verkürzt sich. Dabei helfen unter anderem die Vorteile offener APIs, um mit den vorhandenen Lösungen eine integrierte, nahezu nahtlos verteilte IMC-Architektur zu schaffen.

Apache Ignite ist eine Open-Source-IMC-Plattform und bildet die Grundlage der Architektur. Sie bietet ein In-Memory Data-grid (IMDG) von verteilten Server-Clustern und kann On-Premise, in privater oder öffentlicher Cloud sowie in einer hybriden Umgebung arbeiten. Das IMDG ist dabei einfach zwischen Data- und Application-Layer der bestehenden Anwendung eingefügt, ohne dass die bestehende Datenbank komplett zu ersetzen wäre. Der gesamte verfügbare RAM-Speicher des IMC-Clusters steht dann für Rechenprozesse zur Verfügung. Dabei kann der Cluster durch einfaches Hinzufügen weiterer Knoten simpel und unbegrenzt skalieren.

Apache Ignite bietet zudem Persistent-Store-Funktionen. Unternehmen können dadurch ihre Infrastrukturkosten und die Rechenleistung ausbalancieren, da sie damit auch Datensätze verarbeiten können, die größer sind als der verfügbare RAM. Der gesamte Betriebsdatensatz liegt auf Festplatte, während lediglich eine definierte Teilmenge essenzieller Daten im RAM bleibt. Diese „speicherzentrierte Architektur“ lässt sich mit Hilfe von verteilten ACID-Transaktionen und ANSI-99-SQL-kompatiblen Festplattenspeichern erstellen – auf Festplatte, Solid-State-Laufwerken (SSDs), Flash-Speicher, 3D XPoint- oder anderen Speichertechniken. Sie ermöglicht zudem eine sofortige Datenverarbeitung nach einem Reboot, da nicht alle Daten erst erneut in den Arbeitsspeicher geladen werden müssen. Dank der persistenten Speicherfunktion kann Apache Ignite darüber hinaus auch als verteilte SQL In-Memory-Datenbank (IMDB) fungieren.

Apache Ignite bietet zudem integrierte und verteilte Machine-Learning- und Deep-Learning-Bibliotheken (ML und DL), die für Massively Parallel Processing optimiert sind. Sie ermöglichen es jedem ML- oder DL-Algorithmus, die Daten, die im RAM auf den Nodes des IMC-Clusters gespeichert sind, lokal zu analysieren. Dadurch ist ein kontinuierliches Update der ML- oder DL-Modelle möglich, ohne dass die Rechenleistung des Systems beeinträchtigt wird.
Apache Kafka ist eine Streaming-Plattform, die das Erhalten und Verteilen von Datenströmen, die dauerhafte Speicherung der Daten sowie deren sofortige Weiterverarbeitung verwaltet. Apache Kafka dient meist dazu, Echtzeit-Datenströme aufzubauen, die einen zuverlässigen Datenaustausch zwischen Systemen oder Anwendungen ermöglichen. Darüber hinaus kommt es für die Erstellung von Echtzeit-Streaming-Anwendungen zum Einsatz, die die Datenströme weiterverwenden oder auf diese reagieren.

Eine IoT-Plattform beispielsweise muss große Datenströme von Sensoren aufnehmen sowie analysieren können. Apache Kafka kann die Bewegung und Aufnahme dieser Daten vereinfachen. Kafka läuft als ein Cluster von einem oder mehreren Servern, die ganze Datenzentren umfassen können. Nutzer der In-Memory-Computing-Plattform von GridGain können zudem den zertifizierten Kafka-Konnektor einsetzen, um Kafka einfach in ihre IMC-Architektur zu integrieren. Damit lassen sich selbst größte Datenströme einfach aufnehmen und verarbeiten.

Apache Spark ist eine einheitliche In-Memory-Analytics-Engine für eine umfangreiche Online-Analyseverarbeitung (Online Analytical Processing, OLAP). Sie dient meist dazu, Erkenntnisse aus Hadoop zu gewinnen. Jedoch bietet Spark keinen verteilten Storage, sodass ein ETL-Prozess (Extract, Transform, Load) genutzt werden muss, um die Daten aus Hadoop oder einem anderen Storage für die Weiterverarbeitung zu laden. Die Spark-Datenpakete müssen zudem auf einer Festplatte oder einem RAM-Speichermedium gesichert sein, um ihren Status zwischen Spark-Jobs zu behalten oder tauschen zu können.

Wenn Spark RDDs (Resilient Distributed Datasets) oder DataFrames im RAM oder auf Festplatte gespeichert sind, ist es möglich, Daten zum Datensatz hinzuzufügen, selbst wenn die Spark-Jobs bereits laufen. Spark-Datenpakete sind also abänderbar. Offene APIs ermöglichen zudem die Zusammenarbeit von Apache Spark und Apache Ignite. Damit können die Systeme direkt Daten im RAM teilen, ohne dass das System sie vorher auf die Festplatte speichern muss. Die Kombination von Apache Spark und Apache Ignite beschleunigt zudem Spark-SQL-Anfragen bis zu tausendmal, da Apache Ignite im Gegensatz zu Apache Spark SQL-Indices unterstützt.

Kubernetes

Kubernetes automatisiert die Integration, Skalierung und Verwaltung von containerisierten Anwendungen über ein Server-Cluster. Es gruppiert die Container einer Anwendung in logische Einheiten für eine einfachere Verwaltung und Einsichtnahme. Dabei nutzt es die Vorteile einer On-Premise-, hybrider oder Public-Cloud-Infrastruktur. Offene APIs unterstützen eine Integration von Apache Ignite mit Kubernetes. Damit lässt sich ein Ignite-Cluster in einem Kubernetes-Container ganz einfach erstellen, wobei Kubernetes die Ressourcen und den Umfang des Ignite Clusters verwaltet. Wenn ein Nutzer beispielsweise spezifiziert, dass ein containerisierter Apache-Ignite-Cluster mindestens aus fünf Nodes bestehen soll, stellt Kubernetes automatisch sicher, dass diese Anforderung stets gegeben ist.

Fazit

Ob Initiativen zur digitalen Transformation oder Omnichannel-Kundenbindungs-Kampagnen: Um die Geschwindigkeit und Skalierbarkeit dafür zu erreichen, müssen Unternehmen auf In-Memory-Computing umsteigen. Dabei hilft die richtige Kombination aus In-Memory-Computing-Plattform und Open-Source-Lösungen. So können Unternehmen eine einfachere und kostengünstigere Umgebung für die Entwicklung, Bereitstellung und Verwaltung ihrer Anwendungen sicherstellen.

Nikita Ivanov ist Gründer des Apache-Ignite-Projekts und CTO von GridGain Systems, www.gridgain.com.