clean architecture - co z tego możesz wziąć dla siebie

44
Clean architecture Mariusz Sieraczkiewicz @ms_bnsit_pl http://msieraczkiewicz.blogspot.com

Upload: mariusz-sieraczkiewicz

Post on 13-Apr-2017

76 views

Category:

Data & Analytics


4 download

TRANSCRIPT

Clean architecture

Mariusz Sieraczkiewicz @ms_bnsit_pl

http://msieraczkiewicz.blogspot.com

www.bnsit.pl

#  Homodeus

Tytuł aktualnie wyświetlanego slajdu

Zwiększamy efektywność zespołów projektowych 2

Pełny tytuł szkolenia

#  Czypotrzebujemykolejnejarchitektury?

•  Hexagonal/PortandAdapters

•  Warstwy

•  Pipe-and-filters

•  Microservices

Clean architecture

Zwiększamy efektywność zespołów projektowych 3

Pełny tytuł szkolenia

www.bnsit.pl

Tytuł aktualnie wyświetlanego slajdu

Zwiększamy efektywność zespołów projektowych 4

Pełny tytuł szkolenia

Tytuł aktualnie wyświetlanego slajdu

Zwiększamy efektywność zespołów projektowych 5

Pełny tytuł szkolenia

#  Kodktóryczytasięjakksiążkę

#  Usecases

#  #noFrameworks

#  BusinessDriven

Zwiększamy efektywność zespołów projektowych 6

Atymczasem…

(tupowinienbyćrysunekobrazującychaosispagheP)

Zwiększamy efektywność zespołów projektowych 7

Atymczasem…

(tupowinienbyćrysunekobrazującychaosispagheP)

Zwiększamy efektywność zespołów projektowych 8

www.bnsit.pl

Clean architecture historia

Zwiększamy efektywność zespołów projektowych 9

Historia

www.bnsit.pl

Hexagonal aka Ports and Adapters

Zwiększamy efektywność zespołów projektowych 10

www.bnsit.pl

Onion Architecture

Zwiększamy efektywność zespołów projektowych 11

www.bnsit.pl

Clean Architecture

Zwiększamy efektywność zespołów projektowych 12

www.bnsit.pl

Obvious Architecture

Zwiększamy efektywność zespołów projektowych 13

www.bnsit.pl Zwiększamy efektywność zespołów projektowych 14

hRps://8thlight.com/blog/assets/posts/2012-08-13-the-clean-architecture/CleanArchitecture-8b00a9d7e2543fa9ca76b81b05066629.jpg

www.bnsit.pl

Głównyscenariuszpowodzenia:1.Systemwyświetlaużytkownikowistronelogowaniazpolamiloginuihasła2.Użytkownikpodajeloginihasło3.Systempozytywnieweryfikujepodaneprzezużytkownikadane4.Użytkownikzostajezalogowany

Przypadki użycia?

Zwiększamy efektywność zespołów projektowych 15

www.bnsit.pl

Scenariuszealternatywne:2.1–Użytkownikniemajeszczeswojegokonta,systemproponujeUC-05–rejestracjanowegoużytkownika.3.1-Systemnegatywnieweryfikujepodaneprzezużytkownikadane.Systemponownieprosiużytkownikaopodanieloginuihasła.3.2–Systemnegatywnieweryfikujepodaneprzezużytkownikadane,systemproponujeUC-07–Proceduraprzypomnieniahasła.3.3-Systemnegatywnieweryfikujepodaneprzezużytkownikadane(n>3).Systemblokujekontoklienta(UC-09-blokadakontaklienta)

Przypadki użycia?

Zwiększamy efektywność zespołów projektowych 16

www.bnsit.pl Zwiększamy efektywność zespołów projektowych 17

www.bnsit.pl Zwiększamy efektywność zespołów projektowych 18

Tusiękończykoncept–resztatoimplementacja!

Zwiększamy efektywność zespołów projektowych 19

www.bnsit.pl

W kodzie

Zwiększamy efektywność zespołów projektowych 20

www.bnsit.pl Zwiększamy efektywność zespołów projektowych 24

www.bnsit.pl

Prezentacja

Zwiększamy efektywność zespołów projektowych 28

www.bnsit.pl Zwiększamy efektywność zespołów projektowych 29

www.bnsit.pl

Clean architecture a inne trendy

Zwiększamy efektywność zespołów projektowych 33

www.bnsit.pl

Clean Architecture a Microservice’y

Zwiększamy efektywność zespołów projektowych 34

www.bnsit.pl Zwiększamy efektywność zespołów projektowych 35

www.bnsit.pl Zwiększamy efektywność zespołów projektowych 36

www.bnsit.pl Zwiększamy efektywność zespołów projektowych 37

www.bnsit.pl

Clean Architecture a DDD

Zwiększamy efektywność zespołów projektowych 38

www.bnsit.pl

Clean Architecture a DDD

Zwiększamy efektywność zespołów projektowych 39

www.bnsit.pl

To używać czy nie?

Zwiększamy efektywność zespołów projektowych 40

www.bnsit.pl

#  Jasnaseparacjawarstw-nietylkooddzielamydomenyalei„warstwy”

# Względniełatwawymianawarstwytechnologicznej

#  Architekturadobrzeotwieranaróżnychklientów

#  Testowalność-przyzachowaniuinterfejsówniemalwkażdąstronę

# Możnarozwijaćlogikędziedzinowąniezależnieodtechnikaliów

Zalety

Zwiększamy efektywność zespołów projektowych 41

www.bnsit.pl

#  JaktosięmadoUC?#  Dużazłożoność,szczególnieprzypurystycznejimplementacji•  Dużailośćinterfejsównagranicachmiędzywarstwami

#  Osobnemodeledladziedziny,repository,widoku,interactoraCzywspółdzielićmodeleRepositoryiEnpty?•  Purystycznie–konfiguracjazewnętrzna(XML,fluentapi)•  Akceptujemyniektóreadnotacje(np.wJava@Inject,ORM)

•  Dwiewersje–czystaizadnotacjami„nadpisana”#  DependencyInversionwprowadzaniebezpośredniośćkomunikacji(zdegenerowanyobserwator)

Wady

Zwiększamy efektywność zespołów projektowych 42

www.bnsit.pl

#  Złożonedziedziny–wpołączeniuzDDD#  Krytycznesystemy/aplikacje#  Zespołyowysokichkompetencjach# Wieluklientów#  Dladługotrwałychprojektów•  DlakilkutygodniowychlubCRUDowychtobędziekiller

•  Chybażechceszpotrenować#  RaczejewolucjawstronęCleanArchitecture•  CleanArchitectureniejestKISS

Kiedy używać?

Zwiększamy efektywność zespołów projektowych 43

www.bnsit.pl

#  hRp://worldversus.com/img/terminator.jpg#  hRps://sites.google.com/site/unclebobconsulpngllc/#  hRp://lenagroeger.s3.amazonaws.com/talks/nicar-2015/pmelines-nicar/

pmelines.html#  hRp://alistair.cockburn.us/Hexagonal+architecture#  hRp://jeffreypalermo.com/blog/the-onion-architecture-part-1/#  hRps://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html#  hRps://8thlight.com/blog/uncle-bob/2011/09/30/Screaming-Architecture.html#  hRps://github.com/RetroMocha/obvious

Credits

Zwiększamy efektywność zespołów projektowych 44