Nils Röhrig | JavaScript & Angular Days 2026 | München
https://my.hidrive.com/share/l-ddkun8jn
Eine Definition zu finden ist hart.
Software ändert sich ständig.
Good Practices ändern sich.
Die Gesamtheit der zugrundeliegenden, intrinsischen Konzepte und Eigenschaften eines Systems in seiner Umgebung, realisiert durch seine Elemente und Beziehungen, sowie die Prinzipien seines Entwurfs und seiner Weiterentwicklung.
Quelle: Rücker + Schindele – ISO 42010 Kurzreferenz
Das System
als Ganzes.
Die Umgebung des Systems.
Elemente & Beziehungen
Die Entwurfs-prinzipien.
Architecture is about the important stuff. Whatever that is.
— Ralph Johnson
Quelle: Martin Fowler – Who Needs an Architect?
Architecture is the set of decisions that are hard to change.
— Martin Fowler
Quelle: Martin Fowler – Who Needs an Architect?
Was auch immer in deiner Software wichtig und später schwer zu ändern ist!
Ein bewegliches Ziel, dass sich über Zeit verändert.
Etwas, dass immer da ist – kontrolliert oder unkontrolliert.
Quelle: Mark Richards & Neil Ford: Fundamentals of Software Architecture
In der Vergangenheit bekannt als
Nicht-Funktionale Anforderungen
Im englischen Sprachgebrauch Architecture Capabilities.
Oft auch einfach die -ilities des Systems
Leitfrage: Wie gut ist das System darin, seine fachlichen Aufgaben zu erfüllen?
Aufteilung des Systems in initiale Komponenten die logisch zusammenhängende Verantwortlichkeiten abbilden.
Informiert durch fachliche Anforderungen, zu erwartende Nutzergruppen und weitere Rahmenbedingungen.
Ziel ist ein erster Entwurf. Spätere Änderungen sind zu erwarten und sehr wahrscheinlich.
Quelle: Mark Richards – Software Architecture Monday, Lesson 193
Die grundlegene Struktur des Systems.
Fachlicher oder technischer Schnitt.
Monolithisch
oder Verteilt.
| Eigenschaft | Geschichteter Monolith | Modularer Monolith | Microkernel | Microservices | Servicebasiert | Serviceorientiert | Ereignisgesteuert | Space-Based |
|---|---|---|---|---|---|---|---|---|
| Schnitt | Technisch | Fachlich | Technisch | Fachlich | Fachlich | Fachlich | Technisch | Technisch |
| Kosten | 💲 | 💲 | 💲 | 💲💲💲💲💲 | 💲💲 | 💲💲💲💲 | 💲💲💲 | 💲💲💲 |
| Wartbarkeit | ⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| Testbarkeit | ⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐ | ⭐⭐ | ⭐ |
| Deploybarkeit | ⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| Simplizität | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐ | ⭐⭐⭐ | ⭐ | ⭐⭐ | ⭐ |
| Skalierbarkeit | ⭐ | ⭐ | ⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Elastizität | ⭐ | ⭐ | ⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Responsivität | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Fehlertoleranz | ⭐ | ⭐ | ⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| Evolvierbarkeit | ⭐ | ⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| Abstraktion | ⭐ | ⭐ | ⭐⭐⭐ | ⭐ | ⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐ |
| Interoperabilität | ⭐ | ⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
Quelle: Architecture Styles Worksheet V2.0, erstellt von Mark Richards, DeveloperToArchitect.com
Quelle: Übersetzung der All Stuff, No Cruft! Kata
Anpassbarkeit /
Customizability
Mitarbeiter:in
Konferenz erstellen
Konferenz branden
Programm gestalten
Raum zuweisen
System
Aktualisierungen senden
Teilnehmer:in
Folien einsehen
Programm einsehen
Raumzuweisung sehen
Vortrag bewerten
Aktualisierungen anfordern
Vortrag einreichen
Vortrag bearbeiten
Folien bereitstellen
Referent:in
Vortragsbe-
reitstellung
Konferenz-
erstellung
Konferenz-
branding
Programm-
gestaltung
Vortrags-
bewertung
Benach-
richtigung
Mitarbeiter:in
Konferenz erstellen
Konferenz branden
Programm gestalten
Raum zuweisen
System
Aktualisierungen senden
Vortrag einreichen
Vortrag bearbeiten
Folien bereitstellen
Referent:in
Teilnehmer:in
Folien einsehen
Programm einsehen
Raumzuweisung sehen
Vortrag bewerten
Aktualisierungen anfordern
| Eigenschaft | Geschichteter Monolith | Modularer Monolith | Microservices |
|---|---|---|---|
| Schnitt | Technisch | Fachlich | Fachlich |
| Kosten | 💲 | 💲 | 💲💲💲💲💲 |
| Wartbarkeit | ⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| Testbarkeit | ⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| Deploybarkeit | ⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| Simplizität | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐ |
| Skalierbarkeit | ⭐ | ⭐ | ⭐⭐⭐⭐⭐ |
| Elastizität | ⭐ | ⭐ | ⭐⭐⭐⭐ |
| Responsivität | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| Fehlertoleranz | ⭐ | ⭐ | ⭐⭐⭐⭐⭐ |
| Evolvierbarkeit | ⭐ | ⭐ | ⭐⭐⭐⭐⭐ |
| Abstraktion | ⭐ | ⭐ | ⭐ |
| Interoperabilität | ⭐ | ⭐ | ⭐⭐⭐ |
Qualitätsmerkmal
Benutzbarkeit
Performanz
Anpassbarkeit /
Customizability
Kompatibilität
Skalierbarkeit
Geeigneter Stil
alle
Monolith
Microservices
Microservices
alle
Machbarkeit im Hinterkopf behalten!
Annahmen mangels Kontext:
Modularer Monolith
möglicherweise attraktiver
Geringe Kohäsion
Enge Kopplung
Können die Entkopplung von Software-Komponenten erleichtern und deren Kohäsion steigern.
Unterstützung für die Strukturierung des Codes von Software-Komponenten oder -Systemen.
Beispiele: Ports-and-Adapters,
Feature-Sliced Design.
Das Hexagon bildet den Kern des Bausteins und enthält die Fachlogik.
Eingehende Ports beschreiben den Zugriff auf den Kern von außerhalb
Abhängigkeiten im Quellcode zeigen von außen nach innen.
Augehende Ports beschreiben den Zugriff des Kerns auf externe Dienste (Dependency Inversion).
Eingehende Adapter
nutzen eingehende Ports um mit dem Kern zu interagieren
Eingehende Adapter
nutzen eingehende Ports um mit dem Kern zu interagieren
Anwendungsfälle im Kern implementieren eingehende Ports und nutzen ausgehende Ports. Passende Adapter werden via Dependency Injection von außen bereitgestellt.
Wann immer hohe Modularisierung und Änderbarkeit erforderlich ist.
Anwendungen mit langlebigen fachlichen Strukturen.
Anwendungen mit mehreren verschiedenen Zugangswegen.
Die Anwendung ist in Layers aufgebaut, die nach Scope gegliedert sind.
Abhängigkeiten im Quellcode zeigen von oben nach unten.
Layers teilen sich in Slices auf, die nach Verantwortlichkeit
gegliedert sind.
Abhängigkeiten
zwischen Slices im gleichen Layer sind unerwünscht.
Layers teilen sich in Slices auf, die nach Verantwortlichkeit
gegliedert sind.
Slices teilen sich in Segments auf, die nach Zweck geglie-dert sind
Abhängigkeiten
zwischen Segments im gleichen Slice sind erlaubt.
Quelle: Felix Abele – Feature-Sliced Design and what we need for good frontend architecture
Frontend-Anwendungen
(Web, Mobile, ...)
Bedarf nach wohldokumentierter Struktur und Einheitlichkeit
Architektur bestimmt, wie gut dein System wartbar, erweiterbar
und verständlich ist.
Gute Struktur erhöht Entwicklungsgeschwindigkeit und reduziert
Fehler bei Änderungen.
Sie verbessert Zusammenarbeit und Skalierbarkeit
in deinem Team.
Sie schafft Leitplanken für Designentscheidungen
und Code-Qualität.
Dank LLMs ist Code billig und schnell erstellt. Struktur, Konsistenz und langfristige Steuerbarkeit bleiben jedoch in deiner Verantwortung.
https://github.com/nilsroehrig/jsdays-2026-architecture-crashcourse
ISC License
Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2026 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2026.
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
The MIT License (MIT) (for portions derived from Feather)
Copyright (c) 2013-2026 Cole Bemis
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.