Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Architektura z bliska i daleka #CodeteCon

112 views

Published on

Przegląd najpopularniejszych architektur oprogramowania wraz z ich analizą. Dodatkowo suplement w postaci dobrych praktyk w tworzeniu architektury oprogramowania

Published in: Software
  • Be the first to comment

  • Be the first to like this

Architektura z bliska i daleka #CodeteCon

  1. 1. Architektura oprogramowania z bliska i daleka CodeteCon #LBN2 Paweł Janusz
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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?… $$$$$ ;)
  13. 13. #codetecon #lbn2 @Czujnik81 SUPLEMENT moje przemyślenia
  14. 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. 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. 16. #codetecon #lbn2 @Czujnik81 Zalety dobrej architektury •Wysoka produktywność •Łatwa w utrzymaniu •Łatwa w rozbudowie •Bezpieczna •Skalowalna •Niezawodna •Pozwala dostarczać lepsze rozwiązania taniej
  17. 17. #codetecon #lbn2 @Czujnik81 #Bonus Track: narzędzia
  18. 18. #codetecon #lbn2 @Czujnik81 Q&A
  19. 19. #codetecon #lbn2 @Czujnik81 Skoro wszystko już oczywiste ;)

×