Slide 1

Slide 1 text

@ManfredSteyer ManfredSteyer Manfred Steyer, ANGULARarchitects.io Angular and DDD A Wonderful Friendship?

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

@ManfredSteyer Sharing Experience for Architectures BEST PRACTICES PATTERNS METHODOLOGY

Slide 4

Slide 4 text

@ManfredSteyer

Slide 5

Slide 5 text

@ManfredSteyer

Slide 6

Slide 6 text

@ManfredSteyer

Slide 7

Slide 7 text

@ManfredSteyer

Slide 8

Slide 8 text

@ManfredSteyer Manfred Steyer

Slide 9

Slide 9 text

@ManfredSteyer

Slide 10

Slide 10 text

@ManfredSteyer Strategic Design Tactical Design

Slide 11

Slide 11 text

@ManfredSteyer Strategic Design Tactical Design

Slide 12

Slide 12 text

@ManfredSteyer

Slide 13

Slide 13 text

@ManfredSteyer Example e-Procurement System

Slide 14

Slide 14 text

@ManfredSteyer Catalog Approval Specification Ordering Example Sub-Domains

Slide 15

Slide 15 text

@ManfredSteyer

Slide 16

Slide 16 text

@ManfredSteyer Workspace

Slide 17

Slide 17 text

@ManfredSteyer Advantages No version conflicts No burden with distributing libs

Slide 18

Slide 18 text

@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

Slide 19

Slide 19 text

@ManfredSteyer Moving back and forth Npm Registry

Slide 20

Slide 20 text

@ManfredSteyer https://nrwl.io/nx

Slide 21

Slide 21 text

@ManfredSteyer Visualize Module Structure

Slide 22

Slide 22 text

@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

Slide 23

Slide 23 text

@ManfredSteyer

Slide 24

Slide 24 text

@ManfredSteyer Catalog Ordering Shared 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 Enterprise Monorepo Patterns, Nrwl 2018: https://tinyurl.com/y2jjxld7 @ManfredSteyer Shared Kernel (if really needed) & other libs Smart Comp. Dumb Comp.

Slide 25

Slide 25 text

@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

Slide 26

Slide 26 text

@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

Slide 27

Slide 27 text

@ManfredSteyer Application Domain Model Infrastructure Isolate your domain! Domain e. g. data access Use case specific facades, state management (optional) Entities, biz logic

Slide 28

Slide 28 text

@ManfredSteyer Alternatives to layering • e. g. Hexagonal Architecture, Clean Architecture • Anyway: We need to restrict access b/w libraries

Slide 29

Slide 29 text

@ManfredSteyer DEMO

Slide 30

Slide 30 text

@ManfredSteyer • • • •

Slide 31

Slide 31 text

@ManfredSteyer

Slide 32

Slide 32 text

@ManfredSteyer Booking Boarding Shared Feature Feature Feature Feature Feature … … … … … … … … … @ManfredSteyer Flight App Deployment Monolith

Slide 33

Slide 33 text

@ManfredSteyer Booking Boarding Shared Feature Feature Feature Feature Feature … … … … … … … … … Booking App Boarding App Microfrontends

Slide 34

Slide 34 text

@ManfredSteyer Booking Boarding Shared Feature Feature Feature Feature Feature … … … … … … … … … Booking App Boarding App Option 1: One Monorepo Monorepo

Slide 35

Slide 35 text

@ManfredSteyer Booking Boarding Shared Feature Feature Feature Feature Feature … … … … … … … … … Booking App Boarding App Option 2: One Repo per Domain Publish shared libs seperately via npm Repository n Repository 2 Repository 1

Slide 36

Slide 36 text

@ManfredSteyer Free eBook ANGULARarchitects.io/book Updated for Module Federation and Alternatives

Slide 37

Slide 37 text

• • • • •

Slide 38

Slide 38 text

@ManfredSteyer

Slide 39

Slide 39 text

@ManfredSteyer d Slides & Examples Public: Frankfurt, Munich, Vienna In-House: everywhere http://softwarearchitekt.at/workshops