Objektorientierte Programmierung ebnete den Weg für eine neue Ära von einfacherem, effizienterem und besser lesbarem Code. Im Mittelpunkt stehen Klassen, die Objekte beschreiben. Eine Klasse definiert, welche Attribute ein Objekt hat und welche Methoden damit verbunden sind. Objektorientierte Programmiersprachen wie Java sind heute die am häufigsten verwendeten Programmiersprachen weltweit.
Mit Cloudomation Engine führen wir das gleiche Konzept für Automatisierungen ein.
In Cloudomation Engine können Benutzer_innen Objektvorlagen erstellen, die Klassen entsprechen und benutzerdefinierte Objekte beschreiben. Diese Objekte können alles sein: Ein Server, ein Kunde, eine Bestellung oder die Gehaltsabrechnung eines Unternehmens.
Objektvorlagen bestimmen die Attribute eines Objekts sowie Lifecycle-Hooks. Attribute beschreiben die grundlegenden Eigenschaften eines Objekts. Lifecycle-Hooks lösen automatisierte Prozesse aus. Es gibt drei Lifecycle-Hooks: on-create, on-update und on-delete.
Die Idee der objektorientierten Automatisierung besteht darin, dass die Automatisierung um Objekte herum modelliert wird, die ihr Gegenstück in der realen Welt widerspiegeln – ähnlich wie digitale Zwillinge. Digitale Zwillinge stellen Objekte in der realen Welt digital dar, indem sie Sensoren verwenden, die den Status ihres realen Gegenstücks überwachen. Der digitale Zwilling ist daher nur eine Kopie.
Im Gegensatz dazu sind Objekte in der objektorientierten Automatisierung funktional an ihre realen Gegenstücke gebunden: Das Erstellen des digitalen Objekts in Cloudomation Engine löst einen automatisierten Prozess aus, der das reale Gegenstück erstellt. Das Ändern des digitalen Objekts in Cloudomation Engine löst einen automatisierten Prozess aus, der das reale Gegenstück ändert. Das Objekt ist daher nicht nur eine Kopie, sondern eine digitale Repräsentation, die eine Interaktion mit dem realen Gegenstück ermöglicht.
Allerdings ist die Definition von „realer Welt“ in diesem Kontext weit gefasst. Typischerweise befasst sich Softwareautomatisierung mit digitalen Entitäten, wie z. B. virtuellen Maschinen (die als „Server“ modelliert werden könnten) oder Daten, die ein Unternehmen über einen Kunden hat (die als „Kunde“ modelliert werden könnten).
Sehen wir uns ein Beispiel an, um zu verstehen, wie das funktioniert.
Beispiel: Server-Automatisierung
Ein häufiger Prozess in der Systemadministration ist das Einrichten einer virtuellen Maschine und die Installation von Software darauf. Oft benötigen diese virtuellen Maschinen dann regelmäßige Wartung, d. h. es müssen Änderungen vorgenommen werden, wie z. B. Software-Updates. Manchmal müssen virtuelle Maschinen auch wieder gelöscht werden. Diese Gruppe von Prozessen ist im Rahmen dieses Beispiels mit „Serverautomatisierung“ gemeint.
Serverautomatisierung wird in den meisten Unternehmen typischerweise auf eine von zwei Arten durchgeführt: Je nachdem, wie oft sie erforderlich ist und wie standardisiert der Prozess ist (z. B. ob immer die gleiche Software auf einem Server installiert werden muss oder immer unterschiedliche Software). Entweder wird sie manuell durchgeführt oder automatisiert. In beiden Fällen würden Systemadministrator_innen den Prozess „durchführen“, und das war’s. Folglich:
- Informationen über die VM sind verteilt. Um herauszufinden, welche Software darauf läuft, müssten sich Systemadministrator_innen einloggen und nachsehen, was bei der Verwaltung vieler VMs nicht machbar ist. Wenn es eine Dokumentation gibt (die manuell oder automatisch bei der Erstellung der VM angelegt wird), ist diese wahrscheinlich schnell veraltet, da sie nur eine Momentaufnahme eines bestimmten Zeitpunkts darstellt. Wann immer es eine Änderung gibt, müsste die Dokumentation aktualisiert werden, was oft nicht passiert.
- Um eine VM einzurichten und Software darauf zu installieren, müsste ein Systemadministrator die Schritte von einem anderen Systemadministrator lernen, was zeitaufwändig und fehleranfällig ist, oder er müsste Skripte in einer Automatisierungssoftware lesen und verstehen, was schwierig und zeitaufwändig ist. Wahrscheinlich werden viele Systemadministratoren nur ein sehr begrenztes oder gar kein Verständnis für viele der IT-Prozesse des Unternehmens haben, selbst wenn sie Automatisierungssoftware verwenden, um sie durchzuführen. Daher wird es für sie schwierig sein, Probleme zu beheben und Änderungen an bestehenden Automatisierungen vorzunehmen.
All das ist normal. Es ist das, was passiert, wenn Menschen komplexe Prozesse verwalten müssen.
Objektorientierte Automatisierung macht nichts davon weniger kompliziert. Sie macht die Verwaltung nur einfacher.
Mit objektorientierter Automatisierung würden Systemadministrator_innen ein „Server“-Objekt in einer objektorientierten Automatisierungsplattform (d. h. Cloudomation Engine, derzeit die einzige ihrer Art 😊) erstellen. Dies würde die Erstellung der VM und die Installation der Software auslösen. Am Ende würde Systemadministrator_innen das Serverobjekt in Cloudomation Engine angezeigt werden, um zu sehen, in welchem Status sich die VM befindet, welche Software installiert ist usw. Wenn eine Änderung vorgenommen werden muss, wird das das Objekt in Cloudomation Engine geändert. Engine nimmt dann die Änderung an der VM vornimmt. Resultat:
- Informationen über die VM werden im Objekt in Cloudomation Engine gesammelt. Es gibt keinen separaten Dokumentationsschritt. Das Ändern von Informationen in Cloudomation Engine stellt sicher, dass die Änderung auf den Server angewendet werden, sodass diese immer auf dem neuesten Stand sind. Das erleichtert es Systemadministrator_innen auch erheblich, eine Änderung vorzunehmen, da bekannt ist, wo und wie sie vorgenommen werden kann.
- Um eine VM zu erstellen, würden sich Sysadmins in die Cloudomation Engine einloggen und ein Serverobjekt erstellen. Das Objekt, die Attribute, der Status sowie die Visualisierung und Protokolle der Prozesse ist sichtbar, die an der Erstellung und Aktualisierung beteiligt sind. Dies macht es leicht zu verstehen, wie ein neuer Server erstellt wird, was dies bedeutet (d. h. welche Schritte tatsächlich bei der Erstellung dieses Servers erforderlich sind) und zu wissen, welche Server bereits existieren. Folglich wird es leicht fallen, Probleme zu beheben und Änderungen an der bestehenden Automatisierung vorzunehmen, die mit dem Objekt verbunden sind.
Was an objektorientierter Automatisierung großartig ist
Im Vergleich zu anderen Automatisierungsansätzen hat die objektorientierte Automatisierung mehrere große Vorteile:
- Sie ist viel einfacher zu verstehen und nachzuvollziehen als ein Haufen von Skripten. Die Objekte bieten mentale Ankerpunkte für Ihre Automatisierung, die sehr greifbar machen, was wann und wo passiert, was die Ergebnisse der Automatisierung sind und wie der aktuelle Status ist. Ein Blick auf die Objekte reicht und Sie werden sofort verstehen, worum es bei einem automatisierten Prozess geht – viel schneller, einfacher und klarer als beim Lesen eines Skripts.
- Objekte sind „selbstdokumentierend“. Das Ändern des Werts eines Attributs in einem Objekt ist „funktionale Dokumentation“: Es aktualisiert nicht nur die Informationen, sondern löst einen Prozess aus, der sicherstellt, dass diese Informationen angewendet werden. Welche Informationen auch immer über das Objekt verfügbar sind, sie sind immer „wahr“, immer synchron mit der realen Welt, weil das Ändern eines Attributs einen Prozess auslöst, der sicherstellt, dass auch die reale Welt verändert wird. Auf diese Weise sind sowohl der aktuelle Zustand des Objekts als auch die Änderungen dokumentiert – einschließlich zum Beispiel, wer eine Änderung vorgenommen hat.
- Objekte bieten einen intuitiven Ort, um Informationen über „Dinge“ zu sammeln, die Entitäten sind, die bereits als mentale Repräsentationen von Dingen wie einem Kunden oder einem Server in unseren Köpfen existieren. Über Objekte nachzudenken ist sehr intuitiv und nah an der Art und Weise, wie wir bereits denken. Wenn wir über das Kundenmanagement nachdenken, denken wir bereits an einen Kunden als eine Entität, die viele Informationen enthält. Das Objekt „Kunde“ existiert bereits in unseren Köpfen. Aber in vielen Fällen haben solche mentalen Entitäten kein Äquivalent in unserer digitalen Infrastruktur. Die Daten, die wir über einen Kunden haben, sind über eine Reihe von Datenbanken und Softwaresystemen verteilt. Das Modellieren dieser Objekte bietet einen Ort, an dem diese Informationen integriert werden können.
- Anmerkung: Das Nachdenken über objektorientierte Automatisierung auf diese Weise eröffnet eine noch größere Perspektive: Die einer objektorientierten Datenverwaltung und objektorientierten digitalen Infrastruktur. Es könnte ein Stammdatenverwaltungssystem in jedem Unternehmen geben, in dem die digitalen Entitäten modelliert werden, die für dieses Unternehmen relevant sind. Daten und automatisierte Prozesse könnten dann mit diesen Objekten verbunden werden. Cloudomation Engine verfügt über ein Stammdatenverwaltungssystem, das es Benutzern und Benutzerinnen ermöglicht, dies für automatisierte Prozesse innerhalb von Cloudomation Engine zu tun. Engine hat auch umfassende Systemintegrationsmöglichkeiten, die es ermöglichen, Informationen und Prozesse in anderen Systemen mit den in Cloudomation Engine modellierten Objekten zu verknüpfen. Aber die Cloudomation Engine ist keine Datenbank. Ihr Stammdatenverwaltungssystem ist dazu gedacht, Metadaten über Objekte zu verwalten und kann Verweise auf Daten in anderen Systemen enthalten (folglich auch die Idee, dass Daten so wenig wie möglich kopiert werden sollten, um Drift zu vermeiden). Engine ist aber (derzeit) nicht darauf ausgelegt, vielen Menschen in einer Organisation die Entdeckung und Arbeit mit Objekten zu ermöglichen. Engines Umfang besteht darin, die Erstellung und Wartung von automatisierten Prozessen für Systemadministratoren_innen, DevOps-Ingenieure_innen, Plattformingenieure_innen, Softwareentwickler_innen und andere technische Fachleute zu erleichtern. ERP-Systeme gehen in gewissem Maße in diese Richtung, indem sie versuchen, eine einheitliche Sicht auf einige der zentralen Entitäten zu bieten, die für die meisten Unternehmen relevant sind: Kunden, Lieferanten, Produkte, Mitarbeiter usw. Sie nähern sich diesem jedoch oft in einer eher fragmentarischen Weise, kommen mit einem festen Datenmodell, das nur begrenzt anpassbar ist, und mit keinen oder sehr eingeschränkten Automatisierungsmöglichkeiten (was bedeutet: keine Lifecycle-Hooks), was sie überwiegend dazu limitiert, als Datenspeicher zu dienen, die eine hohe manuelle Wartung erfordern, um die unvermeidliche Anhäufung von „Datenmüll“ zu vermeiden.
Zusammenfassung
- Die Automatisierung komplexer Prozesse, die viele Schritte, verschiedene Systeme, viele Bedingungen, Variationen und eine Menge Geschäftslogik umfassen, ist schwierig. Es gibt keinen Zauber, der dies einfach machen kann. Aber es gibt Ansätze, die diese Komplexität einfacher handhabbar machen.
- Indem sie sich an der Art und Weise ausrichtet, wie Menschen bereits über die Welt nachdenken, macht objektorientierte Automatisierung es einfacher, komplexe automatisierte Prozesse in den Griff zu bekommen. Sie konzentriert sich auf die Modellierung von Objekten mit Attributen und Lebenszyklen. Die Objekte sind Repräsentationen der mentalen Kategorien, die wir bereits in unseren Köpfen haben: Kunden, Server, Anzeigen und alles andere, was Teil unserer digitalen Geschäftsprozesse ist.
- Das Erstellen, Ändern und Löschen dieser digitalen Objekte löst automatisierte Prozesse aus, die ihre „realen Gegenstücke“ erstellen, ändern und löschen – z. B. durch das Erstellen einer virtuellen Maschine in einer Cloud-Umgebung beim Erstellen eines „Server“-Objekts oder durch das Aktualisieren der Adresse eines Kunden in einem CRM-System beim Ändern eines „Kunden“-Objekts.
- Diese Objekte machen es daher einfach, Objekte zu verstehen und mit ihnen zu interagieren, die oft nur in unseren Köpfen existieren.