SlideShare a Scribd company logo
1 of 44
Download to read offline
Clean architecture
Mariusz Sieraczkiewicz
@ms_bnsit_pl
http://msieraczkiewicz.blogspot.com
www.bnsit.pl
#  Homo	deus	
Tytuł aktualnie wyświetlanego slajdu
Zwiększamy efektywność zespołów projektowych 2
Pełny tytuł szkolenia
#  Czy	potrzebujemy	kolejnej	architektury?	
•  Hexagonal/Port	and	Adapters	
•  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
#  Kod	który	czyta	się	jak	książkę	
#  Use	cases	
#  #noFrameworks	
#  Business	Driven	
Zwiększamy efektywność zespołów projektowych 6
A	tymczasem…	
	
(tu	powinien	być	rysunek	obrazujący	chaos	i	
spagheP)	
Zwiększamy efektywność zespołów projektowych 7
A	tymczasem…	
	
(tu	powinien	być	rysunek	obrazujący	chaos	i	
spagheP)	
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łówny	scenariusz	powodzenia:	
1.	System	wyświetla	użytkownikowi	stronę	
logowania	z	polami	loginu	i	hasła		
2.	Użytkownik	podaje	login	i	hasło		
3.	System	pozytywnie	weryfikuje	podane	przez	
użytkownika	dane		
4.	Użytkownik	zostaje	zalogowany		
Przypadki użycia?
Zwiększamy efektywność zespołów projektowych 15
www.bnsit.pl
Scenariusze	alternatywne:	
	
2.1	–	Użytkownik	nie	ma	jeszcze	swojego	konta,	system	proponuje	
UC-	05	–	rejestracja	nowego	użytkownika.		
	
3.1	-	System	negatywnie	weryfikuje	podane	przez	użytkownika	dane.	
System	ponownie	prosi	użytkownika	o	podanie	loginu	i	hasła.		
	
3.2	–	System	negatywnie	weryfikuje	podane	przez	użytkownika	dane,	
system	proponuje	UC-07	–	Procedura	przypomnienia	hasła.		
	
3.3	-	System	negatywnie	weryfikuje	podane	przez	użytkownika	dane	
(n>3).	System	blokuje	konto	klienta	(UC-09	-	blokada	konta	klienta)		
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
Tu	się	kończy	koncept	–	reszta	to	
implementacja!	
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
#  Jasna	separacja	warstw	-	nie	tylko	oddzielamy	
domeny	ale	i	„warstwy”	
#  Względnie	łatwa	wymiana	warstwy	
technologicznej	
#  Architektura	dobrze	otwiera	na	różnych	
klientów	
#  Testowalność	-	przy	zachowaniu	interfejsów	
niemal	w	każdą	stronę	
#  Można	rozwijać	logikę	dziedzinową	
niezależnie	od	technikaliów	
Zalety
Zwiększamy efektywność zespołów projektowych 41
www.bnsit.pl
#  Jak	to	się	ma	do	UC?	
#  Duża	złożoność,	szczególnie	przy	purystycznej	
implementacji	
•  Duża	ilość	interfejsów	na	granicach	między	warstwami	
#  Osobne	modele	dla	dziedziny,	repository,	widoku,	
interactora	Czy	współdzielić	modele	Repository	i	
Enpty?	
•  Purystycznie	–	konfiguracja	zewnętrzna	(XML,	fluent	api)	
•  Akceptujemy	niektóre	adnotacje	(np.	w	Java	@Inject,	
ORM)	
•  Dwie	wersje	–	czysta	i	z	adnotacjami	„nadpisana”	
#  Dependency	Inversion	wprowadza	niebezpośredniość	
komunikacji	(zdegenerowany	obserwator)	
Wady
Zwiększamy efektywność zespołów projektowych 42
www.bnsit.pl
#  Złożone	dziedziny	–	w	połączeniu	z	DDD	
#  Krytyczne	systemy/aplikacje	
#  Zespoły	o	wysokich	kompetencjach	
#  Wielu	klientów	
#  Dla	długotrwałych	projektów	
•  Dla	kilkutygodniowych	lub	CRUDowych	to	będzie	
killer	
•  Chyba	że	chcesz	potrenować	
#  Raczej	ewolucja	w	stronę	Clean	Architecture	
•  Clean	Architecture	nie	jest	KISS	
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

More Related Content

Similar to Clean architecture - co z tego możesz wziąć dla siebie

Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
C++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programówC++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programówWydawnictwo Helion
 
Strategie sukcesu zespołów IT (Spotkatnie Strefy Wiedzy Lidera IT)
Strategie sukcesu zespołów IT (Spotkatnie Strefy Wiedzy Lidera IT)Strategie sukcesu zespołów IT (Spotkatnie Strefy Wiedzy Lidera IT)
Strategie sukcesu zespołów IT (Spotkatnie Strefy Wiedzy Lidera IT)BNS IT
 
Zasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznychZasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznychsztywny
 
Od codziennej higieny do strategicznej refaktoryzacji
Od codziennej higieny do strategicznej refaktoryzacjiOd codziennej higieny do strategicznej refaktoryzacji
Od codziennej higieny do strategicznej refaktoryzacjiMichał Bartyzel
 
C++. Strategie i taktyki. Vademecum profesjonalisty
C++. Strategie i taktyki. Vademecum profesjonalistyC++. Strategie i taktyki. Vademecum profesjonalisty
C++. Strategie i taktyki. Vademecum profesjonalistyWydawnictwo Helion
 
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...PROIDEA
 
MS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektami
MS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektamiMS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektami
MS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektamiWydawnictwo Helion
 
Scrum (Polish version) - wprowadzenie do frameworka
Scrum (Polish version) - wprowadzenie do frameworkaScrum (Polish version) - wprowadzenie do frameworka
Scrum (Polish version) - wprowadzenie do frameworkaalbrzykowski
 
Wiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanie
Wiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanieWiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanie
Wiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanieMichał Parkoła
 
Microsoft SQL Server 2005. Podręcznik programisty
Microsoft SQL Server 2005. Podręcznik programistyMicrosoft SQL Server 2005. Podręcznik programisty
Microsoft SQL Server 2005. Podręcznik programistyWydawnictwo Helion
 
Microsoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuMicrosoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuHighWheelSoftware
 
C++. Potęga języka. Od przykładu do przykładu
C++. Potęga języka. Od przykładu do przykładuC++. Potęga języka. Od przykładu do przykładu
C++. Potęga języka. Od przykładu do przykładuWydawnictwo Helion
 
Zarządzanie wiedzą w organizacji – Tomasz Karwatka, Divante
Zarządzanie wiedzą w organizacji – Tomasz Karwatka, DivanteZarządzanie wiedzą w organizacji – Tomasz Karwatka, Divante
Zarządzanie wiedzą w organizacji – Tomasz Karwatka, Divantebridgecamp
 
Zarządzanie wiedzą w organizacji - Tomasz Karwatka
Zarządzanie wiedzą w organizacji - Tomasz KarwatkaZarządzanie wiedzą w organizacji - Tomasz Karwatka
Zarządzanie wiedzą w organizacji - Tomasz Karwatkaecommerce poland expo
 
Michał Koniewicz - "SCRUM - jak ugryźć i nie połamać sobie zębów - doświadcza...
Michał Koniewicz - "SCRUM - jak ugryźć i nie połamać sobie zębów - doświadcza...Michał Koniewicz - "SCRUM - jak ugryźć i nie połamać sobie zębów - doświadcza...
Michał Koniewicz - "SCRUM - jak ugryźć i nie połamać sobie zębów - doświadcza...PMI Szczecin
 
Zautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSISZautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSISBartosz Ratajczyk
 
Mitologia DevOps - Łukasz Wielebski @ Agile Management 2014 Poland
Mitologia DevOps - Łukasz Wielebski  @ Agile Management 2014 PolandMitologia DevOps - Łukasz Wielebski  @ Agile Management 2014 Poland
Mitologia DevOps - Łukasz Wielebski @ Agile Management 2014 PolandFundacja Governica
 

Similar to Clean architecture - co z tego możesz wziąć dla siebie (20)

Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Scrum
ScrumScrum
Scrum
 
C++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programówC++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programów
 
Strategie sukcesu zespołów IT (Spotkatnie Strefy Wiedzy Lidera IT)
Strategie sukcesu zespołów IT (Spotkatnie Strefy Wiedzy Lidera IT)Strategie sukcesu zespołów IT (Spotkatnie Strefy Wiedzy Lidera IT)
Strategie sukcesu zespołów IT (Spotkatnie Strefy Wiedzy Lidera IT)
 
C#. Wzorce projektowe
C#. Wzorce projektoweC#. Wzorce projektowe
C#. Wzorce projektowe
 
Zasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznychZasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznych
 
Od codziennej higieny do strategicznej refaktoryzacji
Od codziennej higieny do strategicznej refaktoryzacjiOd codziennej higieny do strategicznej refaktoryzacji
Od codziennej higieny do strategicznej refaktoryzacji
 
C++. Strategie i taktyki. Vademecum profesjonalisty
C++. Strategie i taktyki. Vademecum profesjonalistyC++. Strategie i taktyki. Vademecum profesjonalisty
C++. Strategie i taktyki. Vademecum profesjonalisty
 
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...
 
MS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektami
MS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektamiMS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektami
MS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektami
 
Scrum (Polish version) - wprowadzenie do frameworka
Scrum (Polish version) - wprowadzenie do frameworkaScrum (Polish version) - wprowadzenie do frameworka
Scrum (Polish version) - wprowadzenie do frameworka
 
Wiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanie
Wiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanieWiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanie
Wiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanie
 
Microsoft SQL Server 2005. Podręcznik programisty
Microsoft SQL Server 2005. Podręcznik programistyMicrosoft SQL Server 2005. Podręcznik programisty
Microsoft SQL Server 2005. Podręcznik programisty
 
Microsoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuMicrosoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 roku
 
C++. Potęga języka. Od przykładu do przykładu
C++. Potęga języka. Od przykładu do przykładuC++. Potęga języka. Od przykładu do przykładu
C++. Potęga języka. Od przykładu do przykładu
 
Zarządzanie wiedzą w organizacji – Tomasz Karwatka, Divante
Zarządzanie wiedzą w organizacji – Tomasz Karwatka, DivanteZarządzanie wiedzą w organizacji – Tomasz Karwatka, Divante
Zarządzanie wiedzą w organizacji – Tomasz Karwatka, Divante
 
Zarządzanie wiedzą w organizacji - Tomasz Karwatka
Zarządzanie wiedzą w organizacji - Tomasz KarwatkaZarządzanie wiedzą w organizacji - Tomasz Karwatka
Zarządzanie wiedzą w organizacji - Tomasz Karwatka
 
Michał Koniewicz - "SCRUM - jak ugryźć i nie połamać sobie zębów - doświadcza...
Michał Koniewicz - "SCRUM - jak ugryźć i nie połamać sobie zębów - doświadcza...Michał Koniewicz - "SCRUM - jak ugryźć i nie połamać sobie zębów - doświadcza...
Michał Koniewicz - "SCRUM - jak ugryźć i nie połamać sobie zębów - doświadcza...
 
Zautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSISZautomatyzuj swój proces wdrażania projektów SSIS
Zautomatyzuj swój proces wdrażania projektów SSIS
 
Mitologia DevOps - Łukasz Wielebski @ Agile Management 2014 Poland
Mitologia DevOps - Łukasz Wielebski  @ Agile Management 2014 PolandMitologia DevOps - Łukasz Wielebski  @ Agile Management 2014 Poland
Mitologia DevOps - Łukasz Wielebski @ Agile Management 2014 Poland
 

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