Daten sind der Schlüssel zu No-Code Programmierung. Wenn Menschen ohne Programmierkenntnisse komplexe IT Probleme lösen, müssen sie die Daten im Griff haben.
Mit dem Slogan “It’s the economy, stupid!” (“Es ist die Wirtschaft, Dummerchen”), der von dem Wahlkampf Strategen James Carville geprägt wurde, gewann Bill Clinton 1992 die US-Präsidentschaftswahl. Platziert auf einem Schild im Hauptquartier in Little Rock hatten die Mitarbeiter diese Botschaft ständig vor Augen und konnten all die vielen, kleinen Entscheidungen, die notwendig waren, die Wahl zu gewinnen, daran ausrichten und messen.
“It’s the data, stupid!” (“Es sind die Daten, Dummerchen!“) ist der Leitsatz für das titan-Projekt. Vor allem anderen sind es die Daten, die wir im Griff haben müssen, damit wir eine kohärente Plattform für eine iterative Systemintegration schaffen.
Die Welt verändert sich
Im Zuge der Digitalisierung verändert sich die Systemlandschaft in Unternehmen. Spezialisierte Software-Werkzeuge, Maschinen und Systeme wurden bisher miteinander vernetzt, um z.B. Planungs- und Konstruktionsdaten oder statistische Daten auszutauschen. Diese geringfügige Vernetzung hat den Vorteil, dass Abhängigkeiten kein Problem darstellen, wenn ein Werkzeug durch ein anderes ersetzt wird oder eine Aktualisierung einer Software benötigt wird.
Heute steigt der Grad der Vernetzung der Systeme in Unternehmen und über Unternehmensgrenzen hinaus exponentiell. Abhängigkeiten sind auf einen Blick nicht mehr leicht erkennbar. So ein komplexes System kann nicht mehr einfach ausgetauscht werden. Wissen, das in die Automatisierung von Prozessen geflossen ist, ginge verloren.
Eine moderne Integrationsplattform wie titan muss daher in der Lage sein Komplexität beherrschbar zu machen und dabei gleichzeitig feste Abhängigkeiten zu spezialisierten Werkzeugen vermeiden. Offene Schnittstellen, leichte Anpassbarkeit und lose Kopplung sind dabei ebenso wichtig wie eine verständliche Darstellung der Daten.
Die einzige Quelle der Wahrheit
Es gibt eine Reihe von Möglichkeiten, Daten in einem System zu beschreiben. Dabei geht es sowohl um die Dokumentation, die leicht verständlich und aktuell sein muss, als auch um die technische Evaluierung und Anwendung der Datenbeschreibung.
Datenschema und automatisierte Generierung von Dokumentation gibt es für verschiedene technische Aspekte. Schnittstellen für Microservices werden mit RAML oder Swagger beschrieben, für XML gibt es XML Schema und DTD, für Datenbanken SQL und so weiter.
Da die titan-Plattform jedoch das Ziel hat unabhängig von bestimmten Technologien zu sein, war das keine Option. Wir benötigten eine Technologie-unabhängige Beschreibung der Daten, die leicht verständlich ist und trotzdem detailliert genug, damit technische Aspekte wie Datenmodelle automatisiert abgeleitet werden können. Schnittstellen und Datenmodelle in Datenbanken sollen mit den gleichen Begriffen definiert werden. Die Beschreibung der Daten dient sowohl den Menschen als Dokumentation, als auch dem System als einzige Quelle der Wahrheit. Nur so ist unserer Meinung nach über einen langen Zeitraum die Pflege des Systems möglich, ohne dabei mit jeder Änderung technische Schuld aufzubauen.
Die Abwärtsspirale
Technische Schuld entsteht leicht, wenn Systeme komplexer werden und nicht mehr leicht zu überblicken sind. Änderungen werden eingeführt, ohne vorhandene Abhängigkeiten und Konventionen zu beachten. Wird technische Schuld nicht erkannt und regelmäßig behoben, kommt es irgendwann zu immer häufigeren Störungen bis hin zum Systemversagen.
Vernetzte Systeme müssen jedoch sowohl regelmäßig angepasst werden als auch wachsen. Nur so können neue Anforderungen und Herausforderungen bewältigt werden. Die immer umfassendere Vernetzung von IT-Systemen führt zukünftig dazu, dass Managemententscheidungen immer häufiger Änderungen in IT-Systemen erfordern.
Divide et impera
Das Prinzip Teile und Herrsche wird auch auf die Methode, ein großes, übermächtiges und schwer beherrschbares Problem in viele kleine und übersichtliche zu zerlegen, angewendet.
In der titan-Plattform werden basierend darauf Prozesse mithilfe von Flows als Ablaufdiagramm dargestellt. Flows sind sowohl die technische Umsetzung eines Prozesses als auch dessen Dokumentation. Sie dienen dazu, Wissen über den Kontext zu transportieren, damit Menschen ohne IT-Hintergrund an Aspekten des Systems, die sie betreffen, konstruktiv mitarbeiten können. Flows wiederum bestehen aus Bricks, die miteinander verbunden werden. Ein Brick löst einen relativ kleinen Teilaspekt, auf den sich ein Programmierer bei der Konzeption konzentrieren kann. Der Teilaspekt sollte so klein sein, dass er leicht zu kommunizieren und zu verifizieren ist.
Daten, Daten, Daten
Zwischen den Bricks werden Datenpakete ausgetauscht. Diese Flow-Packets stellen ebenfalls einen Teilaspekt des Systems dar. Sie fließen durch das System und hinterlassen ihre Spuren, indem sie Aktionen, wie das Versenden von E-Mails oder das Einschalten eines Alarmsignals, steuern. Natürlich werden sie auch genutzt, um permanente Datenbestände aufzubauen oder zu verändern.
Für die Beschreibung der Daten wurde für die titan-Plattform eine eigene Schema-Sprache entwickelt, die speziell dafür optimiert und angepasst werden kann. Sie dient als Dokumentation der Daten wie auch als technische Implementierung.
Abb.2 zeigt, wie Module helfen Daten zu strukturieren und technische Teilaspekte abgeleitet werden.
Die titan-Plattform kümmert sich um die Details
Als Menschen sind wir nicht gut dafür gerüstet, alle Details eines komplexen Systems im Blick zu haben. Dafür nutzen wir heute Informationstechnologie und Software.
Damit die titan-Plattform optimal dabei unterstützen kann, sich um Details einer Änderung zu kümmern, werden Schemata eingesetzt. Zum Beispiel wird beim Verbinden von Bricks automatisch geprüft, ob die Ausgangsdaten des einen kompatibel mit den Eingangsdaten des anderen sind. Der Nutzer wird informiert, wenn es Konflikte gibt.
Bricks werden in verschiedenen Zusammenhängen in unterschiedlichen Flows eingesetzt. Durch die Beschreibung der Daten ist die titan-Plattform in der Lage, den Nutzer vor einem produktiven Einsatz zu informieren, wenn Änderungen Probleme verursachen würden.
Simulation und Test
Natürlich müssen Änderungen im System getestet werden. Integrierte Systeme zu testen ist ein Herausforderung, weil Daten systemspezifisch sind. Testdaten zu erzeugen und zu pflegen ist aufwendig. Das Schema hilft dabei, Testdaten automatisch zu erzeugen und neue Flows zu testen.
Wiederverwendbare Daten
Wie die Bricks werden auch Daten in Teilaspekten dargestellt. Es ist relativ leicht, eine Adresse zu definieren.
anschrift = [
Strasse = string,
Postleitzahl = number,
Ort = string
] : doc "Globale Definition einer Adresse;
Wie die Adresse können Teilaspekte der Daten im System leicht beschrieben und wiederverwendet werden. Die Defintion einer Person mit einer Adresse könnte so aussehen:
person = [
Vorname = string,
Nachname = string,
Alter = number,
Adresse = anschrift
] : doc "Person mit Adresse";
Möchte ich einen Firmenkontakt beschreiben, der eine Liste von Personen und die Adresse des Unternehmens enthält, kombiniere ich wieder die entsprechenden Teilaspekte:
firma = [
Firmenname = string,
Firmenadresse = anschrift,
Ansprechpartner = person*
] : doc "Firma mit Adresse und Ansprechpartnern";
Der *
hinter person
zeigt an, dass es sich um eine Liste handelt.
Jeder Teilaspekt, der beschrieben wird, ist für sich genommen keine große Herausforderung. Der Vorteil der Wiederverwendbarkeit ermöglicht es, dass Änderungen sich durch alle Teilaspekte propagieren. Die titan-Plattform kümmert sich dabei um die Details und zeigt an, wenn potentielle Probleme auftreten. Notwendige Änderungen werden durchgeführt, ohne Probleme im Betrieb befürchten zu müssen. Das System bleibt auf dem neuesten Stand.
Die Quelle der Wahrheit für alle
Für die Dokumentation kann ein Nutzer das Schlüsselwort doc
verwenden, um zusätzliche Informationen anzufügen. Wird das Schema geändert, wird automatisch die Online-Dokumentation aktualisiert.
Das Schema kann in verschiedene technische Teilaspekte konvertiert werden. In der titan-Plattform wird beispielsweise eine binäre, kompakte Darstellung generiert, damit Schemata untereinander oder mit Daten in Echtzeit verglichen werden können (Abb.2). Zukünftig sollen auch andere Formate wie SQL Datenmodelle, XML Schema, JSON Schema und weitere erzeugt werden.
Die Abbildung zeigt, wie globale Datentypen in Teilaspekten der Daten eingesetzt werden. Aus diesem kompletten Datenmodell werden Teilaspekte in andere Darstellungen für unterschiedliche Zwecke konvertiert.
So entsteht eine unabhängige Beschreibung, die sowohl für die beteiligten Menschen wie auch für die titan-Plattform als Referenz und alleinige Quelle der Wahrheit dient.
Interesse geweckt? – Bald gibt es mehr Infos zu titan. Folge uns auf Twitter @InDevOps_Titan
Hier findest Du das Projekt ujoschema-py
Titel Photo by Markus Spiske from Pexels