Softwareentwicklung

Zentrale Datenschnittstelle für modulare Software: Wie Kosmos.Memoria Anwendungen verbindet

Sobald mehrere Anwendungen innerhalb eines Systems dieselben Informationen benötigen, entsteht schnell eine Architektur, die zunächst praktisch wirkt und später immer schwerer beherrschbar wird. Anwendung A greift direkt auf die Datenbank von Anwendung B zu, Anwendung C verwendet dieselben Tabellen ebenfalls, und irgendwann hängt eine Änderung an einem scheinbar kleinen Datenmodell plötzlich an mehreren Stellen, die ursprünglich überhaupt nichts miteinander zu tun hatten. Technisch kann so etwas lange funktionieren, strukturell entsteht dabei aber ein Geflecht, bei dem kaum noch klar ist, wer welche Daten eigentlich besitzt und welche Anwendung sie verändern darf.

Genau dieses Problem wollte ich bei Kosmos möglichst früh vermeiden. Deshalb gibt es Memoria als zentrale REST-basierte Datenschicht, über die die unterschiedlichen Anwendungen ihre Informationen speichern und austauschen können. Argos, Atlas, Agenda, Puls, Harmonia und weitere Module müssen dadurch nicht direkt auf die internen Datenstrukturen anderer Anwendungen zugreifen, sondern können über klar definierte Schnittstellen mit den Informationen arbeiten, die für sie bestimmt sind.

Kosmos bleibt dadurch trotz seiner vielen spezialisierten Anwendungen ein zusammenhängendes System, ohne dass aus der gemeinsamen Plattform automatisch eine einzige große monolithische Anwendung entstehen muss.

Eine gemeinsame Datenbasis darf nicht zu gemeinsamer Geschäftslogik führen

Eine zentrale Datenschicht birgt allerdings selbst ein Risiko, wenn sie zu viel Verantwortung übernimmt. Wenn Memoria irgendwann nicht nur Daten speichert und bereitstellt, sondern auch die fachlichen Entscheidungen sämtlicher Anwendungen enthält, wäre zwar der Datenzugriff vereinheitlicht, die eigentliche Architektur aber wieder an einer zentralen Stelle zusammengezogen. Genau das möchte ich vermeiden.

Memoria soll deshalb möglichst wenig darüber wissen, warum eine Information fachlich wichtig ist. Argos bleibt für die IT-Infrastrukturanalyse zuständig, Atlas verwaltet räumliche Zusammenhänge, Agenda kennt die Regeln ihrer Aufgabenbearbeitung und Puls versteht den Lebenszyklus eines Artikels. Memoria stellt die Infrastruktur bereit, über die diese Daten gespeichert und kontrolliert abgerufen werden können, ohne die Fachlogik der jeweiligen Anwendung zu übernehmen.

Diese Unterscheidung ist für mich gerade deshalb wichtig, weil Kosmos weiter wächst. Je mehr Anwendungen hinzukommen, desto größer wäre ansonsten die Versuchung, gemeinsame Geschäftsregeln in die zentrale Schicht zu verschieben, weil dort ohnehin alle Daten vorhanden sind. Kurzfristig wäre das bequem, langfristig würde Memoria damit jedoch zu einem schwer veränderbaren Kern, von dem jedes andere Modul abhängig wäre.

APIs schaffen einen stabileren Vertrag als direkte Datenbankzugriffe

Wenn eine Anwendung direkt auf Tabellen einer anderen Anwendung zugreift, kennt sie deren interne Speicherung und hängt zwangsläufig von ihr ab. Schon eine Umbenennung, eine Normalisierung des Datenmodells oder eine andere technische Umstellung kann dann Auswirkungen auf mehrere Anwendungen haben, obwohl sich aus fachlicher Sicht überhaupt nichts verändert hat.

Über eine definierte REST-Schnittstelle lässt sich diese Abhängigkeit deutlich reduzieren. Eine Anwendung fragt beispielsweise nach einem bestimmten Objekt oder speichert eine Information über einen festgelegten Endpunkt, ohne wissen zu müssen, welche Tabellen, Dokumente oder sonstigen Speicherstrukturen Memoria intern dafür verwendet. Solange der vertraglich definierte Zugriff stabil bleibt, kann sich die interne Umsetzung verändern.

Klare Architekturgrenzen sind für mich mit zunehmender KI-Unterstützung wichtiger geworden, weil Codex innerhalb einer gut definierten Struktur sehr viel selbstständiger arbeiten kann. Wenn dagegen jede Anwendung beliebig direkt auf die Daten anderer Bereiche zugreifen dürfte, könnte eine scheinbar einfache Änderung schnell neue versteckte Abhängigkeiten erzeugen, die später kaum noch nachvollziehbar wären.

Vorhandene Informationen sollen nicht für jede Anwendung neu entstehen

Der eigentliche Vorteil einer gemeinsamen Datenschicht zeigt sich für mich besonders dann, wenn eine neue Kosmos-Anwendung entsteht. Sie soll nicht bei null anfangen und sämtliche Informationen erneut sammeln müssen, die im System längst vorhanden sind. Wenn Argos beispielsweise bereits technische Systeme kennt und Atlas deren räumliche Zuordnung verwaltet, kann eine weitere Anwendung auf diese Informationen zurückgreifen, sofern sie dafür vorgesehen und berechtigt ist.

Damit verändert sich die Bedeutung jedes neuen Moduls. Eine Anwendung erweitert nicht nur Kosmos um ihre eigene Funktion, sondern kann gleichzeitig auf einen wachsenden Bestand bereits strukturierter Informationen zurückgreifen. Genau dadurch entsteht für mich aus mehreren Einzelanwendungen langsam eine Plattform.

Wichtig bleibt allerdings, dass dieses Wiederverwenden nicht in wildes gegenseitiges Lesen und Schreiben ausartet. Eine Anwendung darf eine Information nutzen, ohne deshalb automatisch fachlich dafür verantwortlich zu werden. Memoria stellt die technische Verbindung bereit, während die Zuständigkeiten weiterhin klar bei den jeweiligen Anwendungen liegen.

Agenten brauchen kontrollierte Schnittstellen besonders dringend

Eine zentrale API wird noch wichtiger, sobald nicht mehr nur klassische Benutzeroberflächen, sondern auch KI-Agenten auf Kosmos zugreifen. Wenn Agenda Aufgaben an Agenten übergibt oder Vox aus natürlicher Sprache eine Aktion ableitet, möchte ich auf keinen Fall, dass diese Systeme deshalb beliebigen direkten Zugriff auf Datenbanken erhalten.

Über definierte Schnittstellen lässt sich wesentlich genauer steuern, welche Informationen gelesen und welche Aktionen ausgeführt werden dürfen. Ein Agent kann beispielsweise einen bestimmten Datentyp lesen, ohne ihn verändern zu können, während ein anderer eine klar begrenzte Schreiboperation ausführen darf. Dadurch wird die API nicht nur zu einer Komfortschicht, sondern zu einem wichtigen Teil der Sicherheitsarchitektur.

Für mein langfristiges Ziel mit mehreren spezialisierten Agenten ist das entscheidend. Je autonomer einzelne Prozesse arbeiten, desto weniger möchte ich mich darauf verlassen, dass sie aufgrund einer bloßen Anweisung freiwillig bestimmte Bereiche nicht anfassen. Technische Grenzen sind zuverlässiger als sprachliche Regeln, und Memoria kann genau solche Grenzen erzwingen.

Mehrbenutzerfähigkeit gehört ebenfalls an diese Stelle

Solange ich Kosmos ausschließlich selbst benutze, lässt sich bei Berechtigungen vieles vereinfachen. Sobald später mehrere Benutzer denkbar werden, reicht ein globales „darf auf Kosmos zugreifen“ jedoch nicht mehr aus. Unterschiedliche Personen können unterschiedliche Daten sehen oder verändern dürfen, und diese Regeln sollten nicht in jeder einzelnen Anwendung auf völlig andere Weise implementiert werden.

Deshalb ist eine zukünftige Rechte- und Zugriffsschicht bei Memoria sinnvoll. Die zentrale Schnittstelle kann dann berücksichtigen, wer eine Anfrage stellt und welche Operationen für diesen Benutzer oder Agenten erlaubt sind. Die Fachanwendungen müssen trotzdem weiterhin ihre fachlichen Regeln definieren, bekommen aber eine gemeinsame technische Grundlage für Authentifizierung und Berechtigungen.

Das macht Memoria zu einer relativ unsichtbaren, aber sehr kritischen Komponente. Gerade weil viele Anwendungen darauf aufbauen, muss diese Ebene eher konservativ und nachvollziehbar entwickelt werden als experimentell.

Zentral bedeutet auch: Ausfälle werden wichtiger

Eine gemeinsame Datenschnittstelle bringt zwangsläufig eine größere technische Abhängigkeit mit sich. Wenn Memoria nicht verfügbar ist, können mehrere Kosmos-Anwendungen gleichzeitig betroffen sein, selbst wenn deren eigene Oberflächen oder Dienste weiterhin laufen. Das ist der Preis dafür, Daten nicht mehrfach und unabhängig voneinander zu verteilen.

Deshalb gehört Zuverlässigkeit hier für mich stärker in den Mittelpunkt als bei vielen anderen Modulen. Gute Fehlerbehandlung, nachvollziehbare Zustände und klare Schnittstellen sind wichtiger als ständig neue Funktionen. Chronos kann zusätzlich helfen, Fehler und Abläufe nachvollziehbar zu machen, wenn Probleme zwischen mehreren Anwendungen auftreten.

Gleichzeitig muss nicht jede Anwendung bei jedem kurzfristigen Problem vollständig ausfallen. Wo sinnvoll, können lokale Zwischenspeicher, Wiederholungsversuche oder andere Mechanismen helfen, vorübergehende Störungen abzufangen. Solche Entscheidungen müssen allerdings bewusst getroffen werden, weil Caching und verzögerte Synchronisation wiederum neue Fragen zur Aktualität der Daten erzeugen.

APIs verändern sich ebenfalls und brauchen deshalb Regeln

Auch eine gut definierte Schnittstelle bleibt nicht für immer unverändert. Kosmos entwickelt sich weiter, neue Informationen kommen hinzu und bestehende Datenmodelle müssen gelegentlich angepasst werden. Eine zentrale API sollte deshalb nicht davon ausgehen, dass jede Anwendung immer exakt im selben Moment aktualisiert wird.

Neue Felder lassen sich häufig relativ problemlos ergänzen, während das Entfernen oder Umdeuten vorhandener Daten wesentlich vorsichtiger erfolgen muss. Größere Änderungen können Übergangsphasen benötigen, in denen alte und neue Strukturen parallel unterstützt werden. Für mich gehört deshalb auch Versionierung langfristig zu einer stabilen gemeinsamen Schnittstelle.

Das klingt nach einem Detail aus der klassischen Softwarearchitektur, wird aber mit zunehmender Automatisierung eher wichtiger. Wenn mehrere Agenten und Anwendungen unabhängig voneinander arbeiten, darf eine einzelne Änderung nicht stillschweigend voraussetzen, dass sämtliche anderen Komponenten gleichzeitig angepasst wurden.

Memoria ist absichtlich kein spektakuläres Produkt

Im Gegensatz zu Kompass, Atlas oder Vox wird Memoria für einen normalen Nutzer wahrscheinlich kaum sichtbar sein. Genau das ist in Ordnung, denn eine gute zentrale Datenschicht muss nicht ständig Aufmerksamkeit erzeugen. Ihr Wert zeigt sich vielmehr darin, dass andere Anwendungen miteinander arbeiten können, ohne ihre Grenzen aufzugeben.

Wenn Kompass Informationen aus mehreren Bereichen darstellen kann, Agenda zuverlässig Zustände speichert, Atlas und Argos ihre unterschiedlichen Perspektiven auf dieselben Objekte zusammenbringen und neue Module bestehende Informationen verwenden können, erfüllt Memoria seinen Zweck. Es schafft die gemeinsame technische Grundlage, ohne selbst zum Mittelpunkt jeder fachlichen Entscheidung zu werden.

Für mich ist Memoria deshalb tatsächlich eine Art Gedächtnis von Kosmos, allerdings nicht im metaphorischen KI-Sinn, sondern sehr konkret als zentrale, kontrollierte und möglichst stabile Ebene, auf der die verschiedenen Anwendungen Informationen ablegen und wiederfinden können.