40
Maintainable Architectures with Angular, Monorepos and Strategic Design Manfred Steyer SOFTWAREarchitekt.at ManfredSteyer

Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Maintainable Architectures withAngular, Monorepos and Strategic Design

Manfred Steyer

SOFTWAREarchitekt.at

ManfredSteyer

Page 2: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

What do we need for a good architecture ?

Experience

Page 3: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Sharing Experience for Architectures

BEST PRACTICES PATTERNS METHODOLOGY

Page 4: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Domain Driven Design

Page 5: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

How can we improve our frontend architectures with ideas from DDD?

Page 6: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

How can we improve our frontend architectures with ideas from DDD?

Page 7: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Contents

1) Strategic

Design 101

2) Angular

Monorepos

3) Nx Monorepos

and DDD

4) DEMO

Page 8: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

About me…

• Manfred SteyerSOFTWAREarchitekt.at

• Angular Trainings and Consultancy

• Google Developer Expert (GDE)

• Trusted Collaborator in the Angular Team

Page ▪ 9

Manfred Steyer

Public: Frankfurt, Vienna, Munich, Düsseldorf, Stuttgart

In-House: everywhere

http://softwarearchitekt.at/workshops

Page 9: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Strategic Designin a nutshell

Page 10: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Domain Driven Design

Strategic Design Tactical Design

Decomposing a SystemDesign Patterns& Practices

Page 11: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Domain Driven Design

Strategic Design Tactical Design

Decomposing a SystemDesign Patterns& Practices

Page 12: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

This is what Strategic DDD prevents

Page 13: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Example

e-Procurement System

Page 14: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Catalog Approval

SpecificationOrdering

ExampleSu

b-D

om

ains

Page 15: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Request Product

SpecifyOrder

ApproveOrder

Send Order

Request Budget

ApproveBudget

Budget Hierarchy

Manager Manager

Employee Expert Manager Buying Agent

Product

Page 16: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Catalog Approval

Bounded Cotext

Ubiquitous Language

Page 17: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Catalog ApprovalSpecification

Ordering

Context Map

Page 18: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Approval

Specification

Context Map

Catalog

Catalog

Shared Kernel

Page 19: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Catalog Approval

AP

I

Page 20: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Catalog Approval

Calc VAT Calc VAT

Seperate Ways

Page 21: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Lots of additional approaches for cross-domain communication …

Page 22: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

2) Monorepos

Page 23: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Workspace

Page 24: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Creating a Workspace

npm install -g @angular/cli

ng new workspace

cd workspace

ng generate app my-appng generate lib my-lib

ng serve --project my-appng build --project my-app

Page 25: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@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, …

Page 26: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Moving back and forth

Npm Registry

Page 27: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Tooling & Generator

https://nrwl.io/nx

Page 28: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Visualize Module

Structure

Page 29: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Nx Monorepos and Strategic Design

Page 30: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@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

Page 31: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@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

Page 32: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Application

Domain

Infrastructure

Isolate your domain!

Domain Domain

Infrastructure

e. g. data access

Application

Use case specific facades

Page 33: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Alternatives to layering

• e. g. Hexagonal Architecture, Clean Architecture

• Anyway: We need to restrict access b/w libraries

Page 34: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

DEMO

Page 35: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Micro Apps?Short outlook

Page 36: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Catalog Ordering Shared

Feature Feature Feature Feature Feature

… … … … … … … … …

@ManfredSteyer

Catalog App Ordering App

Option 1: One App per Domain

Page 37: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Catalog Ordering Shared

Feature Feature Feature Feature Feature

… … … … … … … … …

@ManfredSteyer

Catalog App Ordering App

Option 2: One Monorepo per Domain

Publish shared libsseperately via npm

Page 38: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Summary

Slicing into sub-domains

Slicing into layers

Non-strict layering

Finegrained libraries

Enforce restrictions

Page 39: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Page 40: Maintainable Architectures with Angular, …...2) Angular Monorepos 3) Nx Monorepos and DDD 4) DEMO @ManfredSteyer About me… •Manfred Steyer SOFTWAREarchitekt.at •Angular Trainings

@ManfredSteyer

Contact and Downloads

[mail] [email protected]

[web] SOFTWAREarchitekt.at

[twitter] ManfredSteyer

d

Slides & Examples

Public: Frankfurt, Vienna, Munich, Düsseldorf, StuttgartIn-House: everywhere

http://softwarearchitekt.at/workshops