Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Maintainable Architectures with Angular, Monorepos and Strategic DDD
Search
Manfred Steyer
PRO
May 09, 2019
Programming
0
500
Maintainable Architectures with Angular, Monorepos and Strategic DDD
Manfred Steyer
PRO
May 09, 2019
Tweet
Share
More Decks by Manfred Steyer
See All by Manfred Steyer
The New NGRX Signal Store for Angular: 3+n Flavors of the Signal Store
manfredsteyer
PRO
0
5
Micro Frontends with Modern Angular and Island Architectures @ijs London 2024
manfredsteyer
PRO
0
79
Modern State Management in Angular: 3+n Flavors of the Signal Store @ijs London 2024
manfredsteyer
PRO
0
77
Changed Rules: Architectures with Lightweight Stores
manfredsteyer
PRO
0
240
Migrating to Signals: A Practical Workshop
manfredsteyer
PRO
0
410
Micro Frontends with Web Standards
manfredsteyer
PRO
1
300
The New NGRX Signal Store for Angular: 3+n Flavors
manfredsteyer
PRO
1
220
Leveraging the new NGRX Signal Store
manfredsteyer
PRO
0
170
Modern State Management in Angular: The 3+n Flavors of the NGRX Signal Store
manfredsteyer
PRO
0
110
Other Decks in Programming
See All in Programming
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
670
Ruby GitHub Packages
bkuhlmann
0
630
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
0
450
1BRC--Nerd Sniping the Java Community
gunnarmorling
0
340
Build Apps for iOS, Android & Desktop in 100% Kotlin With Compose Multiplatform (mDevCamp 2024)
zsmb
0
280
使ってみよう Azure AI Document Intelligence
kosmosebi
2
290
FigmaとPHPで作る1ミリたりとも表示崩れしない最強の帳票印刷ソリューション
ttskch
43
19k
Zero Waste, Radical Magic, and Italian Graft – Quarkus Efficiency Secrets
hollycummins
0
230
効率化に挑戦してみたらモバイル開発が少し快適になった話
ryunakayama
0
130
StoreKit2によるiOSのアプリ内課金のリニューアル
kangnux
0
110
Ruby Pattern Matching
bkuhlmann
0
920
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
170
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
Why Our Code Smells
bkeepers
PRO
331
56k
The Mythical Team-Month
searls
216
42k
The Cult of Friendly URLs
andyhume
74
5.7k
Designing with Data
zakiwarfel
96
4.8k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
7
1k
Product Roadmaps are Hard
iamctodd
44
9.7k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
A Philosophy of Restraint
colly
197
16k
Ruby is Unlike a Banana
tanoku
96
10k
Embracing the Ebb and Flow
colly
80
4.1k
Transcript
@ManfredSteyer Maintainable Architectures with Angular, Monorepos and Strategic DDD Manfred
Steyer SOFTWAREarchitekt.at ManfredSteyer
@ManfredSteyer "Where does an Architecture come from?" Architecture Requirements
@ManfredSteyer "Where does an Architecture come from?" Architecture Requirements Here
happens a Wonder
@ManfredSteyer Ingredients for an Architecture Experience
@ManfredSteyer Transporting Experience for Architectures BEST PRACTICES PATTERNS METHODOLOGY
@ManfredSteyer Domain Driven Design
@ManfredSteyer How can we improve our frontend architectures with ideas
from DDD?
@ManfredSteyer How can we improve our frontend architectures with ideas
from DDD?
@ManfredSteyer Contents 1) Strategic Design 101 2) Angular Monorepos 3)
Nx Monorepos and DDD 4) DEMO
@ManfredSteyer About me… • Manfred Steyer SOFTWAREarchitekt.at • Angular Trainings
and Consultancy • Google Developer Expert (GDE) • Trusted Collaborator in the Angular Team Page ▪ 11 Manfred Steyer Public: Vienna, München, Zürich In-House: everywhere http://softwarearchitekt.at/workshops
@ManfredSteyer Strategic Design in a nutshell
@ManfredSteyer Domain Driven Design Strategic Design Tactical Design Decomposing a
System Practices & Patterns
@ManfredSteyer Domain Driven Design Strategic Design Tactical Design Decomposing a
System Practices & Patterns
@ManfredSteyer This is what Strategic DDD prevents
@ManfredSteyer Example e-Procurement System
@ManfredSteyer Catalog Approval Specification Ordering Example Sub-Domains
@ManfredSteyer Catalog Approval Employee Manager
@ManfredSteyer Request Product Specify Order Approve Order Send Order Request
Budget Approve Budget Budget Hierarchy Manager Manager Employee Expert Manager Buying Agent Product
@ManfredSteyer Catalog Approval
@ManfredSteyer Catalog Approval Specification Ordering Context Map
@ManfredSteyer Catalog Approval API
@ManfredSteyer Catalog Ordering API ERP ACR
@ManfredSteyer Catalog Approval Calc VAT Calc VAT Seperate Ways
@ManfredSteyer Lots of additional approaches for cross-domain communication …
@ManfredSteyer 2) Monorepos
@ManfredSteyer Workspace
@ManfredSteyer Creating a Workspace npm install -g @angular/cli ng new
workspace cd workspace ng generate app my-app ng generate lib my-lib ng serve --project my-app ng build --project my-app
@ManfredSteyer Advantages Everyone uses the latest versions No version conflicts
No burden with distributing libs Creating new libs: Adding folder Experience: Successfully used at Google, Facebook, …
@ManfredSteyer Moving back and forth Npm Registry
@ManfredSteyer Tooling & Generator https://nrwl.io/nx
@ManfredSteyer Visualize Module Structure
@ManfredSteyer Creating a Workspace npm install -g @angular/cli ng new
workspace cd workspace ng generate app my-app ng generate lib my-lib ng serve --project my-app ng build --project my-app
@ManfredSteyer Creating a Workspace npm install -g @angular/cli npm init
nx-workspace myworkspace cd workspace ng generate app my-app ng generate lib my-lib ng serve --project my-app ng build --project my-app
@ManfredSteyer Nx Monorepos and Strategic Design
@ManfredSteyer Catalog Ordering Shared Feature Feature Feature Feature Feature UI
UI UI UI UI UI UI UI UI Data Data Data Data Data Data Util Util Util Util Util Util Enterprise Monorepo Patterns, Nrwl 2018: https://tinyurl.com/y2jjxld7 @ManfredSteyer
@ManfredSteyer Catalog Ordering Shared Feature API Feature Feature Feature Feature
UI UI UI UI UI UI UI UI UI Data Data Data Data Data Data Util Util Util Util Util Util @ManfredSteyer
@ManfredSteyer Finegrained Libraries • Unit of recompilation and retesting •
Unit of retesting • Access restrictions • Prevent Cycles • Information Hiding • Future replacement for NgModules?
@ManfredSteyer DEMO
@ManfredSteyer Summary Self-contained sub domains Monorepo for slicing w/ libs
Non-strict layering Finegrained libraries Enforce restrictions
@ManfredSteyer Beware the Frankenstein- Monster!!
@ManfredSteyer Contact and Downloads [mail]
[email protected]
[web] SOFTWAREarchitekt.at [twitter] ManfredSteyer
d Slides & Examples Public: Frankfurt, Vienna, München, Stuttgart In-House: everywhere http://softwarearchitekt.at/workshops