Architektura a její návrhSpring framework training materials by Roman Pichlík is licensed under a Creative Commons Attribu...
ArchitekturaSunday 26 May 13
Sunday 26 May 13Sagrada Familia (Barcelona), Chrám Sv. Víta v Praze
“Applications architecture is thescience and art of ensuring the suiteof applications being used by anorganization to crea...
Architektura a její základnícharakteristikaSunday 26 May 13zájmy = uživatelé, vlastníci, operationsco a jak= integrita, vi...
Respektujezájmy všechArchitektura a její základnícharakteristikaSunday 26 May 13zájmy = uživatelé, vlastníci, operationsco...
Respektujezájmy všechOdděleníodpovědnostíArchitektura a její základnícharakteristikaSunday 26 May 13zájmy = uživatelé, vla...
Respektujezájmy všechOdděleníodpovědnostíOddělujeCo a JakArchitektura a její základnícharakteristikaSunday 26 May 13zájmy ...
Respektujezájmy všechOdděleníodpovědnostíŘízená kvalitouOddělujeCo a JakArchitektura a její základnícharakteristikaSunday ...
“Nefunkční” požadavkySunday 26 May 13
KvalitaSunday 26 May 13Zaměření na atributy nesouvisející přímo s funkčními požadavky
škálovatelnost špatná výkonnostKvalitaSunday 26 May 13Zaměření na atributy nesouvisející přímo s funkčními požadavky
rozšiřitelnosttechnologický dluhoverengineeringškálovatelnost špatná výkonnostKvalitaSunday 26 May 13Zaměření na atributy ...
rozšiřitelnosttechnologický dluhoverengineeringoperovatelnost drahý provozškálovatelnost špatná výkonnostKvalitaSunday 26 ...
rozšiřitelnosttechnologický dluhoverengineeringoperovatelnost drahý provozškálovatelnost špatná výkonnostKvalitabezpečnost...
rozšiřitelnosttechnologický dluhoverengineeringoperovatelnost drahý provozškálovatelnost špatná výkonnostKvalitabezpečnost...
Oddělení odpovědnostíSunday 26 May 13
Motivace• Modulárnost• Kompozice low-level částí dovětších celků• Snížení komplexity• Jednodušší správa• Refactoring• Rozš...
Dva zásadní vzory• Oddělení strukturydat od jejichprezentace• Rozdělení aplikacena vrstvy s různouodpovědností• Třívrstváa...
Vzory (Patterns)Sunday 26 May 13
Sunday 26 May 13Návrhové vzory- mnoho problémů a jejich řešení lze generalizovat- různá úroveň abstrakce (objekty, kompone...
GoF Design patterns• Vzory řešící vznikobjektů• Vzory řešícístrukturu objektů• Vzory řešícíchování objektůSunday 26 May 13...
• Cvičení• Vyjmenujte alespoň 4 GoF návrhové vzory, kterépoužívá vaše aplikace případně knihovny, kterépoužíváteSunday 26 ...
J2EE patterns• Vzory řešící prezentačnívrstvu• Vzory pro aplikačnílogiku• Vzory integrační vrstvySunday 26 May 13Vznikly n...
Architektonické vzory• Martin Fowler a kol.• Rozdělení vzorů podlevrstev• De facto standard propopis částí aplikace• Vliv•...
Datová vrstva aplikaceData Source Architectural PatternsObject-Releation vrstvaObject-RelationalBehavioral PatternsObject-...
Datová vrstvaSunday 26 May 13Mnoho těchto vzorů znáte z tradičních frameworků.
Query object• Objekt zapouzdřujícídatabázový dotaz• Interpretr z GoF• Umožňuje různý způsobpřekladu v závislosti napersist...
Lazy load• Objekt, kterýneobsahuje všechnydata, ale ví jak jenahrát• VýkonostSunday 26 May 13
Identity map• Zajišťuje nahráníobjektu pouzejednou v rámcibusiness transkace• VýkonnostSunday 26 May 13
Unit of Work• Udržuje seznam všech objektůnačtených a modifikovanýchv rámci business transakce• Zajišťuje správné pořadíDML...
Active Record• Objekt zapouzdřuje jedenřádek v databázi• Databázová logika součástídoménového objektu• Usnadňuje práci kli...
Single table inheritance• Objektová dědičnostmapovaná do jednétabulky• Není potřeba join přesvíce tabulek• select * from P...
Concrete table inheritance• Každá třída mávlastní tabulku• Výhodné pokud seobjekty liší• Not null sloupceSunday 26 May 13
Serialized LOB• Graf objektů (hierarchie)je sezializován jako celekdo (B)LOB struktury• SELECT výkonost• Přicházíme o výho...
Aplikační vrstvaSunday 26 May 13
Optimistic offline lock• Ochrana předkonkurenčnímpřepisem dat• Umožňuje víceklientům pracovat sjednou verzí dat• Kontrola z...
Pessimistic offline lock• Ochrana předkonkurenčnímpřepisem dat• Menší propustnost• Jistota, že transakcebude dokončenaSunda...
Coarse-grained lock• Zámek asociovanýse skupinou objektů• Jednoduššízamykání• Výkonnost• Není potřebanahrávat každýjednotl...
Service stub• Odstranění těsné vazbyna problematické částisystému během vývoje• In-memory stub• Cíl• rychlost vývojeSunday...
Gateway• Objekt (rozhraní)zapouzdřujícípřístup doexterního systému• Změna technologieSunday 26 May 13
Domain model• Model, kterýzapouzdřuje data a jejichvazby pro danoudoménuSunday 26 May 13
Service layer• Zapouzdřuje aplikačnílogiku pro vyšší vrstvyaplikace• Usnadňuje interakci• Koordinace transakcíSunday 26 Ma...
Prezentační vrstvaSunday 26 May 13
Model View Controller• Oddělení odpovědností přiobsluze uživatelskéhorozhraní• Umožňuje zvolit různouprezentaci• Testovate...
Front controller• Obsluha společnýchvlastností pro celouwebovou aplikaci• Internacionalizace• Překlad výjimek• Snižuje kom...
Application controller• Zapouzdřujenavigaci prosložitější flow• WizardsSunday 26 May 13
Remote facade• Poskytuje coarse-grained interfacepro vzdálené volání• Větší efektivita• Menší početsíťových voláníSunday 2...
Data Transfer Objects• Přepravka pro data• Minimalizuje početvzdálených voláníSunday 26 May 13
• Cvičení• Vyjmenujte alespoň 4 architektonické vzory, kterépoužívá vaše aplikace• Vyjmenujte 4 Architektonické vzory, kte...
Návrhové problémySunday 26 May 13
• Anémický doménový model• Leaky abstraction• Prosakující API z nižších vrstev• OverengineringSunday 26 May 13Proč zavádím...
Škálovatelnost a výkonostSunday 26 May 13
ŠkálovatelnostŠkálovatelnost je schopnost systémuzvýšit výkonnost proporčně kpřidaným zdrojům. Zvýšenívýkonnosti znamená o...
Horizontální škálovatelnost• Scale-out• Přidání novýchvýpočetních uzlů• Cluster• Přináší sebou jinourodinu problémů vdistr...
Vertikální škálovatelnost• Přidání prostředkůexistujícímusystému• CPU, RAM, Disk• Hardwarové limity• CenaSunday 26 May 13
Load balancingSunday 26 May 13
Rozložení zátěže• Round robin• Sticky session (Affinity)Sunday 26 May 13
Dva módy• Centrální load balancer• Klientský load balancerSunday 26 May 13
Škálování databáze• Slave reads• Sharding• CAP theoremSunday 26 May 13
• Workshop návrh rezervačního systému ubytování (booking.com)• Systém má tyto základní části• Billing, User/Hotel manageme...
Upcoming SlideShare
Loading in …5
×

App Design Architecture

592 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
592
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

App Design Architecture

  1. 1. Architektura a její návrhSpring framework training materials by Roman Pichlík is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.Sunday 26 May 13
  2. 2. ArchitekturaSunday 26 May 13
  3. 3. Sunday 26 May 13Sagrada Familia (Barcelona), Chrám Sv. Víta v Praze
  4. 4. “Applications architecture is thescience and art of ensuring the suiteof applications being used by anorganization to create the compositearchitecture is scalable, reliable,available and manageable”http://en.wikipedia.org/wiki/Applications_architectureSunday 26 May 13Věda a umění stejně jako v případě architektonických skvostů ve stavitelství
  5. 5. Architektura a její základnícharakteristikaSunday 26 May 13zájmy = uživatelé, vlastníci, operationsco a jak= integrita, vize je oddělená od vlastní implementace => umožňuje další evoluci
  6. 6. Respektujezájmy všechArchitektura a její základnícharakteristikaSunday 26 May 13zájmy = uživatelé, vlastníci, operationsco a jak= integrita, vize je oddělená od vlastní implementace => umožňuje další evoluci
  7. 7. Respektujezájmy všechOdděleníodpovědnostíArchitektura a její základnícharakteristikaSunday 26 May 13zájmy = uživatelé, vlastníci, operationsco a jak= integrita, vize je oddělená od vlastní implementace => umožňuje další evoluci
  8. 8. Respektujezájmy všechOdděleníodpovědnostíOddělujeCo a JakArchitektura a její základnícharakteristikaSunday 26 May 13zájmy = uživatelé, vlastníci, operationsco a jak= integrita, vize je oddělená od vlastní implementace => umožňuje další evoluci
  9. 9. Respektujezájmy všechOdděleníodpovědnostíŘízená kvalitouOddělujeCo a JakArchitektura a její základnícharakteristikaSunday 26 May 13zájmy = uživatelé, vlastníci, operationsco a jak= integrita, vize je oddělená od vlastní implementace => umožňuje další evoluci
  10. 10. “Nefunkční” požadavkySunday 26 May 13
  11. 11. KvalitaSunday 26 May 13Zaměření na atributy nesouvisející přímo s funkčními požadavky
  12. 12. škálovatelnost špatná výkonnostKvalitaSunday 26 May 13Zaměření na atributy nesouvisející přímo s funkčními požadavky
  13. 13. rozšiřitelnosttechnologický dluhoverengineeringškálovatelnost špatná výkonnostKvalitaSunday 26 May 13Zaměření na atributy nesouvisející přímo s funkčními požadavky
  14. 14. rozšiřitelnosttechnologický dluhoverengineeringoperovatelnost drahý provozškálovatelnost špatná výkonnostKvalitaSunday 26 May 13Zaměření na atributy nesouvisející přímo s funkčními požadavky
  15. 15. rozšiřitelnosttechnologický dluhoverengineeringoperovatelnost drahý provozškálovatelnost špatná výkonnostKvalitabezpečnost zranitelnostSunday 26 May 13Zaměření na atributy nesouvisející přímo s funkčními požadavky
  16. 16. rozšiřitelnosttechnologický dluhoverengineeringoperovatelnost drahý provozškálovatelnost špatná výkonnostKvalitabezpečnost zranitelnosttestovatelnost nepředvidatelnostSunday 26 May 13Zaměření na atributy nesouvisející přímo s funkčními požadavky
  17. 17. Oddělení odpovědnostíSunday 26 May 13
  18. 18. Motivace• Modulárnost• Kompozice low-level částí dovětších celků• Snížení komplexity• Jednodušší správa• Refactoring• RozšířitelnostSunday 26 May 13
  19. 19. Dva zásadní vzory• Oddělení strukturydat od jejichprezentace• Rozdělení aplikacena vrstvy s různouodpovědností• TřívrstváarchitekturaSunday 26 May 13
  20. 20. Vzory (Patterns)Sunday 26 May 13
  21. 21. Sunday 26 May 13Návrhové vzory- mnoho problémů a jejich řešení lze generalizovat- různá úroveň abstrakce (objekty, komponenty, systémy)
  22. 22. GoF Design patterns• Vzory řešící vznikobjektů• Vzory řešícístrukturu objektů• Vzory řešícíchování objektůSunday 26 May 13Řeší problémy na úrovni návrhu objektů a jejich interakce- Factory a Factory method, Builder, Lazy initialization, Object pool, Singleton- Bridge, Composite, Decorator, Facade, Proxy- Template method, Strategz, Null object, Iterator, Command
  23. 23. • Cvičení• Vyjmenujte alespoň 4 GoF návrhové vzory, kterépoužívá vaše aplikace případně knihovny, kterépoužíváteSunday 26 May 13
  24. 24. J2EE patterns• Vzory řešící prezentačnívrstvu• Vzory pro aplikačnílogiku• Vzory integrační vrstvySunday 26 May 13Vznikly na základě složitosti Java EE- Composite view, View helper, Front controller, Application controller- Service facade, Transfer object, Business object, Service locator- Data Access Object, Web service broker
  25. 25. Architektonické vzory• Martin Fowler a kol.• Rozdělení vzorů podlevrstev• De facto standard propopis částí aplikace• Vliv• Webové a ORMframeworkySunday 26 May 13Vzory ovlivňovaly celou řadu oblastíORM - active record, lazy load, identity map, mapování dědičnostiWebové frameworky - front controller, application controller, MVC
  26. 26. Datová vrstva aplikaceData Source Architectural PatternsObject-Releation vrstvaObject-RelationalBehavioral PatternsObject-RelationalStructural PatternsObject-RelationalMetadata MappingPrezentační vrstva aplikaceAplikační vrstva aplikaceDistribution patternsWeb presentation patternsOffline concrrency patternsSession state patternsDomain logic patterns Base patternsSunday 26 May 13
  27. 27. Datová vrstvaSunday 26 May 13Mnoho těchto vzorů znáte z tradičních frameworků.
  28. 28. Query object• Objekt zapouzdřujícídatabázový dotaz• Interpretr z GoF• Umožňuje různý způsobpřekladu v závislosti napersistentním úložištiSunday 26 May 13
  29. 29. Lazy load• Objekt, kterýneobsahuje všechnydata, ale ví jak jenahrát• VýkonostSunday 26 May 13
  30. 30. Identity map• Zajišťuje nahráníobjektu pouzejednou v rámcibusiness transkace• VýkonnostSunday 26 May 13
  31. 31. Unit of Work• Udržuje seznam všech objektůnačtených a modifikovanýchv rámci business transakce• Zajišťuje správné pořadíDML příkazů• DELETE, INSERT, UPDATESunday 26 May 13
  32. 32. Active Record• Objekt zapouzdřuje jedenřádek v databázi• Databázová logika součástídoménového objektu• Usnadňuje práci klientůmSunday 26 May 13
  33. 33. Single table inheritance• Objektová dědičnostmapovaná do jednétabulky• Není potřeba join přesvíce tabulek• select * from PlayersSunday 26 May 13
  34. 34. Concrete table inheritance• Každá třída mávlastní tabulku• Výhodné pokud seobjekty liší• Not null sloupceSunday 26 May 13
  35. 35. Serialized LOB• Graf objektů (hierarchie)je sezializován jako celekdo (B)LOB struktury• SELECT výkonost• Přicházíme o výhodyrelační databázeSunday 26 May 13
  36. 36. Aplikační vrstvaSunday 26 May 13
  37. 37. Optimistic offline lock• Ochrana předkonkurenčnímpřepisem dat• Umožňuje víceklientům pracovat sjednou verzí dat• Kontrola zámku přizápisuSunday 26 May 13
  38. 38. Pessimistic offline lock• Ochrana předkonkurenčnímpřepisem dat• Menší propustnost• Jistota, že transakcebude dokončenaSunday 26 May 13
  39. 39. Coarse-grained lock• Zámek asociovanýse skupinou objektů• Jednoduššízamykání• Výkonnost• Není potřebanahrávat každýjednotlivýobjektSunday 26 May 13
  40. 40. Service stub• Odstranění těsné vazbyna problematické částisystému během vývoje• In-memory stub• Cíl• rychlost vývojeSunday 26 May 13
  41. 41. Gateway• Objekt (rozhraní)zapouzdřujícípřístup doexterního systému• Změna technologieSunday 26 May 13
  42. 42. Domain model• Model, kterýzapouzdřuje data a jejichvazby pro danoudoménuSunday 26 May 13
  43. 43. Service layer• Zapouzdřuje aplikačnílogiku pro vyšší vrstvyaplikace• Usnadňuje interakci• Koordinace transakcíSunday 26 May 13
  44. 44. Prezentační vrstvaSunday 26 May 13
  45. 45. Model View Controller• Oddělení odpovědností přiobsluze uživatelskéhorozhraní• Umožňuje zvolit různouprezentaci• TestovatelnostSunday 26 May 13
  46. 46. Front controller• Obsluha společnýchvlastností pro celouwebovou aplikaci• Internacionalizace• Překlad výjimek• Snižuje komplexituaplikačních controlleruSunday 26 May 13
  47. 47. Application controller• Zapouzdřujenavigaci prosložitější flow• WizardsSunday 26 May 13
  48. 48. Remote facade• Poskytuje coarse-grained interfacepro vzdálené volání• Větší efektivita• Menší početsíťových voláníSunday 26 May 13
  49. 49. Data Transfer Objects• Přepravka pro data• Minimalizuje početvzdálených voláníSunday 26 May 13
  50. 50. • Cvičení• Vyjmenujte alespoň 4 architektonické vzory, kterépoužívá vaše aplikace• Vyjmenujte 4 Architektonické vzory, které používajíknihovny ve vaší aplikaciSunday 26 May 13
  51. 51. Návrhové problémySunday 26 May 13
  52. 52. • Anémický doménový model• Leaky abstraction• Prosakující API z nižších vrstev• OverengineringSunday 26 May 13Proč zavádíme abstrakci? Zjednodušení.Komplexní abstrakce leakuje ve složitejších případech - jsme nuceni pochopit jak to fungujepod kapotou např. ORM, SQL atd.
  53. 53. Škálovatelnost a výkonostSunday 26 May 13
  54. 54. ŠkálovatelnostŠkálovatelnost je schopnost systémuzvýšit výkonnost proporčně kpřidaným zdrojům. Zvýšenívýkonnosti znamená obsluhu vícepožadavků a nebo požadavků většívelikosti.--Werner Vogels CTO - Amazon.comhttp://www.allthingsdistributed.com/2006/03/a_word_on_scalability.htmlSunday 26 May 13
  55. 55. Horizontální škálovatelnost• Scale-out• Přidání novýchvýpočetních uzlů• Cluster• Přináší sebou jinourodinu problémů vdistribuovanémprostředíSunday 26 May 13
  56. 56. Vertikální škálovatelnost• Přidání prostředkůexistujícímusystému• CPU, RAM, Disk• Hardwarové limity• CenaSunday 26 May 13
  57. 57. Load balancingSunday 26 May 13
  58. 58. Rozložení zátěže• Round robin• Sticky session (Affinity)Sunday 26 May 13
  59. 59. Dva módy• Centrální load balancer• Klientský load balancerSunday 26 May 13
  60. 60. Škálování databáze• Slave reads• Sharding• CAP theoremSunday 26 May 13
  61. 61. • Workshop návrh rezervačního systému ubytování (booking.com)• Systém má tyto základní části• Billing, User/Hotel management, Booking, Frontend• Billing je zajišťován externím systémem• Login do systému je možný i přes OpenId (Facebook)• Aplikace je webová a musí umožnit přístup z mobilních zařízení• Očekává se integrace s dalšími systémy• Navrhněte základní architekturu systému• Komponenty/Služby a jejich vrstvy• Jakým způsobem zajistíte škálovatelnost• Kde očekáváte bottleneck• Jaké technologie a proč je použijeteSunday 26 May 13

×