SlideShare a Scribd company logo
1 of 19
Download to read offline
Architektura
oprogramowania
z bliska i daleka
CodeteCon #LBN2
Paweł Janusz
#codetecon #lbn2 @Czujnik81
O mnie…
▸ Szczęśliwy mąż i tatuś 3 urwisów ;)
▸ Back-end oriented: Spring, JEE
▸ Zawodowo: 

Onwelo - Solution Delivery Manager
▸ TWITTER: @Czujnik81
#codetecon #lbn2 @Czujnik81
Architektura oprogramowania
Odcinek #8192
•Kilka słów o architekturze - tak ogólnie
•Wybrane architektury:
•Pulpa style
•Warstwy - czyli coś dla Ogrów
•Event Driven
•SOA i Mikroserwisy
•Where my servers?
•Jak tworzyć i zmieniać architekturę
#codetecon #lbn2 @Czujnik81
Architektura oprogramowania
przypomina trochę…
✓ każdy mówi jak ją robić;
✓ nikt nie wie na prawdę jak ją robić;
✓ wszyscy myślą, że wszyscy inni ją robią;
✓ więc wszyscy twierdzą, że ją robią
sex nastolatków:
#codetecon #lbn2 @Czujnik81
Definicja
•The software architecture of a computing system is the
set of structures needed to reason about the system,
which comprise software elements, relations among them
and properties of both

(Documenting Software Architecture: Views and Beyond, 2nd Ed., Clements et al. 2010)
•The important stuff, Whatever that is

(Ralph Johnson)
#codetecon #lbn2 @Czujnik81
Opowiastka o
Architekturze…
•Czym jest Architektura oprogramowania?
•Kiedy ją definiujemy?
•Co jest celem architektury?
•Komu na niej nie zależy ;)
•Czy można ją zmieniać?
#codetecon #lbn2 @Czujnik81
Poziomy architektury
•Simon Brown C4:
•System level - budujemy system w organizacji
•Container level - dostarczamy rozwiązania
•Component level - definiujemy elementy, które
tworzą rozwiązanie
•Code level - kod, który wykonuje konkretne
polecenia
https://c4model.com/
#codetecon #lbn2 @Czujnik81
#1 Pulpa Style:
Big ball of mud
• System bez wyraźnej
architektury
• Elementy w systemie łączą
się dowolnie - często każdy
z każdym
• Proces wprowadzania
zmian jest żmudny i trudny
ze względu na zależności
• Trudny w utrzymaniu
https://www.synthesis.co.za/agile-software-architecture-super-agile/
#codetecon #lbn2 @Czujnik81
#2 Architektury warstwowe
trochę jak Ogry i cebula
• Od jednej do wielu warstw
• Każda warstwa ma swoją z góry
określoną odpowiedzialność
• Każda warstwa komunikuje się tylko
w jednym kierunku: “w dół” i
odpowiada w jednym kierunku “do
góry”
• Jest uporządkowana
• Zmiany mogą być realizowane w
każdej warstwie osobno lub kilku
naraz
https://www.codeproject.com/articles/1018717/layered-software-architecture
Kwadrat Kwadrat Beczka
by Jarek Pałka ;)
#codetecon #lbn2 @Czujnik81
#3 Event driven
•Wszystko w aplikacji jest
zdarzeniem i z nich
możemy poznać stan
systemu
•Obsługa zdarzeń
wykonywana jest
asynchronicznie
•Wspiera skalowalność
poprzez swoje rozproszenie
•Łatwa w rozbudowywaniu,
trudna w testowaniu i
monitorowaniu
https://deepakpol.wordpress.com/2015/09/29/event-driven-and-reactive-architecture/
Event
Event Loop
Handler
#codetecon #lbn2 @Czujnik81
#4 SOA i Mikroserwisy
•Zorientowane na konkretne
usługi biznesowe
•Niezależne usługi dopiero
poprzez orkiestrację tworzą
system
•Luźno powiązane ze sobą
•Łatwo skalowalne
•Łatwe testowanie pojedynczych
serwisów, trudne testowanie
całości (e2e)
•Wymagają rozbudowanego
monitorowania
https://msdn.microsoft.com/en-us/library/
#codetecon #lbn2 @Czujnik81
#5 Where my servers?
#serverless
•Zero infrastructure
•Zazwyczaj vendor locked
•Super skalowalna bez
żmudnego procesu
dostosowywania
oprogramowania
•Wiele gotowych do użycia
rozwiązań
•Wbudowane narzędzia do
monitorowania
•A gdzie jest haczyk?… $$$$$ ;)
#codetecon #lbn2 @Czujnik81
SUPLEMENT
moje przemyślenia
#codetecon #lbn2 @Czujnik81
Jak podejść do
architektury?
•Buduj z założeniem, że zmienisz
•KISS
•Pułapka overdesignu
•Architektura to nie tylko Dev ale i Ops, Security, Biznes
(sic!)
#codetecon #lbn2 @Czujnik81
Jak zmieniać
architekturę?
•Analizuj każdą potencjalną zmianę - daj sobie czas
•Nie wprowadzaj pochopnie nowych rozwiązań do
systemu
•Konsultuj z zespołem i dyskutuj
•Zmiany wprowadzaj powoli i iteracyjnie
•Jak rozmawiać o zmianach w architekturze z biznesem?
#codetecon #lbn2 @Czujnik81
Zalety dobrej architektury
•Wysoka produktywność
•Łatwa w utrzymaniu
•Łatwa w rozbudowie
•Bezpieczna
•Skalowalna
•Niezawodna
•Pozwala dostarczać lepsze
rozwiązania taniej
#codetecon #lbn2 @Czujnik81
#Bonus Track: narzędzia
#codetecon #lbn2 @Czujnik81
Q&A
#codetecon #lbn2 @Czujnik81
Skoro wszystko już
oczywiste ;)

More Related Content

Similar to Architektura z bliska i daleka #CodeteCon

Piątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryPiątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryXSolve
 
DevOps - what I have learnt so far
DevOps - what I have learnt so far DevOps - what I have learnt so far
DevOps - what I have learnt so far Wojciech Barczyński
 
Mateusz Gajewski - Architektura Allegro - 4 lata po rewolucji mikrousługowej
Mateusz Gajewski - Architektura Allegro - 4 lata po rewolucji mikrousługowejMateusz Gajewski - Architektura Allegro - 4 lata po rewolucji mikrousługowej
Mateusz Gajewski - Architektura Allegro - 4 lata po rewolucji mikrousługowejPROIDEA
 
Konstruktor budowli LEGO
Konstruktor budowli LEGOKonstruktor budowli LEGO
Konstruktor budowli LEGOpiotrmm
 
Tdd - Czyli jak tworzyć dobre jakościowo aplikacje
Tdd - Czyli jak tworzyć dobre jakościowo aplikacjeTdd - Czyli jak tworzyć dobre jakościowo aplikacje
Tdd - Czyli jak tworzyć dobre jakościowo aplikacjeSPARK MEDIA
 
Praktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlPraktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlSebastian Marek
 
Kubernetes (Canary) Deployments
Kubernetes (Canary) DeploymentsKubernetes (Canary) Deployments
Kubernetes (Canary) DeploymentsThe Software House
 
SkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel DecSkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel Deckraqa
 

Similar to Architektura z bliska i daleka #CodeteCon (10)

5
55
5
 
Piątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryPiątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous Delivery
 
Sentio
SentioSentio
Sentio
 
DevOps - what I have learnt so far
DevOps - what I have learnt so far DevOps - what I have learnt so far
DevOps - what I have learnt so far
 
Mateusz Gajewski - Architektura Allegro - 4 lata po rewolucji mikrousługowej
Mateusz Gajewski - Architektura Allegro - 4 lata po rewolucji mikrousługowejMateusz Gajewski - Architektura Allegro - 4 lata po rewolucji mikrousługowej
Mateusz Gajewski - Architektura Allegro - 4 lata po rewolucji mikrousługowej
 
Konstruktor budowli LEGO
Konstruktor budowli LEGOKonstruktor budowli LEGO
Konstruktor budowli LEGO
 
Tdd - Czyli jak tworzyć dobre jakościowo aplikacje
Tdd - Czyli jak tworzyć dobre jakościowo aplikacjeTdd - Czyli jak tworzyć dobre jakościowo aplikacje
Tdd - Czyli jak tworzyć dobre jakościowo aplikacje
 
Praktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlPraktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPl
 
Kubernetes (Canary) Deployments
Kubernetes (Canary) DeploymentsKubernetes (Canary) Deployments
Kubernetes (Canary) Deployments
 
SkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel DecSkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel Dec
 

Architektura z bliska i daleka #CodeteCon

  • 1. Architektura oprogramowania z bliska i daleka CodeteCon #LBN2 Paweł Janusz
  • 2. #codetecon #lbn2 @Czujnik81 O mnie… ▸ Szczęśliwy mąż i tatuś 3 urwisów ;) ▸ Back-end oriented: Spring, JEE ▸ Zawodowo: 
 Onwelo - Solution Delivery Manager ▸ TWITTER: @Czujnik81
  • 3. #codetecon #lbn2 @Czujnik81 Architektura oprogramowania Odcinek #8192 •Kilka słów o architekturze - tak ogólnie •Wybrane architektury: •Pulpa style •Warstwy - czyli coś dla Ogrów •Event Driven •SOA i Mikroserwisy •Where my servers? •Jak tworzyć i zmieniać architekturę
  • 4. #codetecon #lbn2 @Czujnik81 Architektura oprogramowania przypomina trochę… ✓ każdy mówi jak ją robić; ✓ nikt nie wie na prawdę jak ją robić; ✓ wszyscy myślą, że wszyscy inni ją robią; ✓ więc wszyscy twierdzą, że ją robią sex nastolatków:
  • 5. #codetecon #lbn2 @Czujnik81 Definicja •The software architecture of a computing system is the set of structures needed to reason about the system, which comprise software elements, relations among them and properties of both
 (Documenting Software Architecture: Views and Beyond, 2nd Ed., Clements et al. 2010) •The important stuff, Whatever that is
 (Ralph Johnson)
  • 6. #codetecon #lbn2 @Czujnik81 Opowiastka o Architekturze… •Czym jest Architektura oprogramowania? •Kiedy ją definiujemy? •Co jest celem architektury? •Komu na niej nie zależy ;) •Czy można ją zmieniać?
  • 7. #codetecon #lbn2 @Czujnik81 Poziomy architektury •Simon Brown C4: •System level - budujemy system w organizacji •Container level - dostarczamy rozwiązania •Component level - definiujemy elementy, które tworzą rozwiązanie •Code level - kod, który wykonuje konkretne polecenia https://c4model.com/
  • 8. #codetecon #lbn2 @Czujnik81 #1 Pulpa Style: Big ball of mud • System bez wyraźnej architektury • Elementy w systemie łączą się dowolnie - często każdy z każdym • Proces wprowadzania zmian jest żmudny i trudny ze względu na zależności • Trudny w utrzymaniu https://www.synthesis.co.za/agile-software-architecture-super-agile/
  • 9. #codetecon #lbn2 @Czujnik81 #2 Architektury warstwowe trochę jak Ogry i cebula • Od jednej do wielu warstw • Każda warstwa ma swoją z góry określoną odpowiedzialność • Każda warstwa komunikuje się tylko w jednym kierunku: “w dół” i odpowiada w jednym kierunku “do góry” • Jest uporządkowana • Zmiany mogą być realizowane w każdej warstwie osobno lub kilku naraz https://www.codeproject.com/articles/1018717/layered-software-architecture Kwadrat Kwadrat Beczka by Jarek Pałka ;)
  • 10. #codetecon #lbn2 @Czujnik81 #3 Event driven •Wszystko w aplikacji jest zdarzeniem i z nich możemy poznać stan systemu •Obsługa zdarzeń wykonywana jest asynchronicznie •Wspiera skalowalność poprzez swoje rozproszenie •Łatwa w rozbudowywaniu, trudna w testowaniu i monitorowaniu https://deepakpol.wordpress.com/2015/09/29/event-driven-and-reactive-architecture/ Event Event Loop Handler
  • 11. #codetecon #lbn2 @Czujnik81 #4 SOA i Mikroserwisy •Zorientowane na konkretne usługi biznesowe •Niezależne usługi dopiero poprzez orkiestrację tworzą system •Luźno powiązane ze sobą •Łatwo skalowalne •Łatwe testowanie pojedynczych serwisów, trudne testowanie całości (e2e) •Wymagają rozbudowanego monitorowania https://msdn.microsoft.com/en-us/library/
  • 12. #codetecon #lbn2 @Czujnik81 #5 Where my servers? #serverless •Zero infrastructure •Zazwyczaj vendor locked •Super skalowalna bez żmudnego procesu dostosowywania oprogramowania •Wiele gotowych do użycia rozwiązań •Wbudowane narzędzia do monitorowania •A gdzie jest haczyk?… $$$$$ ;)
  • 14. #codetecon #lbn2 @Czujnik81 Jak podejść do architektury? •Buduj z założeniem, że zmienisz •KISS •Pułapka overdesignu •Architektura to nie tylko Dev ale i Ops, Security, Biznes (sic!)
  • 15. #codetecon #lbn2 @Czujnik81 Jak zmieniać architekturę? •Analizuj każdą potencjalną zmianę - daj sobie czas •Nie wprowadzaj pochopnie nowych rozwiązań do systemu •Konsultuj z zespołem i dyskutuj •Zmiany wprowadzaj powoli i iteracyjnie •Jak rozmawiać o zmianach w architekturze z biznesem?
  • 16. #codetecon #lbn2 @Czujnik81 Zalety dobrej architektury •Wysoka produktywność •Łatwa w utrzymaniu •Łatwa w rozbudowie •Bezpieczna •Skalowalna •Niezawodna •Pozwala dostarczać lepsze rozwiązania taniej
  • 19. #codetecon #lbn2 @Czujnik81 Skoro wszystko już oczywiste ;)