© S&SMedia/Bianca Röder
Das Spiel mit dem Komplexitätsfeuer

KISS of Death by Complexity?


KISS ist das Motto dieser Ausgabe des Java Magazins: Keep it simple, stupid! Auf Deutsch: Mach es nicht unnötig kompliziert. Das klingt gut und erstrebenswert. Aber machen wir in der Praxis nicht eher das Gegenteil davon? Wenn man sich umschaut, dann steht uns die Komplexität bis zum Hals. Und anstatt etwas dagegen zu tun, häufen wir jeden Tag fleißig neue Konzepte, Tools und Technologien obendrauf, getrieben von immer neuen Hypes und Hoffnungen auf Patentrezepte. Zeit für eine kritische Betrachtung.

Das mit der Komplexität glauben Sie mir nicht (Kasten: „Komplexität“)? Schauen wir doch einmal auf die Zutatenliste für eine relativ überschaubare internetfähige Anwendung. Die liest sich häufig in etwa so: Java/Kotlin, JavaScript, SPA, Angular/React/Vue, npm/Yarn, webpack, Grunt, React Native/Swift/Kotlin, PWA, Microservices, Maven/Gradle, Spring Boot/Micronaut/Quarkus, BFF, API Gateway, REST/GraphQL, IAM (Identity and Access Management), OAuth 2.0, JWT, Keycloak, Docker, Kubernetes, Rancher, Helm, Operators, Service Mesh (Istio/Linkerd), Consul/ZooKeeper/etcd, Prometheus/Graphite, ELK, RDBMS, NoSQL/NewSQL (MongoDB/Cassandra), Event Sourcing, CQRS, Kafka/RabbitMQ, Jenkins/CircleCI, Unit Testing (JUnit/MochaJS), Integration/Contract Testing (FitNesse/Jasmine/Pact), Security Testing (ZAB), Load Testing (JMeter/Gatling/Locust), Chaos Engineering, User Acceptance Testing, Git, Artifactory/Nexus, IaC (Terraform/AWS CloudFormation/Puppet/Ansible), OpenAPI, ...

Da fehlt noch eine dreistellige Anzahl an Bibliotheken und Frameworks, die typischerweise zum Einsatz kommt (keine Übertreibung!). Es fehlt noch eine Menge weiterer Tools und Technologien, die ich hier nicht erwähnt habe. Es fehlen Hunderte an Alternativen zu den Lösungen, die hier aufgezählt sind, die aber häufig alle in der IT eines größeren Unternehmens zum Einsatz kommen, weil jedes Projekt und jeder Software-Engineer andere Präferenzen hat.

Komplexität

In diesem Artikel verwende ich den Begriff „Komplexität“ eher umgangssprachlich, also im Sinne von „nicht einfach“. In anderen Zusammenhängen werden die Begriffe „kompliziert“ und „komplex“ (auch von mir) strikt unterschieden. In diesem Artikel hingegen werden sie synonym verwendet.

Mit IAM und Security Testing wird das hochkritische und hochkomplexe Thema Security hier auch nur angedeutet. Nicht zuletzt fehlen all die anderen Konzepte, Tools und Technologien, die man benötigt, um eine zuverlässig funktionierende Betriebsinfrastruktur aufzubauen und zu betreiben – was problemlos noch einmal eine solche Liste ergeben würde.

Und das alles für eine überschaubare internetfähige Anwendung, sagen wir: ein nicht zu komplexes Kundenportal. Falls Sie glauben, ich übertreibe: Ich habe mehr als ein Projekt in der Größenordnung gesehen, in dem die Buzzword-Bingo-Liste in etwa so ausgesehen hat. Der Unfairness halber: Das Testen war häufig nicht so ausgeprägt. Ansonsten hat die Liste aber gepasst.

Nun betreibt ein Unternehmen in der Regel nicht nur eine Anwendung, sondern eine ganze Menge davon – häufig hunderte bis tausende Anwendungen. Diese Anwendungen basieren natürlich nicht alle auf den gleichen Konzepten, Tools und Technologien wie die oben skizzierte Anwendung. Entsprechend findet man ganz viele unterschiedliche Konzepte, Tools und Technologien in einem wilden Mix und ohne klare Abgrenzung, häufig zurückreichend bis in die 1970er Jahre.

Zusätzlich findet man auch sehr viel Standardsoftware. Das beschränkt sich nicht nur auf das unvermeidliche SAP mit seinen ganzen Modulen in unterschiedlichen Generationen und Ausbaustufen. Man findet Standardprodukte verschiedenster Art, Aufgabe und Größe, auf vielfältige Weise untereinander und mit den selbstentwickelten Systemen integriert.

Dazu passend findet man in der Regel auch verschiedenste Inkarnationen von Integrationslösungen – hier eine EAI-Lösung, dort einen ESB und eine API-Management-Lösung, alle bei Weitem nicht so flächendeckend und einheitlich genutzt wie bei der Einführung versprochen.

In Summe stapelt sich also sehr viel Komplexität in der IT. Und weil die meisten Beteiligten keine Ahnung mehr haben, wie man diesen Wildwuchs in den Griff bekommen könnte, suchen sie stattdessen angestrengt nach der nächsten Silberkugel, die das Problem auf einmal auf magische Weise lösen soll – und erhöhen die Komplexität damit um die nächste Schicht.

Unentbehrliche IT

Das könnte man jetzt je nach Gemütslage schmunzelnd oder kopfschüttelnd zur Kenntnis nehmen und danach wieder zur Tagesordnung übergehen, wenn IT mittlerweile nicht unverzichtbar geworden wäre.

In der Vergangenheit waren die meisten Produkte und Dienstleistungen des täglichen Lebens frei von IT. Einige von ihnen enthielten eine kundenspezifische Hardwarelösung, die einmal entworfen und getestet viele Jahre lang verwendet wurde.

Heute jedoch sind die meisten Produkte und Dienstleistungen zu großen Teilen softwaregestützt oder rein softwarebasiert (sprich als App oder Anwendung realisiert). Das ermöglicht deutlich anspruchsvollere Lösungen als früher, die auch wesentlich schneller verbessert und angepasst werden können. Nicht nur Mobiltelefone und Tablets, auch Autos, Waschmaschinen und Verstärker verlangen heute immer häufiger nach regelmäßigen Softwareupdates.

Das ist aber nur der sichtbare Teil der Produkte und Dienstleistungen. Die meisten davon verlassen sich auf Backend-Dienste, die in einem (Cloud-)Rechenzentrum gehostet werden und dort große Teile der Intelligenz implementieren – noch einmal ganz viel zusätzliche Software.

Ein Großteil der sogenannten B2C-(Business-to-Customer-)Interaktion erfolgt heute über Software oder wird zumindest von Software unterstützt – Tendenz steigend: Onlinehandel, Onlinebanking, Onlineversicherung, Onlinemedien und, und, und, bis hin zur Onlinestadtverwaltung.

Wenn wir uns die B2B-(Business-to-Business-)Interaktion anschauen, sehen wir uns einer noch stärker soft...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang