Der API-Server, ist der Grundstein, auf dem das OCC (Online Control Center) aufgebaut ist. Nahezu jede Funktion, welche das OCC bietet, wird im Hintergrund vom API-Server bereitgestellt – vom Anzeigen von Sensordaten bis hin zur Inventarisierung und Darstellung bzw. Auswertung von Messwerten.

Der API-Server ist bereits seit 2013 im Einsatz und hat seither gewaltig an Funktionen und damit auch Komplexität gewonnen. Um dieser Komplexität entgegenzuwirken, haben wir uns dazu entschlossen, den Monolithen „Server-Eye API“ zu zerschlagen und die Funktionen in Form von kleinen, wiederverwendbaren Services zu kapseln.

Dieses Konzept ist im Allgemeinen als „Microservice-Architektur“ bekannt. Microservices sind dabei generell autonom und behandeln immer nur einen kleinen Teil der gesamten Programmlogik. Um komplexere Vorgänge abzubilden, können sich Microservices untereinander aufrufen. Dadurch sind die einzelnen Services selbst weniger komplex und daher wesentlich besser wart- oder auch leichter austauschbar als verschachtelte Programmteile in einem monolithischen Konstrukt.

Dies erlaubt es uns zum Beispiel, einzelne Teile des Server-Eye-Backends unabhängig voneinander, je nach anliegender Last, zu skalieren. Steigt die Nutzung, so starten wir einfach mehr Instanzen der betroffenen Services. Auch können wir Updates an den einzelnen Services durchführen, ohne das Gesamtkonstrukt zu beeinträchtigen. Mit dem alten API-Server war das undenkbar. Selbst bei kleinsten Änderungen mussten immer alle API-Server neu gestartet werden.

 

Projekt MoleculerJS

Um die Kommunikation der Microservices untereinander zu ermöglichen, Schnittstellen einheitlich zu definieren und das dynamische Hinzufügen und Entfernen von Services zu ermöglichen, setzen wir das MoleculerJS-Framework ein. MoleculerJS ist ein Open-Source-Projekt, welches sich seit 2016 in der Entwicklung befindet und seither stetig an Beliebtheit gewinnt. Neben der sehr guten Dokumentation haben uns vor allem die ausgezeichnete Erweiterbarkeit und die vielen bereits mitgelieferten Funktionen überzeugt.

MoleculerJS gibt uns im Backendbereich Werkzeuge an die Hand, welche wir immer haben wollten, deren Implementierung im alten API-Konstrukt aber einfach zu aufwändig waren. So haben wir nun präzise Messwerte, wie lange Anfragen in den einzelnen Services dauern und können anhand dieser Daten gezielt die Performance der entsprechenden Services verbessern. Auch das Nachvollziehen einzelner Anfragen mit allen mitgegebenen Daten ist durch die gesamte Architektur hindurch möglich: vom Klick im OCC über alle Microservices bis hin zur Datenbank selbst.

Durch MoleculerJS haben sich auch ganz neue Möglichkeiten ergeben. Da der Datenzugriff im Backend nun einheitlich geregelt ist, kann in den entsprechenden Services ein dynamisches Caching verwendet werden. Dies beschleunigt wiederholte Anfragen enorm, da ein direktes Laden der Daten aus der Datenbank nicht mehr notwendig ist.

Aus diesen Gründen sind wir seit Frühjahr 2021 Sponsor des Moleculer-Projektes und unterstützen die Weiterentwicklung des Frameworks monatlich durch eine Spende. Dies zeigt auf einer Seite den Wert, den MolecularJS für uns hat und unterstützt andererseits die Weiterentwicklung des Frameworks.

 

4.7/5 - (51 votes)