app design architecture

Post on 12-May-2015

225 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Architektura a její návrh

Spring framework training materials by Roman Pichlík is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

Sunday 26 May 13

Architektura

Sunday 26 May 13

Sunday 26 May 13

Sagrada Familia (Barcelona), Chrám Sv. Víta v Praze

“Applications architecture is the science and art of ensuring the suite of applications being used by an organization to create the composite architecture is scalable, reliable, available and manageable”

http://en.wikipedia.org/wiki/Applications_architecture

Sunday 26 May 13

Věda a umění stejně jako v případě architektonických skvostů ve stavitelství

Architektura a její základní charakteristika

Sunday 26 May 13

zájmy = uživatelé, vlastníci, operationsco a jak= integrita, vize je oddělená od vlastní implementace => umožňuje další evoluci

Respektuje zájmy všech

Architektura a její základní charakteristika

Sunday 26 May 13

zájmy = uživatelé, vlastníci, operationsco a jak= integrita, vize je oddělená od vlastní implementace => umožňuje další evoluci

Respektuje zájmy všech

Oddělení odpovědností

Architektura a její základní charakteristika

Sunday 26 May 13

zájmy = uživatelé, vlastníci, operationsco a jak= integrita, vize je oddělená od vlastní implementace => umožňuje další evoluci

Respektuje zájmy všech

Oddělení odpovědností

Odděluje Co a Jak

Architektura a její základní charakteristika

Sunday 26 May 13

zájmy = uživatelé, vlastníci, operationsco a jak= integrita, vize je oddělená od vlastní implementace => umožňuje další evoluci

Respektuje zájmy všech

Oddělení odpovědností

Řízená kvalitouOdděluje Co a Jak

Architektura a její základní charakteristika

Sunday 26 May 13

zájmy = uživatelé, vlastníci, operationsco a jak= integrita, vize je oddělená od vlastní implementace => umožňuje další evoluci

“Nefunkční” požadavky

Sunday 26 May 13

Kvalita

Sunday 26 May 13

Zaměření na atributy nesouvisející přímo s funkčními požadavky

škálovatelnost špatná výkonnost

Kvalita

Sunday 26 May 13

Zaměření na atributy nesouvisející přímo s funkčními požadavky

rozšiřitelnost technologický dluhoverengineering

škálovatelnost špatná výkonnost

Kvalita

Sunday 26 May 13

Zaměření na atributy nesouvisející přímo s funkčními požadavky

rozšiřitelnost technologický dluhoverengineering

operovatelnost drahý provoz

škálovatelnost špatná výkonnost

Kvalita

Sunday 26 May 13

Zaměření na atributy nesouvisející přímo s funkčními požadavky

rozšiřitelnost technologický dluhoverengineering

operovatelnost drahý provoz

škálovatelnost špatná výkonnost

Kvalita

bezpečnost zranitelnost

Sunday 26 May 13

Zaměření na atributy nesouvisející přímo s funkčními požadavky

rozšiřitelnost technologický dluhoverengineering

operovatelnost drahý provoz

škálovatelnost špatná výkonnost

Kvalita

bezpečnost zranitelnost

testovatelnost nepředvidatelnost

Sunday 26 May 13

Zaměření na atributy nesouvisející přímo s funkčními požadavky

Oddělení odpovědností

Sunday 26 May 13

Motivace• Modulárnost

• Kompozice low-level částí do větších celků

• Snížení komplexity

• Jednodušší správa

• Refactoring

• RozšířitelnostSunday 26 May 13

Dva zásadní vzory

• Oddělení struktury dat od jejich prezentace

• Rozdělení aplikace na vrstvy s různou odpovědností

• Třívrstvá architektura

Sunday 26 May 13

Vzory (Patterns)

Sunday 26 May 13

Sunday 26 May 13

Návrhové vzory- mnoho problémů a jejich řešení lze generalizovat- různá úroveň abstrakce (objekty, komponenty, systémy)

GoF Design patterns

• Vzory řešící vznik objektů

• 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

• Cvičení

• Vyjmenujte alespoň 4 GoF návrhové vzory, které používá vaše aplikace případně knihovny, které používáte

Sunday 26 May 13

J2EE patterns• Vzory řešící prezentační

vrstvu

• Vzory pro aplikační logiku

• Vzory integrační vrstvy

Sunday 26 May 13

Vznikly 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

Architektonické vzory• Martin Fowler a kol.

• Rozdělení vzorů podle vrstev

• De facto standard pro popis částí aplikace

• Vliv

• Webové a ORM frameworky

Sunday 26 May 13

Vzory ovlivňovaly celou řadu oblastíORM - active record, lazy load, identity map, mapování dědičnostiWebové frameworky - front controller, application controller, MVC

Datová vrstva aplikace

Data Source Architectural Patterns

Object-Releation vrstvaObject-Relational

Behavioral PatternsObject-Relational Structural Patterns

Object-Relational Metadata Mapping

Prezentační vrstva aplikace

Aplikační vrstva aplikace

Distribution patterns

Web presentation patterns

Offline concrrency patterns

Session state patterns

Domain logic patterns Base patterns

Sunday 26 May 13

Datová vrstva

Sunday 26 May 13

Mnoho 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ůsob překladu v závislosti na persistentním úložišti

Sunday 26 May 13

Lazy load

• Objekt, který neobsahuje všechny data, ale ví jak je nahrát

• Výkonost

Sunday 26 May 13

Identity map

• Zajišťuje nahrání objektu pouze jednou v rámci business transkace

• Výkonnost

Sunday 26 May 13

Unit of Work

• Udržuje seznam všech objektů načtených a modifikovaných v rámci business transakce

• Zajišťuje správné pořadí DML příkazů

• DELETE, INSERT, UPDATE

Sunday 26 May 13

Active Record

• Objekt zapouzdřuje jeden řádek v databázi

• Databázová logika součástí doménového objektu

• Usnadňuje práci klientům

Sunday 26 May 13

Single table inheritance

• Objektová dědičnost mapovaná do jedné tabulky

• Není potřeba join přes více tabulek

• select * from Players

Sunday 26 May 13

Concrete table inheritance

• Každá třída má vlastní tabulku

• Výhodné pokud se objekty liší

• Not null sloupce

Sunday 26 May 13

Serialized LOB• Graf objektů (hierarchie)

je sezializován jako celek do (B)LOB struktury

• SELECT výkonost

• Přicházíme o výhody relační databáze

Sunday 26 May 13

Aplikační vrstva

Sunday 26 May 13

Optimistic offline lock

• Ochrana před konkurenčním přepisem dat

• Umožňuje více klientům pracovat s jednou verzí dat

• Kontrola zámku při zápisu

Sunday 26 May 13

Pessimistic offline lock

• Ochrana před konkurenčním přepisem dat

• Menší propustnost

• Jistota, že transakce bude dokončena

Sunday 26 May 13

Coarse-grained lock • Zámek asociovaný

se skupinou objektů

• Jednodušší zamykání

• Výkonnost

• Není potřeba nahrávat každý jednotlivý objekt

Sunday 26 May 13

Service stub

• Odstranění těsné vazby na problematické části systému během vývoje

• In-memory stub

• Cíl

• rychlost vývoje

Sunday 26 May 13

Gateway

• Objekt (rozhraní) zapouzdřující přístup do externího systému

• Změna technologie

Sunday 26 May 13

Domain model

• Model, který zapouzdřuje data a jejich vazby pro danou doménu

Sunday 26 May 13

Service layer

• Zapouzdřuje aplikační logiku pro vyšší vrstvy aplikace

• Usnadňuje interakci

• Koordinace transakcí

Sunday 26 May 13

Prezentační vrstva

Sunday 26 May 13

Model View Controller• Oddělení odpovědností při

obsluze uživatelského rozhraní

• Umožňuje zvolit různou prezentaci

• Testovatelnost

Sunday 26 May 13

Front controller

• Obsluha společných vlastností pro celou webovou aplikaci

• Internacionalizace

• Překlad výjimek

• Snižuje komplexitu aplikačních controlleru

Sunday 26 May 13

Application controller• Zapouzdřuje

navigaci pro složitější flow

• Wizards

Sunday 26 May 13

Remote facade

• Poskytuje coarse-grained interface pro vzdálené volání

• Větší efektivita

• Menší počet síťových volání

Sunday 26 May 13

Data Transfer Objects

• Přepravka pro data

• Minimalizuje počet vzdá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, které používají knihovny ve vaší aplikaci

Sunday 26 May 13

Návrhové problémy

Sunday 26 May 13

• Anémický doménový model

• Leaky abstraction

• Prosakující API z nižších vrstev

• Overenginering

Sunday 26 May 13

Proč zavádíme abstrakci? Zjednodušení.Komplexní abstrakce leakuje ve složitejších případech - jsme nuceni pochopit jak to funguje pod kapotou např. ORM, SQL atd.

Škálovatelnost a výkonost

Sunday 26 May 13

Škálovatelnost

Škálovatelnost je schopnost systému zvýšit výkonnost proporčně k přidaným zdrojům. Zvýšení výkonnosti znamená obsluhu více požadavků a nebo požadavků větší velikosti.

--Werner Vogels CTO - Amazon.com

http://www.allthingsdistributed.com/2006/03/a_word_on_scalability.html

Sunday 26 May 13

Horizontální škálovatelnost• Scale-out

• Přidání nových výpočetních uzlů

• Cluster

• Přináší sebou jinou rodinu problémů v distribuovaném prostředí

Sunday 26 May 13

Vertikální škálovatelnost

• Přidání prostředků existujícímu systému

• CPU, RAM, Disk

• Hardwarové limity

• Cena

Sunday 26 May 13

Load balancing

Sunday 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 balancer

Sunday 26 May 13

Škálování databáze

• Slave reads

• Sharding

• CAP theorem

Sunday 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 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žijete

Sunday 26 May 13

top related