Jedes Unternehmen hat verschiedene Anforderungen und Herausforderungen. Daraus resultieren auch jeweils unterschiedliche Architekturprinzipien, die den Gegebenheiten angepasst werden müssen. Ein Unternehmen kann sich zum Beispiel auf Wachstumskurs befinden oder auf Sparkurs. Beide Situationen resultieren in jeweils anderen Architekturprinzipien. Allerdings habe ich im Laufe der Zeit ein paar Prinzipien gefunden, die fast immer gelten. Ich nenne sie die fundamentalen Architekturprinzipien. Sie gelten nicht absolut immer und nicht überall. Aber sie sind ein guter Ausgangspunkt, um sich im eigenen Unternehmen mit der Thematik zu beschäftigen.

Fundamentale ArchitekturprinzipienFundamentale Architekturprinzipien

Einfachheit

Das gelingt nicht immer beim ersten Versuch. Manchmal muss man erst komplizierte Dinge ausprobieren, um zu einer einfachen Lösung zu kommen. Das ist ein Lernprozess. Die Komplexität der Lösung sollte der Komplexität der Aufgabe angemessen sein.

Idempotenz

Wenn es keinen anderen Grund gibt, etwas anderes zu tun, dann sollten die Algorithmen in einem IT-System möglichst idempotent geschrieben sein. Das bedeutet: Sie können beliebig oft hintereinander ausgeführt werden, ohne dass das Ergebnis verfälscht würde. Das ist ungeheuer nützlich bei der Entwicklung und der Fehlersuche in komplexen Systemen.

Unabhängigkeit

Ich mag es, wenn Programme in ausführbare Binaries kompiliert werden, die zur Laufzeit keinerlei Abhängigkeiten haben. Genauso gut finde ich Shellscripts, die auf jeder Unix-Umgebung laufen, ohne dass im System irgendwas außer den Standardtools installiert sein muss. Web-GUIs sollten keine unsinnig langen Build-Prozesse benötigen, die bei jedem Build neue Versionen von Bibliotheken ziehen. Noch schlimmer sind Systeme, die zur Laufzeit von externen Quellen Bibliotheken ziehen. Eine hohe Unabhängigkeit ist zwar ein wenig schwieriger umzusetzen, aber sie macht die Software wesentlich robuster und einfacher zu warten.

Standards

Diese Woche ist ein neues, superheißes JavaScript-Framework erschienen? Lass die Finger davon! Wenn ich ein robustes System bauen möchte, verwende ich ausschließlich gut abgehangene Standardtechnologie. Die Technologie sollte erprobt und gut dokumentiert sein. Auch sollte sie regelmäßig in Bezug auf Sicherheitsaspekte aktualisiert werden.

Automatisierung

Im Vergleich zu Computern sind Menschen faul und vergesslich. Daher sollte alles, was nur geht, automatisiert werden. Das betrifft im Besonderen Deployments, Software-Updates und Backups. Diese Prozesse sollten auf jeden Fall vollautomatisch ablaufen. Darüber hinaus gerne mehr - ich würde mir echt wünschen, wenn hier in Deutschland die Verwaltungsprozesse vollautomatisiert würden. Dafür bräuchte es zwar ein wenig Hirnschmalz, aber noch nicht mal eine KI.

Plan B

Dinge gehen schief, gehen kaputt und funktionieren gelegentlich nicht. Für alles, was in einem IT-System wichtig ist, habe ich einen Plan B. Doppelter Internetzugang, redundante Router und Switches, mehrfache Datenspeicherung, Hardware in Reserve etc. Man muss sich überlegen, was einem wie wichtig ist. Und für alle wichtigen Dinge eine Alternative haben.