Details Übersicht

devel.one ist eine programmmierbares Peer-to-Peer-Netzwerk zur Erstellung von verteilten Applikationen auf Basis von Nachrichten.

Sie dient zur einfachen Erstellung von Programmen mit hoher Konnektivität mit nur einem Tool. Sie vermeidet die Verwendung von weiteren Tools, Programmieransätzen, Scriptsprachen usw., wie es heute leider üblich ist. Alle Features können programmatisch durch die Verwendung der API genutzt werden.

Kernmerkmal ist die Art des Messagings.  Objekte, die ein Target-Interface implementieren (Targets), können Nachrichten an andere Targets senden, in dem sie die Adresse des Ziel-Targets an die Nachricht heften. Dabei ist es unerheblich, ob sich das Ziel in einem anderen Thread, einem anderen Programm oder auf einem anderen Rechner befindet. Das System sorgt für die ordentliche Zustellung und für den Rücktransport der Antwort.

Es werden keine Interfaces für die Remote-Programme verwendet (lose Koppelung), so dass das System ideal zur Koppelung heterogener Programmier-Teams geeignet ist.

Nachrichten sind beim Transport sehr klein. Sie sind binär (keine Serialisierung, kein XML), portabel (wir arbeiten an Umsetzungen für andere Sprachen), und schnell zu parsen.  Das System enthält weitgehenden Messaging-Support durch Timer, Services, Observer, Hooks, Hierachical State Machines (HSM) etc.

Mitgeliefert werden Tools zum Tracen von Nachricht-Sequenzen mit grafischer Darstellung und Logging Tools für das Monitoring im gesamten Netz aus devel.one Rechnern. Innerhalb eines Rechners können durchaus hunderttausende von Nachrichten pro Sekunde verarbeitet werden.

Ein Konnektivitäts-Plugin sorgt für das einfache Erstellen von Netzen aus Rechnern, die sich automatisch mit Zielrechnern verbinden. Routing-Protokolle sorgen dafür, dass alle Rechner wissen, welche Rechner mit ihrem Computer verbunden sind, und wie eine Nachricht so schnell wie möglich zu einem anderen Rechner geroutet werden kann.  Die Nachricht bleibt dabei innerhalb des Netzes und wird von Rechner zu Rechner weitergeleitet.  Dabei nutzt das System eine Endpunkt-zu-Endpunkt-Verschlüsselung mittels RSA und Session-Key zur Sicherung der Integrität der Nachrichten. Die Konfiguration ist einfach gehalten, ein Verbund von einem Dutzend Rechnern ist so innerhalb weniger Minuten erstellt.

Durch die Verwendung von Nachrichten und PlugIns ist die Aufteilung von Programmen in viele kleine Services und deren Verteilung auf ein Netzwerk von Rechnern kein Problem. Die Verteilung kann ständig angepasst werden und passt sich damit dem Wachstum und der Auslastung einzelner Rechner an. Bei geschickter Konfiguration kann so etwas auch während des Betriebs ermöglicht werden (Dynamisches Laden von Plugins, Konfiguration der Service-IDs).

Die Library ist klein (<1MB) und hält wenige Abhängigkeiten (Logback fürs Logging, H2 als SQL Datenbank zur Konfiguration, XOM fürs XML). Zusammen sind das weniger als 4MB.