Top Banner
Architektura, która pomaga! Mateusz Stasch
68

[FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Mar 20, 2017

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Architektura,która pomaga!

Mateusz Stasch

Page 2: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Mateusz Stasch

@mattstasch

http://mattstasch.net

Page 3: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

PROJEKT IT

Page 4: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!
Page 5: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Źródło: CNN

Page 6: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

UI Backend DB

Page 7: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

SPABackend DB

Mobile

Page 8: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

BackendSPA

Mobile

Page 9: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

BackendEF

SPA

Mobile

Page 10: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Backend DB

SPA

Mobile

Page 11: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

DB

A

P

I

RESTish

SPA

Mobile

Page 12: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

DB

Command

A

P

I

SPA

Mobile

Page 13: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

DB

Command

Events

A

P

I

SPA

Mobile

Page 14: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

DB

Command

Events

Queries

A

P

I

CQS

SPA

Mobile

Page 15: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

WSP DB

Command

Events

Queries

A

P

I

CQS

T

SPA

Mobile

Page 16: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

CQRS

Page 17: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

DB

Zmiana

WSP Skutki

Odczyt

A

P

I

SPA

Mobile

Page 18: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

DB

Zmiana

WSP Skutki

Odczyt

A

P

I

SPA

Mobile

Page 19: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

DB

Zmiana

WSP Skutki

Odczyt

A

P

I

SPA

Mobile

Page 20: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

DB

Zmiana

WSP Skutki

Odczyt

A

P

I

SPA

Mobile

Page 21: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Zmiana

Page 22: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Mobile

Page 23: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

MobileAgreementResource

AgreementResource

Page 24: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Mobile

Diff

Skutki

Page 25: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Mobile Create Approve

Page 26: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Zmiana

Page 27: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Domena

Page 28: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Domena

Page 29: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

DomenaCommand

Page 30: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

DomenaCommand

Event

Event

Page 31: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

DomenaCommand

Event

Event

API

T

Event

Page 32: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

C : ApproveAgreement E : AgreementApproved

EH : AgreementNotificationHandler

EH : SupersedeAgreementHandler

EH : AgreementMailHandler

Page 33: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Skutki

Page 34: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

class AgreementAuditLog: IHandle<AgreementPublished>

{// ...

public void Handle(AgreementPublished @event){

// ...}

}

Page 35: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

class AgreementAuditLog: IHandle<AgreementPublished>

{// ...

public void Handle(AgreementPublished @event){

// ...}

}

Page 36: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

class AgreementMailHandler: IHandle<AgreementApproved>

{// ...

public void Handle(AgreementApproved @event){

MailService.Send();}

}

Page 37: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Manager

Facade DB

API Service

Page 38: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

AgreementApproved

Page 39: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

AgreementCreated

AgreementConditionsChanged

AgreementApproved

AgreementSuperseded

AgreementArchived

Page 40: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

AgreementCreated

AgreementConditionsChanged

AgreementApproved

AgreementSuperseded

AgreementArchived

mstasch

jkowalski

jkowalski

system

mstasch

2016/01/05 12:34:34

2016/01/05 14:35:28

2016/01/07 10:04:10

2016/06/01 14:12:34

2017/01/01 00:00:50

Page 41: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Manager

Facade DB

API Service

Page 42: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Odczyt

Page 43: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Mobile

Page 44: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Mobile

Page 45: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Mobile

Cache

Page 46: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Mobile

Cache

Page 47: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Architektura daje klocki na właściwym poziomie abstrakcji

Page 48: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Źródło: Widmann SRL

Page 49: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Źródło: Wikimedia

Page 50: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Źródło: Wikimedia

Page 51: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

SPA DB

Command

WSP Events

Queries

A

P

I

CQS

Page 52: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

if (user.Roles.Any(RolesHelper.IsAdministrator) && agreement.status == AgrementStatus.Active){

// ...}

if (user.roles.some(roleHelper.isAdministrator) && agreement.status === "Active"){

// ...}

...

.Where(agr => agr.Owner == user.Id && agr.Editors.Contains(user.Id))

...

Page 53: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

SPA DB

Command

Events

Queries

A

P

I

S

S

S

S

Page 54: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

WSPSPA DB

Command

Events

Queries

A

P

I

CQS

T

Page 55: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Resource

W

S

P

Page 56: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Resource

W

S

P

ResourceAllowed

Operations

Page 57: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Resource Resource

W

S

PAllowed

Operations

"AllowedOperations":{

"CanEdit": false,"CanApprove": true,"CanReject": true,"CanUploadContract": false,...

Page 58: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

WSPSPA DB

Command

Events

Queries

A

P

I

T

S

Page 59: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Security

Page 60: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Hypermedia

Page 61: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!
Page 62: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Po co to komu?

Page 63: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Nie myśleć…

Page 64: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!
Page 65: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Nie myśleć…… o tym co nie jest esencjonalną wartością biznesową

Page 66: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

To jest UX dla programistów

Żółw

„ ”

Page 67: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Pytania?

Page 68: [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

Dzięki!Mateusz Stasch