You are on page 1of 34

ManfredSteyer

@ManfredSteyer
Experience

What do we
need for a good
architecture?
BEST PRACTICES PATTERNS METHODOLOGY

Sharing Experience for Architectures


@ManfredSteyer
Domain Driven
Design

@ManfredSteyer
How to create sustainable
Angular architectures with
ideas from DDD?

?
@ManfredSteyer
How to create sustainable
frontend architectures with
ideas from DDD?

?
@ManfredSteyer
Contents
1)
2)
DDD in a
Monorepos
Nutshell

3)
Monorepos
& DDD
@ManfredSteyer
Manfred Steyer
About me…
Manfred Steyer, ANGULARarchitects.io

(Remote) Angular Workshops Google Developer Expert Trusted Collaborator


and Consulting for Angular in the Angular Team

@ManfredSteyer
1) DDD in a nutshell

@ManfredSteyer
Domain Driven Design
Design Patterns
Decomposing a System
& Practices

Strategic Design Tactical Design


@ManfredSteyer
Domain Driven Design
Design Patterns
Decomposing a System
& Practices

Strategic Design Tactical Design


@ManfredSteyer
This is what Strategic DDD prevents
@ManfredSteyer
Example

e-Procurement System

@ManfredSteyer
Example

Catalog Approval

Sub-Domains
Ordering Specification

@ManfredSteyer
2) Monorepos

@ManfredSteyer
Workspace

@ManfredSteyer
Advantages
No version conflicts

No burden with distributing libs

@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
Moving back and forth

Npm Registry

@ManfredSteyer
@ManfredSteyer https://nrwl.io/nx
Visualize
Module
Structure

@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
3) Nx Monorepos and
Strategic Design

@ManfredSteyer
Shared Kernel (if really needed) & other libs

Smart
Comp. Catalog Ordering Shared

Dumb Comp.
Feature Feature Feature Feature Feature

UI UI UI UI UI UI UI UI UI

Domain Domain Domain Domain Domain Domain

Util Util Util Util Util Util

@ManfredSteyer Enterprise Monorepo Patterns, Nrwl 2018: https://tinyurl.com/y2jjxld7


@ManfredSteyer
Catalog Ordering Shared

Feature API Feature Feature Feature Feature

UI UI UI UI UI UI UI UI UI

Domain Domain Domain Domain Domain Domain

Util Util Util Util Util Util

@ManfredSteyer @ManfredSteyer
Catalog Ordering Shared

Feature API Feature Feature Feature Feature

UI UI UI UI UI UI UI UI UI

Domain Domain Domain Domain Domain Domain

Util Util Util Util Util Util

@ManfredSteyer @ManfredSteyer
Isolate your domain! Use case specific facades,
state management (optional)

Entities, biz logic Application

Domain Domain Model

Infrastructure

e. g. data access

@ManfredSteyer
DEMO

@ManfredSteyer
Finegrained Libraries

• Unit of recompilation
• Unit of retesting
• Access restrictions
• Information Hiding
• Alternative to NgModules
(might become optional)
• Ng g lib … easy

@ManfredSteyer
DEMO

@ManfredSteyer
Free eBook
https://ANGULARarchitects.io/book

@ManfredSteyer
Summary
• Slicing into sub-domains
• Slicing into layers
• Finegrained libraries
• Enforce restrictions
@ManfredSteyer
Contact and Downloads
[web] ANGULARarchitects.io
[twitter] ManfredSteyer

Slides & Examples

Public: Frankfurt, Munich, Vienna


In-House: everywhere

http://softwarearchitekt.at/workshops
d
@ManfredSteyer

You might also like