Sonntag, 13. Januar 2019

Wie das System sich selbst regelt - Rückkopplungen

Wie im letzten Post angekündigt befasse ich mich heute mit Rückkopplungen und wie sich das auf System auswirkt.

Eine Rückkopplungsschleife ist eine geschlossener Kreislauf kausaler Verknüpfungen, die von einem Bestand ausgehen und über eine Anzahl von bestandsabhängigen Entscheidungen, Regeln, physikalischen Gesetzen oder Eingriffen über eine Fluss größe oder Eingriffen über eine Fluss größe wieder auf den Bestand zurückwirken.

 Aber was hilft das jetzt bei Systemen?
Nun Rückkopplungsschleifen dienen dazu das System in einen bestimmten Zustand zu halten.
Wie im menschlichen Gehirn (da ist es der Hypothalamus) braucht das System eine Stellschraube für die Funktionen. Diese Komponente versucht immer das System am Sollwert zu halten. Dieses halten am Sollwert (Homoöstase) genannt dient dazu das System zu erhalten.

Um diese Werte zu erhalten braucht es Messungen von allen Komponenten des System.
Metriken die dann ausgewertet werden. 
Nur so kann das System über sich selbst Bescheid wissen.
Reflektion 

Ein System das über sich "nachdenkt" hört sich sehr Science Fiction mäßig an aber in letzter Zeit gab es riesen Fortschritte mit Maschinen Lernen.
Wenn ein System so viel Daten zur Verfügung hat, ist es möglich das ein System Lernen kann.

Es gibt verschiedene Arten von Rückkopplungsschleifen aber bei aller Reflektion darf man nicht vergessen das das System auch noch einen Job zu erledigen hat.


Sonntag, 6. Januar 2019

Homoöstase bei Software-Systemen

Inspiriert von einem Vortrag von Chad Fowler hab ich mich mit biologischen Systemen befasst und mir Gedanken gemacht über gewisse Vorgänge die biologische Systeme in einem bestimmten Zustand zu halten versucht.

Die Homöostase garantiert optimale Betriebsbedingungen für die Körperzellen.
Für die Konstanz aller dieser Parameter sorgen Regelungsprozesse. Hierbei wird nach dem Prinzip der negativen Rückkopplung der Änderung eines konstant zu haltenden Parameters (Regelgröße) durch eine Störung (Störgröße) entgegenwirkt. Der Organismus übt hierzu über ein oder mehrere so genannte Stellglieder einen entgegengesetzten Einfluss auf die Stellgröße aus, bis sie den Sollwert wieder erreicht hat.

Das muss es meiner Meinung nach auch in Software - Systemen geben, vor allem wenn sie lang laufende Software Systeme sind. Diese Regelungsprozesse die zum einen durch Metriken auf der anderen Seite durch Maschinen Learning erreicht werden könnte. Nur durch Rückkopplung ist es möglich den derzeitigen Zustand des Systems zu kennen und darauf zu reagieren.

Diese Systeme müssen auch als Teilen, nennen wir sie Zellen bestehen. Denn nur so wird es möglich sein das System anzupassen an die verschiedenen Anforderungen die im Laufe der Zeit auftreten.
Zellen-Architektur ist eine neue Form einer Service-orientierten Architektur.
Auf der anderen Seite gibt es auch Software-Design Ansätze die auch über die Software Zellen basiert.

Software Zellen die miteinander kommunizieren und so das Software-System bilden und dadurch sich auch weiterentwickeln kann das sind die Eigenschaften eines solchen Systems.
Was man in so einem Fall nicht vergessen darf wir sprechen hier von einem verteilten System und die Kommunikation geht über das Netzwerk und die Internetprotokollfamilie kommt hier zum Einsatz.

Monitoring,Service Discovery, Maschinen Lernen, Container Technologie und Orchestrierung das sind meiner Meinung die wichtigsten Bestandteile.

Wandelbarkeit von Software Systemen bekommt man nicht umsonst , alles hat seinen Preis.
Hier ist es auf jedenfall Komplexität.
Man sollte achtgeben das man nicht Gödels Fluch erliegt.

Mein nächster Post wird sich um Regelkreise drehen.
Also  bis dann



Dienstag, 4. Dezember 2018

Das vernetze Unternehmen und Integration

Nach der durcharbeit des Buches "The CONNECTED COMPANY" von Dave Gray und Thomas Vander Wal , habe ich mir meine Gedanken gemacht was heißt das für die Integration von Systemen.

Ich stelle mich auf die Schultern von einigen die sich mit diesen Themen Beschäftigt haben, sei es Ralph Westphal mit seinem Software-Zellen Ansatz im Softwaredesign.
Aber auch Chad Fowler der mir in seinen Presentationen immer deutlich macht wie wichtig es ist Metriken zu benutzen um einfach besser beurteilen zu können was jetzt das Problem ist und sich über Legacy einige Gedanken gemacht hat.

Die Kontextanalyse ist in Integrationsfragen das um und auf. 
Es ist wichtig wenn nicht elementar zu wissen woher kommen die Information wo werden sie transformiert  und wohin fließen sie.
Diese Informationen fließen sehr oft von einer Applikation zur nächsten erzeugen Seiteneffekte. Wenn man versteht wie die Informationen fließen kann man viel besser verstehen wie eine Integration stattfinden kann.
Das in einem Modell darzustellen mit verschiedenen Sichten für verschiedene Personengruppen ist sehr wichtig und dient zum Verständnis des Systems

Wie so oft werden auch in diesem Bereich biologische Systeme als Vorbilder hergenommen, und sei es auch nur in Teilbereichen.
Die Idee der Zellen kam in mehreren -Sichtweisen auf, sei es im SoftwareDesign wie auch in der Integration-Architektur.
Ein System zu haben das sich aus Zellen definiert und dadurch erneuert ist nicht nur für die Agilität ein wichtiges Thema sondern auch für den Investitionschutz.
Systeme die in drei Jahren veraltet sind weil sie zu sehr ein geschlossenes System sind kann man sich in wenigen Fällen erlauben. Es entspricht einer Wegwerf-Kultur nur sind diese Applikationen so entworfen das sie sehr schwer zu Adaptieren oder mit anderen zu verbinden sind. Das mag für ein kleines Startup durchaus noch möglich so vorzugehen bei einem mittleren bis größeren Unternehmen birgt das einige Probleme.

Ganzheitliches Systemdenken wird meiner Meinung immer wichtiger. 
Das System als Summe seiner Teile zu sehen wird so nicht reichen es besteht auch aus den Informationen die durch das ganze System fließen. 
Die Zellen leisten ihren Beitrag.
Homöostase  (die Fähigkeit eines Systems, seine innere  Umgebung zu regulieren, um einen stabilen, konstanten Zustand aufrechtzuerhalten) ist ebenfalls ein Konzept das hier eine wichtige Rolle spielt.
Beschrieben im Essay Desing Beyond Human Abilities von Richard P. Gabriel .
Die Apoptose (der programmierte Zelltod) ist meiner Meinung nach ein wichtiges Werkzeug davon (da wird es auch in Kürze einen eigenen Artikel davon geben)




All diese Teile fügen sich zu einem ganzen zusammen diese ganzheitliche Betrachtung eines System wird wichtig sein damit System in der Zukunft langlebig sind.
  • agile Techniken um Applikationen innerhalb von Systemen zu vernetzen
  • Zell-Architekturen
  • Metriken um die "Gesundheit" des System beurteilen zu können.
  • die Fähigkeit des Systems eine Homöostase zu haben, sowie die Apoptose (programmierten Zelltod) herbeizuführen.

Für mich sind das die wichtigsten Punkte um langlebige Systeme zu haben die sich evolutionär verändern können. Ohne andere Teile mit in den Abgrund zu reißen.
Aufbauend auf eine gute Infrastruktur die den Boden dafür legt bis hin zu neuen Agilen Software Architekturen.
Das ist der Weg den ich für jeden Integrations-Spezialisten für wichtig erachte das man sich damit beschäftigt.