header image of page Richtige Technologie-Entscheidungen treffen

Richtige Technologie-Entscheidungen treffen

Micro Designed Infrastructures entwickelt optimale, nachvollziehbare und unternehmensweit anerkannte Infrastrukturen bzw. Technologie-Stacks

Technologie Entscheidungen sind schwierig und schwerwiegend, entscheiden unter Umständen über Erfolg und Misserfolg eines Projekts. Wie findet man den passenden Technologie-Stack? „Micro designed Infrastructures” (MDI) ist ein neuer Ansatz, der mit Anleihen aus „Design Thinking” eine optimale, nachvollziehbare und unternehmensweit anerkannte Infrastruktur bzw. Technologie-Stack entwickelt.

Technologie und Infrastruktur Entscheidungen sind herausfordernd, da verschiedenste Anforderungen (Unternehmen-, Applikationsanforderungen, Zukunftssicherheit etc.) zusammengefasst und geeignete Lösungungen gefunden werden müssen. Teilweise ist die Komplexität eines Projektes so hoch, dass Best-Practice-Ansätze ähnlicher Projekte angewendet werden, die jedoch einen anderen Kontext besitzen. Somit werden unter Umständen Entscheidungen getroffen, die am Ende nicht zur Applikation oder dem Unternehmen passen. Es werden die Erwartungen des Managements bezüglich Kosten und Geschwindigkeit nicht getroffen und der Aufbau oder die Übergabe in den Betrieb wird zum Stolperstein. Wie kann dies verhindert werden?

Das Prinzip

Zwei Herangehensweisen erleichtern die Lösung komplexer Probleme: ein strukturierter Prozess zur Lösungen von Problemen und das Aufteilen eines großen Problems in kleinere Teile, die jeweils einfacher und klarer lösbar sind.

Strukturiert Lösungen entwickeln - Design Thinking

Design Thinking basiert auf der Annahme, dass Probleme besser gelöst werden, wenn Menschen unterschiedlicher Disziplinen in einem die Kreativität fördernden Umfeld zusammenarbeiten. Gemeinsam entwickeln sie ein Verständnis für die Bedürfnisse und Motivationen von Menschen, um daraus Konzepte und Lösungen, die mehrfach geprüft werden, abzuleiten.

Teil dieses Prozesses sind die Schritte Wahrnehmen, Definieren, Ideenfindung, Prototyping und Test. Angewendet wird Design Thinking unter anderem bei der Entwicklung eine Applikation oder der Digitalisierung eines Geschäftsbereichs.

Zerlegen eines Problems - Microblocks

Das Problem von IT-Services bzw. Applikationen ist die Komplexität der Anforderungen, das fängt beim Entwicklungs-, Integrations- und Deployment-Prozessen an und hört bei Datensicherung, IT-Sicherheit und Datenschutz auf. Teilt man einen IT-Service in Einzelteile werden die spezifischen Anforderungen überschaubarer.

Ein ähnlicher Ansatz wird mit Microservices bei der Software-Entwicklung angewendet. Sogenannte Verticals teilen eine Applikation in funktionale Blöcke die lose gekoppelt sind. Das vereinfacht die Softwareentwicklung und erhöht die Resilienz der angestrebten Lösung. Allerdings werden unternehmens-, betriebs- und datenspezische Kontexte dabei nicht betrachtet.

Der Microblock (in Anlehnung an Microservices so genannt) ist ein von anderen Blöcken entkoppelter Teil eines IT-Services, der eine spezielle Funktion erfüllt. Dieser Block muss folgende Vorgaben erfüllen:

Design Thinking + Microblocks = Micro Designed Infrastructur

„Micro Design Infrastructure” (MDI) wendet Design Thinking auf die Infrastruktur-Konzeption von IT-Services an. Als IT-Service wird jegliche Form von modular aufgebauten Applikationen oder IT-Diensten betrachtet. Dieser IT-Service wird zerlegt in Microblocks. Diese bilden dann die Basis (im Sinne von Design Thinking: Persona) für die Technologie-Entscheidungen.

Aus dem Kontext eines Microblocks werden die spezifischen Infrastruktur- und Technologie-Anforderungen abgeleitet. Mit weniger dafür essenziellen Anforderungen lässt sich einfacher eine passende Technologie Entscheidung treffen. Wichtig ist jeden funktionalen Teil eines IT-Service zu betrachten, neben den Offensichtlichen, wie Applikationsmodule (Microservices), gehören Access bzw. PKI Management, DNS, Service-Discovery, Monitoring, Logging und Datensicherung ebenfalls dazu.

Der MDI-Prozess benutzt an das Design-Thinking angelehnte Prozessschritte: Wahrnehmen, Definieren, Ideenfindung, Prototyp und Test. Im Sinne der Freien Entfaltung müssen die Schritte nicht exakt in dieser Reihenfolge bearbeitet werden, es geht viel mehr darum einen Rahmen zu schaffen, der möglichst alle Aspekte der Lösungsfindung abdeckt.

Vorgehen

Setup - Team & Umfeld wählen

Beim der Zusammensetzung eines MDI-Teams wird auf unterschiedliche IT-Disziplinen geachtet. Ziel ist alle Kontexte und Anforderungen eines Service und des einzelnen Microblocks verstehen und bewerten zu können. Dazu gehören IT-Management, Architektur, Entwicklung und Betrieb, Informationssicherheit und Datenschutz. Das Team sollte aus vielseitigen Menschen mit herausragendes Fachwissen in ihrer jeweiligen Disziplin und breitgefächerte und interdisziplinäre Kenntnisse bestehen.

Wahrnehmen - Verstehe das Problem

Ziel dieser Phase ist den IT-Service in Microblocks zu trennen und ein Verständnis für die Prozessabläufe und den Datenfluss zu erlangen. Zur Unterstützung sollte diese Phase parallel und gemeinsam mit das Softwarearchitektur-Team durchgeführt werden. Die MDI-Teammitglieder teilen, diskutieren und dokumentieren den Kontext in dem sie einen Microblock betrachten.

Definieren - Definiere die Anforderungen

Schnittstellen (Typ, Protokoll), Daten (Eingang, Sensibilität, Menge, Sicherung, Ausgang), Verarbeitung (Parallelisierung, Programmiersprache), Überwachung (Monitoring, KPI, Logdaten) sind Teil eines Microblock, die die Anforderungen vorgeben. Dazu kommen noch Entwicklungs- und Betriebsprozesse (Deployment und Integration). Schließlich folgen noch Unternehmensspezifische Anforderungen hinzu (Datenschutz, Informationssicherheit, Kostenvorgaben).

Ideenfindung - Lösung erarbeiten

Für jeden einzelnen Microblock werden mehrere Ideen einer Technologie-Lösung entwickelt, die einzige Vorgabe ist, dass die Vorgaben getroffen werden müssen. Durch ständiges Hinterfragen wird geprüft, ob die Auswahl einer Technologie, objektiv und sinnvoll ist. Dafür bietet sich zum Beispiel die 5-Why-Methode an.

Prototyp - Entwickle einen Prototypen

Bei der Entwicklung von Prototypen sollte von Anfang an auf Automatisierung gesetzt werden, da sie die Wiederverwendbarkeit und Anpassung von Microblock-Prototypen vereinfacht. Für jeden Prototypen müssen Healthchecks und automatisierte Security-Checks implementiert werden.

Test - Funktionale Prüfung des Service

Im letzten Schritt wird der wird der Service aus den Microblocks zusammen gesetzt. Funktionale Test und Performance-Tests zeigen ob jeder einzelne Microblock sich im Zusammenhang korrekt verhält. Treten hier Fehler auf, müssen diese genau analysiert werden um den Ursprung herauszufinden (z.B. übersehene Anforderungen, unpassende Technologie, Fehler im Aufbau des Prototyps etc.). Es wird zum entsprechenden Prozessschritt zurückgesprungen und nachgebessert. Sollte sich alles wie gewünscht verhalten, dann steht dem Go-Live nichts im Wege.

Zusammenfassung

Ziel von „Micro Design Infrastructures” ist mit einem Team von kreativen Spezialisten eine optimale Infrastruktur für IT-Services zu entwickeln. Durch den modularen Aufbau, dem Augenmerk auf Trennung einzelner Blöcke und hochgradiger Automatisierung kann die Anzahl benötigter Software-Umgebungen auf ein Minimum reduziert werden und die Kosten des Services zu reduzierten.

Wird dieser Ansatz konsequent im Unternehmen angewendet, entstehen Microblockcluster auf gleicher Technologiebasis, da durch geringfügig abweichende Kontexte (meist ändert sich nur der Applikationskontext) Entscheidungen auf die gleiche Technologie hinauslaufen werden. Somit entsteht eine hochgradig effiziente Infrastruktur aus Kern-Technologien.

Abgrenzung

Software Architektur

Die Softwarearchitektur ist Teil des Softwareentwurfs (siehe SWEBOK ), innerhalb dessen sie als Grobgliederung der Komponenten entsteht. Während der Softwareentwurf sich auch auf lokale Aspekte innerhalb des architektonischen Rahmens der Software bezieht und deshalb sehr detailliert sein kann, ist die Softwarearchitektur eine globale Eigenschaft des Gesamtsystems.
Wikipedia

Software Architektur entwirft eine Grobgliederung der Komponenten eine Software und lässt dabei den Aspekt der Technologie beiseite. MDI ergänzt die Software Architektur um genau diesen Aspekt. Das bedeutet, dass Micro Design Infrastructures keine Alternative, sondern komplementärer Prozess ist, der parallel ablaufen sollte.

Microservices

Microservices sind ein Architekturmuster der Informationstechnik, bei dem komplexe Anwendungssoftware aus unabhängigen Prozessen komponiert wird, die untereinander mit sprachunabhängigen Programmierschnittstellen kommunizieren. Die Dienste sind weitgehend entkoppelt und erledigen eine kleine Aufgabe. So ermöglichen sie einen modularen Aufbau von Anwendungssoftware.
Wikipedia

Microservices beziehen sich hauptsächlich auf die Anwendungs-Entwicklung. Es werden Anwendungen dekomponiert anhand dem Applikations-Kontext mit Hinsicht auf vertikale und horizontale Skalierbarkeit. Micro Designed Infrastructures (MDI) betrachtet einen umfassenderen Kontext zur Definition und Aufteilung von Applikationen und definiert zu dem ein Verfahren nachvollziehbare und unternehmensweit anerkannte Entscheidungen zu treffen.

Independent System Architecture (ISA)

ISA stellt Prinzipien für Microservices auf. ISA definiert grundlegende Eigenschaften von Microservices, die erhebliche Probleme aufwerfen, wenn sie nicht eingehalten werden.
Heise

Die in ISA definierten Prinzipien ähneln der Idee von MicroBlocks in MDI stark. Darüber hinaus definiert Micro Designed Infrastructures einen Prozess wie aus diesen Prinzipien, im Kontext betrachtet Infrastrukturen für IT-Services entwickelt werden.

DevOps

DevOps beschreibt einen Prozessverbesserungs-Ansatz aus den Bereichen der Softwareentwicklung und Systemadministration. […] DevOps soll durch gemeinsame Anreize, Prozesse und Software-Werkzeuge eine effektivere und effizientere Zusammenarbeit der Bereiche IT-Entwicklung, IT-Betrieb und Qualitätssicherung ermöglichen.
Wikipedia

DevOps beschreibt eine Kultur der besseren Zusammenarbeit. Diese Kultur ist Basis jeglicher konstruktiven Zusammenarbeit in der IT, so auch bei Micro Designed Infrastructures. MDI gibt jedoch spezifische Prozesse und Prinzipien vor wie mittels dieser Zusammenarbeit ein spezifisches Problem gelöst werden kann.

Domain-driven Design

Domain-driven Design (DDD) ist eine Herangehensweise an die Modellierung komplexer Software. Die Modellierung der Software wird dabei maßgeblich von den umzusetzenden Fachlichkeiten der Anwendungsdomäne beeinflusst. […]
Domain-driven Design basiert auf folgenden zwei Annahmen:
- Der Schwerpunkt des Softwaredesigns liegt auf der Fachlichkeit und der Fachlogik.
- Der Entwurf komplexer fachlicher Zusammenhänge sollte auf einem Modell der Anwendungsdomäne , dem Domänenmodell basieren.
Wikipedia

DDD besitzt eine ähnliche Herangehensweise an Problemlösungen, gerade durch die Fokussierung auf Funktion und Kontext. Hauptsächlich sind Elemente in DDD fachlich basiert im Gegensatz zu den von MDI verwendeten Microblocks, die Funktions basiert sind. Das bedeutet, dass Micro Design Infrastruktur keine Alternative, sondern komplementärer Prozess zu DDD ist.

Self-Contained-Systems (SCS)

Der Ansatz von Self-contained System (SCS) ist eine Architektur, die sich auf eine Trennung der Funktionalität in viele unabhängige Systeme konzentriert, so dass das gesamte logische System eine Zusammenarbeit vieler kleinerer Softwaresysteme ist. Dadurch wird das Problem der großen Monolithen vermieden, die ständig wachsen und schließlich unhaltbar werden. In den letzten Jahren haben wir seine Vorteile bei vielen mittelgroßen und großen Projekten erkannt.
scs-architecture.org

SCS betrachtet einzelne Module als autonom agierende Webapplikation, die sowohl Datenlogik als auch Applikationslogik enthalten. Jede Webapplikation beinhaltet ein eigenes Userinterface und wird von getrennten Teams bearbeitet. Micro Designed Infrastructures betrachten Technologie-Entscheidungen rein aus funktionaler Sicht. Ein Grund mehrere Funktionen zusammenzufassen besteht nicht. Darüber hinaus definiert MDI einen Prozess unvoreingenommen und kreativ Infrastrukturen für IT-Services zu entwickeln.