© Radoman Durkovic/shutterstock.com, © S&S Media
Kiosk Specials
Teil 1: Domänenschnitt mit Nx Monorepos

Der perfekte Projektstart mit Angular

Nx Monorepos erlauben das Aufteilen großer Projekte in einzelne Domänen und Bibliotheken. Zugriffsregeln und öffentliche APIs stellen eine lose Kopplung sicher. Der erste Teil dieser Artikelserie stellt vor, wie das relativ einfach zum Projektstart eingerichtet werden kann.

Manfred Steyer


ArtikelserieTeil 1: Domänenschnitt mit Nx MonoreposTeil 2: Zustandsverwaltung mit NgRx und FassadenTeil 3: OAuth 2.0 und die neuen Security Best Practices

Mit Lösungen wie Angular lassen sich recht schnell moderne Clients für Geschäftsanwendungen schreiben. Doch sind die auch langfristig wartbar? Genau darauf kommt es nämlich bei vielen Projekten im Unternehmensumfeld an. Ein Produktlebenszyklus, der sich über zehn bis zwanzig Jahre erstreckt, ist keine Seltenheit.

Genau darum dreht sich die dreiteilige Serie, die mit diesem Artikel startet. Dabei möchte ich meine Erfahrungen, die sich seit der BETA-Phase von Angular angesammelt haben, teilen und zeigen, wie sich mit einem guten Projektstart eine solide Basis für solch ein Vorhaben bereitstellen lässt. Dazu verwende ich eine Fallstudie, deren Quellcode man unter [1] findet.

Domänenschnitt

Es ist kein Geheimnis, dass eine zu starke Verknüpfung einzelner Programmteile zu einer schlecht wartbaren Architektur führt. Wenn alles von allem abhängig ist, führt jede Änderung tendenziell zu Breaking Changes. Eine mögliche Lösung, die u. a. durch DDD [2] bekannt wurde, ist das Schneiden nach Domänen.

Vereinfacht formuliert sollen nach fachlichen Kriterien einzelne Bereiche, die voneinander möglichst wenig wissen müssen, identifiziert werden. Diese Domänen werden nun voneinander unabhängig modelliert, Verweise zwischen Domänen sind zu vermeiden.

In der hier verwendeten Fallstudie, die sich um Flugbuchungen dreht, lassen sich beispielsweise die in Abbildung 1 dargestellten Domänen identifizieren.

Abb. 1: Domänen in unserer Fallstudie

Nun stellt sich natürlich die Frage, wie sich diese Domänen in einem Angular-Projekt abbilden lassen. Als einfache Optionen bieten sich Ordner oder Angular-Module (NgModules) an. Leider sind diese Konzepte zu wenig in sich geschlossen und erlauben Zugriffe, die nach und nach zu einer ungewollten Kopplung führen. Besser ist der Einsatz von Bibliotheken. Der nächste Abschnitt zeigt, wie sich ein Monorepo dazu nutzen lässt.

Monorepos und Domänen

Simpel ausgedrückt, ist ein Monorepo einfach eine Projektstruktur, die verschiedene zusammengehörige Anwendungen und Bibliotheken beherbergt (Abb. 2).

Abb. 2: Einfaches Monorepo

Große Firmen wie Google, Facebook oder Microsoft setzen sehr stark auf diesen Ansatz. Er bringt gleich mehrere Vorteile:

Ein großes System lässt sich in mehrere kleine Anwendungen und Bibliotheken aufteilen. Die einzelnen Bibliotheken müssen nicht versioniert werden: Die aktuellste Ver...

Kiosk Specials
Teil 1: Domänenschnitt mit Nx Monorepos

Der perfekte Projektstart mit Angular

Nx Monorepos erlauben das Aufteilen großer Projekte in einzelne Domänen und Bibliotheken. Zugriffsregeln und öffentliche APIs stellen eine lose Kopplung sicher. Der erste Teil dieser Artikelserie stellt vor, wie das relativ einfach zum Projektstart eingerichtet werden kann.

Manfred Steyer


ArtikelserieTeil 1: Domänenschnitt mit Nx MonoreposTeil 2: Zustandsverwaltung mit NgRx und FassadenTeil 3: OAuth 2.0 und die neuen Security Best Practices

Mit Lösungen wie Angular lassen sich recht schnell moderne Clients für Geschäftsanwendungen schreiben. Doch sind die auch langfristig wartbar? Genau darauf kommt es nämlich bei vielen Projekten im Unternehmensumfeld an. Ein Produktlebenszyklus, der sich über zehn bis zwanzig Jahre erstreckt, ist keine Seltenheit.

Genau darum dreht sich die dreiteilige Serie, die mit diesem Artikel startet. Dabei möchte ich meine Erfahrungen, die sich seit der BETA-Phase von Angular angesammelt haben, teilen und zeigen, wie sich mit einem guten Projektstart eine solide Basis für solch ein Vorhaben bereitstellen lässt. Dazu verwende ich eine Fallstudie, deren Quellcode man unter [1] findet.

Domänenschnitt

Es ist kein Geheimnis, dass eine zu starke Verknüpfung einzelner Programmteile zu einer schlecht wartbaren Architektur führt. Wenn alles von allem abhängig ist, führt jede Änderung tendenziell zu Breaking Changes. Eine mögliche Lösung, die u. a. durch DDD [2] bekannt wurde, ist das Schneiden nach Domänen.

Vereinfacht formuliert sollen nach fachlichen Kriterien einzelne Bereiche, die voneinander möglichst wenig wissen müssen, identifiziert werden. Diese Domänen werden nun voneinander unabhängig modelliert, Verweise zwischen Domänen sind zu vermeiden.

In der hier verwendeten Fallstudie, die sich um Flugbuchungen dreht, lassen sich beispielsweise die in Abbildung 1 dargestellten Domänen identifizieren.

Abb. 1: Domänen in unserer Fallstudie

Nun stellt sich natürlich die Frage, wie sich diese Domänen in einem Angular-Projekt abbilden lassen. Als einfache Optionen bieten sich Ordner oder Angular-Module (NgModules) an. Leider sind diese Konzepte zu wenig in sich geschlossen und erlauben Zugriffe, die nach und nach zu einer ungewollten Kopplung führen. Besser ist der Einsatz von Bibliotheken. Der nächste Abschnitt zeigt, wie sich ein Monorepo dazu nutzen lässt.

Monorepos und Domänen

Simpel ausgedrückt, ist ein Monorepo einfach eine Projektstruktur, die verschiedene zusammengehörige Anwendungen und Bibliotheken beherbergt (Abb. 2).

Abb. 2: Einfaches Monorepo

Große Firmen wie Google, Facebook oder Microsoft setzen sehr stark auf diesen Ansatz. Er bringt gleich mehrere Vorteile:

Ein großes System lässt sich in mehrere kleine Anwendungen und Bibliotheken aufteilen. Die einzelnen Bibliotheken müssen nicht versioniert werden: Die aktuellste Ver...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang