}w !"#$%&'()+,-./012345
M ASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
E-commerce v cloudu ˇ B AKALÁ RSKÁ PRÁCE
Andrej Kuroˇcenko
Brno, jaro 2012
Prohlášení Prohlašuji, že tato bakaláˇrská práce je mým puvodním ˚ autorským dílem, které jsem vypracoval samostatnˇe. Všechny zdroje, prameny a literaturu, které jsem pˇri vypracování používal nebo z nich cˇ erpal, v práci rˇ ádnˇe cituji s uvedením úplného odkazu na pˇríslušný zdroj.
Andrej Kuroˇcenko
Vedoucí práce: RNDr. Jan Pavloviˇc, Ph.D. ii
Podˇekování Tímto dˇekují RNDr. Janu Pavloviˇcovi, Ph.D. za vedení práce a poskytnuté rady.
iii
Shrnutí Cloud computing je v dnešní dobˇe trendem. Na trhu existuje hodnˇe rˇ ešení, každé pˇritom nabízí odlišné služby za ruzné ˚ ceny. Cílem bakaláˇrské práce je prozkoumat nejznámˇejší cloudové rˇ ešení se zamˇerˇ ením na distribuˇcní model typu PaaS. Dále se zamˇerˇ it na urˇcitou platformu – CloudFoundry. Souˇcásti práce je pro tuto platformu vyvinuta e-commerce aplikace v Javˇe pomocí programovacího rámce Spring. Ta slouží k otestování stability a škálovatelnosti cloudu. Také k analýze rozdílu˚ pˇri programování aplikace pro spouštˇení na bˇežných serverech oproti spuštˇení aplikace v cloudovém prostˇredí.
iv
Klíˇcová slova E-commerce, cloud, PaaS, IaaS, SaaS, Java, Spring, CloudFoundry, Spring Insight, Apache JMeter.
v
Obsah 1 2
3
4
Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obecné informace o cloudu . . . . . . . . . . . . . . . . 2.1 Výhody cloudu . . . . . . . . . . . . . . . . . . . . 2.1.1 Virtualizace . . . . . . . . . . . . . . . . . . 2.1.2 Škálovatelnost . . . . . . . . . . . . . . . . . 2.1.3 Spolehlivost . . . . . . . . . . . . . . . . . . 2.1.4 Všeobecnost . . . . . . . . . . . . . . . . . . 2.1.5 Rozšiˇritelnost . . . . . . . . . . . . . . . . . 2.1.6 Pˇríznivá cena . . . . . . . . . . . . . . . . . 2.2 Nevýhody cloudu . . . . . . . . . . . . . . . . . . . 2.2.1 Umístˇení dat . . . . . . . . . . . . . . . . . . 2.2.2 Výpadek datacenter . . . . . . . . . . . . . 2.2.3 Multitenancy . . . . . . . . . . . . . . . . . 2.2.4 Umístˇení fyzických serveru˚ . . . . . . . . . 2.3 Distribuˇcní modely . . . . . . . . . . . . . . . . . . 2.3.1 Infrastructure as a service . . . . . . . . . . 2.3.2 Platform as a service . . . . . . . . . . . . . 2.3.3 Software as a service . . . . . . . . . . . . . 2.3.4 Database as a Service . . . . . . . . . . . . . 2.4 Modely nasazení . . . . . . . . . . . . . . . . . . . 2.4.1 Veˇrejné . . . . . . . . . . . . . . . . . . . . . 2.4.2 Soukromé . . . . . . . . . . . . . . . . . . . 2.4.3 Komunitní . . . . . . . . . . . . . . . . . . . 2.4.4 Hybridní . . . . . . . . . . . . . . . . . . . . Vývoj aplikace pro cloud . . . . . . . . . . . . . . . . . 3.1 Výbˇer vhodného cloudu . . . . . . . . . . . . . . . 3.2 Umístˇení dat a zálohování . . . . . . . . . . . . . . 3.3 Pˇrístup k lokálnímu souborovému systému . . . . 3.4 Možnosti škálování . . . . . . . . . . . . . . . . . . 3.5 Testování . . . . . . . . . . . . . . . . . . . . . . . . 3.6 Pˇrenositelnost aplikace . . . . . . . . . . . . . . . . Ukázková e-commerce aplikace . . . . . . . . . . . . . 4.1 Specifikace platformy CloudFoundry . . . . . . . . 4.2 Uživatelské požadavky na funkcionalitu aplikace 4.3 Návrh aplikace . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 5 5 5 5 5 6 6 6 6 6 7 7 7 8 8 8 9 9 10 10 10 10 10 11 11 12 12 13 13 14 15 15 16 16 1
4.4 4.5
Použité technologie . . . . . . . . Nasazení aplikace . . . . . . . . . 4.5.1 Konzolový program vmc 4.5.2 Modul v Eclipse . . . . . . 4.6 Testování aplikace . . . . . . . . . 4.6.1 Metodika testování . . . . 4.6.2 Apache JMeter . . . . . . 4.6.3 Spring Insight . . . . . . . 4.7 Zhodnocení . . . . . . . . . . . . 5 Závˇer . . . . . . . . . . . . . . . . . . . A Obsah pˇriloženého CD . . . . . . . . B Grafy zátˇežového testu . . . . . . . . C Obrázky z programu Spring Insight .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
19 19 20 20 21 21 23 24 24 25 28 29 32
2
1 Úvod E-commerce (electronic commerce) je výraz oznaˇcující zpusob ˚ obchodování za použití moderních elektronických komunikaˇcních prostˇredku˚ – Internetu a webu. U elektronických obchodu˚ i webových stránek celkovˇe se mužou ˚ v delším cˇ asovém prubˇ ˚ ehu, ale i nárazovˇe, výraznˇe mˇenit nároky na zdroje (hardware, software a pˇripojení k internetu). První jmenovaná zmˇena je zpusobena ˚ stoupající oblíbeností portálu, ˚ a tím pádem i nárustem ˚ návštˇevníku˚ produkujících zátˇež systému. Kdežto krátkodobé výkyvy mohou nastávat v závislostí na denní dobˇe cˇ i ojedinˇelých událostech napˇr. pˇred svátky. Provozovatelé webu˚ musí být na podobné situace pˇripravení, a proto cˇ asto zbyteˇcnˇe platí za výkonné servery, jejichž strojový cˇ as vˇetšinou nevyužijí. Z tohoto hlediska je lepší mít nˇejaký systém, který pˇri vˇetší zátˇeži alokuje více zdroju˚ a pˇri nižší naopak jejich poˇcet ˇ sníží. Címž dojde k šetˇrení penˇez. Takovému chování odpovídá model zvaný „cloud computing“[1] (dále jen cloud). Což je virtuální prostˇredí složené z mnoha serveru˚ tvoˇrících celek, jehož výpoˇcetní výkon muže ˚ být pˇridˇelován aplikacím koncových uživatelu˚ podle aktuální potˇreby. Tato technologie není novinkou, existuje již od 70. let 20. století a používaly ji spoleˇcnosti pro uschovávaní a zpracování velkých objemu˚ dat, renderování videí, vˇedecké výpoˇcty. V poslední dobˇe ovšem zaˇcíná být dostupná témˇerˇ pro kohokoliv a do cloudu jsou nasazovány i menší webové aplikace. To s sebou nese nˇekolik hlavních výhod: vysoká škálovatelnost a stabilita, placení pouze za využité zdroje, podpora vˇetšiny rozšíˇrených programovacích jazyku, ˚ pˇrístup odkudkoliv pomocí internetového pˇripojení. Také se provozovatel webové aplikace nemusí starat o hardware a muže ˚ se tak soustˇredit na provoz a vývoj aplikace samotné. Cílem je zjistit specifické nároky, obecné výhody a nevýhody softwarových aplikací se zamˇerˇ ením na e-commerce pro bˇeh v prostˇredí cloudu. Nejdˇríve je nutno zmapovat a porovnat dostupné cloudové platformy, zjistit jaké technologie a distribuˇcní modely[2] podporují. Dalším požadavkem je vyvinout jednoduchý webový obchod na plat-
3
1. Ú VOD formˇe CloudFoundry1 vyvíjené divizi firmy VMWare za použití následujících nástroju: ˚ rámce Spring2 a programovacího jazyku Java. Pˇri vývoji aplikace je nutno zamˇerˇ it se na škálovatelnost, bezpeˇcnost a specifické požadavky na vývoj aplikace oproti vývoji aplikace pro bˇežný server (a s tím související omezení pro provoz). Tato práce se zabývá pouze platformami podporujícími distribuˇcní modely typu PaaS2.3.2 (platform as a service).
1. 2.
http://www.cloudfoundry.com http://www.springsource.org
4
2 Obecné informace o cloudu Pojem cloud computing[1] lze popsat jako sít’ navzájem propojených poˇcítaˇcu˚ tvoˇrících virtuální celek. Uživatelé pˇristupují k tomuto prostˇredí pomocí Internetu. Cloud má následující charakteristiky a cˇ lenˇení dle distribuˇcních modelu˚ 2.3 a modelu˚ nasazení 2.4.
2.1
Výhody cloudu
2.1.1 Virtualizace Uživateli je poskytována virtuální cˇ ást cloudového prostˇredí, která se jeví jako samostatný celek. Poskytované zdroje se mohou za bˇehu mˇenit v závislosti na zatížení cˇ i potˇrebˇe aplikace. Prostˇredí je dostupné odkudkoliv pomoci internetového pˇripojení. 2.1.2 Škálovatelnost Aplikace bˇežící v cloudu jsou vysoce škálovatelné. Pˇri vˇetším zatížení je aplikaci pˇridˇeleno více potˇrebných zdroju˚ (procesorový cˇ as, operaˇcní pamˇet’) nebo muže ˚ být spuštˇeno více instancí dané aplikace. Jsou li tyto zdroje zpoplatnˇeny, pak uživatel platí pouze za ty, které využije. Jejích poˇcet lze navíc shora omezit, aby v pˇrípadˇe velkého zatížení, které muže ˚ vyvolat napˇríklad DoS[3] útok, nemˇel uživatel pˇríliš velké finanˇcní ztráty. 2.1.3 Spolehlivost Cloudové prostˇredí zajišt’uje replikaci a pravidelnou kontrolu integrity dat, cˇ ímž je zajištˇena dostupnost. Umístˇení fyzických serveru˚ na ruzná ˚ dostateˇcnˇe vzdálená zemˇepisná místa zajistí ochranu proti pˇrírodním katastrofám cˇ i fyzickým útokum. ˚ Cloudové prostˇredí využívá velice drahých hardwarových prostˇredku, ˚ jako jsou load baˇ lancery[4] a firewally. O servery se starají odbornicí. Casto, zejména u placených cloudu, ˚ je zajištˇena celodenní podpora. Díky virtualizaci nezpusobí ˚ selhání jednoho serveru cˇ i diskového pole v cloudu 5
2. O BECNÉ INFORMACE O CLOUDU žádný výpadek. Práci pˇrevezme jiná cˇ ást, nefungující hardware tak muže ˚ být za bˇehu vymˇenˇen. 2.1.4 Všeobecnost Díky virtuálnímu prostˇredí, lze do cloudu nasadit ruzné ˚ aplikace, cˇ i dokonce více ruzných ˚ operaˇcních systému˚ podle preferencí uživatelu˚ a v závislosti na distribuˇcním modelu cloudu 2.3. Vytvoˇrení nového prostˇredí s urˇcitým operaˇcním systémem je otázkou nˇekolika minut. 2.1.5 Rozšiˇritelnost Do cloudového prostˇredí lze za bˇehu pˇridávat cˇ i odebírat fyzické stroje bez vˇetších potíží a bez ovlivnˇení funkcionality spuštˇených aplikací cˇ i ztráty dat. Zajišt’uje to replikace dat mezi jednotlivými virtuálními stroji. 2.1.6 Pˇríznivá cena Díky škálovatelnosti platí uživatel pouze za využité zdroje, podobnˇe jak tomu je v pˇrípadˇe vody a elektˇriny. Cloud je tak vhodný pro zacˇ ínající projekty a firmy. Pro velké projekty typu Facebook1 už toto rˇ ešení je nevýhodné a poˇrízení vlastní výpoˇcetní infrastruktury se tak jeví jako jednodušší a levnˇejší možnost. Nˇekteré cloudy navíc nabízí bezplatný provoz pro menší aplikace. Takové prostˇredí je zpravidla omezeno poˇctem spuštˇených instancí aplikací a dostupným místem na disku a operaˇcní pamˇeti. Pokud aplikace bude postupem cˇ asu vyžadovat více zdroju, ˚ lze jednoduše pˇrejít na placenou verzi.
2.2
Nevýhody cloudu
2.2.1 Umístˇení dat Data jsou uloženy na serverech poskytovatele a nemáme nad nimi takovou kontrolu, jak kdyby byly uloženy na vlastním stroji. Je vhodné 1.
http://www.facebook.com
6
2. O BECNÉ INFORMACE O CLOUDU vybírat poskytovatele i podle duvˇ ˚ eryhodnosti a zkušenosti ostatních uživatelu˚ s poskytovanou službou. 2.2.2 Výpadek datacenter Nˇekteˇrí poskytovatelé cloudu˚ s distribuˇcním modelem typu PaaS 2.3.2 nebo SaaS 2.3.3 používají pronajaté infrastruktury, napˇríklad Amazon EC22 . Není zaruˇceno, a v minulosti se již stalo, že celé datacentrum nebylo dostupné na urˇcitý cˇ as, což znepˇrístupnilo i služby jiných poskytovatelu. ˚ Je vhodné mít záložní instanci aplikace kvuli ˚ takovýmto pˇrípadum. ˚ 2.2.3 Multitenancy Pojem multitenancy znamená, že zdroje cloudového prostˇredí jsou sdíleny mezi více uživatelu. ˚ Aneb více uživatelu˚ muže ˚ pˇristupovat ke stejné službˇe. Vˇetšina cloudových rˇ ešení má tuto vlastnost, což má nˇekteré negativní dopady. Je složité zajistit uložení urˇcitých dat pouze na serverech vyskytujících se na urˇcitém území. To muže ˚ být u nˇekterých aplikací vyžadováno zákony nebo požadavkem uživatele. Dalším negativním dopadem muže ˚ být kompromitace bezpeˇcnosti aplikace, napˇríklad pokud se útoˇcníkovi podaˇrí prolomit bezpeˇcnost sdílené databáze, muže ˚ získat data všech uživatelu, ˚ kteˇrí používají danou databázi. Tuto vlastnost lze považovat i jako výhodu, protože poskytována služba bývá levnˇejší a lépe škálovatelná. 2.2.4 Umístˇení fyzických serveru˚ Fyzické servery cloudu se mohou nacházet daleko od cílové skupiny uživatelu˚ aplikace, která bˇeží v cloudu. Odezva serveru˚ tedy bude vˇetší, oproti serverum ˚ vyskytujícím se v blízkosti uživatelu. ˚
2.
http://aws.amazon.com/ec2/
7
2. O BECNÉ INFORMACE O CLOUDU
2.3
Distribuˇcní modely
Distribuˇcní modely pˇredstavují typy poskytované služby koncovému uživateli. Ty lze rozdˇelit do cˇ tyˇr kategorií: 1.
Infrastructure as a Service (IaaS),
2.
Platform as a Service (PaaS),
3.
Software as a Service (SaaS),
4.
Database as a Service (DbaaS).
2.3.1 Infrastructure as a service Základní distribuˇcní model, na kterém jsou postaveny ostatní. Uživateli je nabízeno vˇetšinou virtualizované prostˇredí, které využívá vˇetší množství hardware (servery, firewally, load balancery. . . ). Toto prostˇredí je odolné vuˇ ˚ ci výpadkum ˚ jednotlivých cˇ ástí hardware, zárovenˇ uživateli poskytuje flexibilitu a škálovatelnost. O výbˇer operaˇcního systému, softwarových balíˇcku˚ a jejích aktualizaci se stará sám uživatel. Výhodou tohoto modelu je možnost okamžitého zprovoznˇeni velké výpoˇcetní infrastruktury, menší poˇrizovací náklady, uživatel platí pouze za právˇe využitý poˇcet stroju. ˚ Odpadá také starost o veškerý hardware, o ten se stará poskytovatel. Tento distribuˇcní model je vhodný pro uživatele, kteˇrí mají vlastní platformu a chtˇejí ji nabídnout veˇrejnosti. 2.3.2 Platform as a service Tento model je založen na pˇredchozím, kdy do fungující infrastruktury pˇridává platformu. Ta uživateli poskytuje škálovatelné prostˇredí s pˇredinstalovaným operaˇcním systémem, nakonfigurovanými softwarovými baliˇcky pro provoz vlastních aplikací, databázi a web server. Uživatel poté muže ˚ do jisté míry konfigurovat takovéto prostˇredí, nˇekdy dokonce rozhodovat o nainstalovaných balíˇccích cˇ i podporovaných programovacích jazycích. Aplikaci bˇežící v takovém prostˇredí jsou dle potˇreb poskytovány zdroje jako výpoˇcetní cˇ as nebo úložný prostor pro data. Což je zárovenˇ i zúˇctovací jednotkou. Výhodami modelu PaaS je rychlé nasazení aplikace bez nutnosti kupování 8
2. O BECNÉ INFORMACE O CLOUDU serveru˚ a správy prostˇredí, automatické pˇridˇelování zdroju˚ (procesorový cˇ as, datové úložištˇe), cˇ i vytváˇrení nových instancí aplikace dle potˇreby a aktuálního zatížení. Tím je zajištˇena vysoká škálovatelnost a dostupnost. V nˇekterých pˇrípadech, není problém ani zmˇena poskytovatele. Jedná se o zmˇenu nastavení aplikace požadovaného daným prostˇredím, napˇr. databázové pˇrípojení. Existují i open source PaaS modely. Vývojáˇrum ˚ je tak umožnˇeno pˇrispívání k vývoji nebo dokonce zprovoznˇení vlastní platformy. Moje práce je zamˇerˇ ena na tento distribuˇcní model. Zejména pak na implementaci CloudFoundry. 2.3.3 Software as a service Nejvíce abstraktní model využívající oba pˇredchozí. Koncovému uživateli je poskytnuta pouze služba, která bˇeží transparentnˇe, vzdálenˇe v cloudu. Odpadají tak starosti s infrastrukturou cˇ i platformou. Uživatel s takovouto službou muže ˚ komunikovat bud’ pomocí aplikace nainstalované na vlastním poˇcítaˇci nebo pˇres webový prohlížeˇc. Výhodou tohoto modelu je rychle nasazení aplikace, jednoduchá údržba a distribuce nových verzí. Uživatel platí pouze za to, co opravdu využije (v pˇrípadˇe, že je aplikace zpoplatnˇena). Protože aplikace bˇeží v cloudu, je škálovatelná a má vysokou dostupnost. Aplikací využívajících SaaS modelu je hodnˇe. Uvádím proto jen ty nejznámˇejší, jako Dropbox3 , Google Docs4 , Twitter5 . 2.3.4 Database as a Service Je model, který poskytuje databází jako vysoce škálovatelnou službu. Výhodou tohoto rˇ ešení je opˇet vysoká škálovatelnost a dynamiˇcnost aplikace a profesionální podpora. Nevýhodou muže ˚ být fyzické umístˇení datacentra, na kterém je služba provozována. Aplikace s databází komunikuje cˇ asto a požadována data musí být dostupná v co nejkratší dobˇe. Komunikace aplikace s hodnˇe vzdálenou databází muže ˚ být relativnˇe pomalá. Proto je vhodné použít službu, která je 3. 4. 5.
http://www.dropbox.com http://docs.google.com http://www.twitter.com
9
2. O BECNÉ INFORMACE O CLOUDU provozována na stejné lokální síti jako cloud, ve kterém je spuštˇena vlastní aplikace.
2.4
Modely nasazení
Modely nasazení oproti distribuˇcním modelum ˚ specifikují, pro koho je cludové prostˇredí urˇceno. Lze je rozdˇelit do následujících kategorií: 1.
public (veˇrejné),
2.
private (soukromé),
3.
community (komunitní),
4.
hybrid (hybridní).
2.4.1 Veˇrejné Cloudové prostˇredí je urˇceno široké veˇrejnosti a je pˇrístupné pˇres internet. Typ poskytované služby bývá pro vˇetšinu uživatelu˚ podobný. 2.4.2 Soukromé Prostˇredí urˇceno pro jedinou organizaci, která jej spravuje bud’ sama nebo jeho správu outsourcuje. 2.4.3 Komunitní Cloudové prostˇredí je sdíleno mezi více organizacemi. Používá jej urˇcitá komunita lidí se sdílenými zájmy. 2.4.4 Hybridní Vznikne provázáním pˇredešlých modelu˚ do jednoho celku. Muže ˚ se tak využit jejích výhod.
10
3 Vývoj aplikace pro cloud Tato kapitola popisuje další vlastnosti cloudu˚ s distribuˇcním modelem typu PaaS 2.3.2 a požadavky na aplikaci, ke kterým je tˇreba pˇrihlídnout ve vývojové fázi. Pˇred nasazením aplikace do cloudu je tˇreba zvážit výhody a nevýhody takového rˇ ešení, také najít nejvhodnˇejší platformu.
3.1
Výbˇer vhodného cloudu
Pˇri výbˇeru vhodného cloudového prostˇredí je potˇreba brát v úvahu podporované technologie a programovací jazyky, preferovaný zpu˚ sob nahrávaní aplikace. Každé prostˇredí nabízí možnost uživatelské konfigurace. Muže ˚ se jednat o velikost pˇridˇelené operaˇcní pamˇeti, poˇcet spuštˇených instancí aplikace, pˇripojení ke službám pomocí JNDI1 atd. Nˇekteré cloudy se mohou chovat restriktivnˇe. Napˇríklad Google App Engine2 nepovoluje použití nˇekterých souˇcástí standardní Javy 3.3. U vˇetšiny cloudu˚ není potˇreba aplikaci nijak pˇrizpusobovat ˚ danému prostˇredí. Staˇcí pouze pˇri vývoji aplikace dodržovat programovací konvence (zamezení kongruentních pˇrístupu˚ 3 v kritických sekcích4 , ošetˇrení transakci pˇri pˇrístupu k databázi. . . ), pak staˇcí pˇridat kód specifický pro dané prostˇredí a aplikace je pˇripravená ke spuštˇení. Specifickým kódem je napˇríklad nastavení pˇripojení k databází cˇ i frontˇe nebo použití systémových nástroju˚ jako cron5 . Dalším faktorem jsou nabízené zdroje – velikost místa na disku a operaˇcní pamˇeti, maximální poˇcet najednou spuštˇených instancí jedné aplikace. Nejduležitˇ ˚ ejším faktorem je ale cena za provoz aplikace a spolehlivost. Tu lze ovˇerˇ it referencemi ostatních uživatelu. ˚ 1. http://www.oracle.com/technetwork/java/jndi/index.html 2. https://developers.google.com/appengine/ 3. http://docs.oracle.com/javase/tutorial/essential/ concurrency/ 4. http://black.goucher.edu/~kelliher/cs42/sep27.html 5. http://en.wikipedia.org/wiki/Cron
11
3. V ÝVOJ APLIKACE PRO CLOUD
3.2
Umístˇení dat a zálohování
Data aplikace lze rozdˇelit na dvˇe cˇ ásti: 1.
vlastní data aplikace – zdrojový kód, statické soubory (obrázky, styly. . . ),
2.
obsah – data uložená v databázi.
Umístˇení prvnˇe zminovaných ˇ dat za bˇehu aplikace není dopˇredu známo, protože se spouštˇejí v cloudovém prostˇredí a muže ˚ se v cˇ ase mˇenit cˇ i vyskytovat na více fyzických serverech. Zálohování tˇechto dat je však jednoduché a stejné jako u aplikací, které nebˇeží v cloudu. Muže ˚ se použít libovolný nástroj pro správu verzí, napˇríklad GitHub6 . Nˇekteré PaaS 2.3.2 cloudy dokonce podporují deploy (nahrávaní a spuštˇení aplikace na serveru) aplikace tím, že se nahraje do verzovacího nástroje, který je umístˇený v cloudu. Z nˇej se aplikace pˇreloží a spustí. Toto chování podporuje napˇríklad OpenShift7 . Fyzické umístˇení dat v databázi není rovnˇež známo. Provozovatelé však nabízí i pˇrímé pˇripojení k databázi pomoci konzole nebo grafického programu. Lze tak vytváˇret zálohy celé databáze ruˇcnˇe nebo naplánovat automatické zálohy zvenˇcí cloudového prostˇredí.
3.3
Pˇrístup k lokálnímu souborovému systému
Aplikace v cloudu muže ˚ bˇežet na více fyzických strojích, v pˇrípadˇe Java aplikace to znamená i na více JVM (Java Virtual Machine [5]). Aˇckoliv vˇetšina platforem povoluje pˇrímý pˇrístup k lokálnímu souborovému systému, provedené zmˇeny jsou viditelné pouze pro jedinou JVM a nejsou perzistentní po celou dobu životního cyklu aplikace. Data jsou tak po restartu aplikace ztracena. Jiné platformy operace zápisu ani nepovolují. Napˇríklad Google App Engine8 povoluje použití jen nˇekterých9 tˇríd standardní Javy. To lze obejít použitím 6. http://github.com 7. http://openshift.redhat.com 8. https://developers.google.com/appengine/ 9. https://developers.google.com/appengine/docs/java/ jrewhitelist
12
3. V ÝVOJ APLIKACE PRO CLOUD ˇ virtuálního souborového systému10 . Rešení tohoto problému je závislé na platformˇe. CloudFoundry tuto záležitost v souˇcasné dobˇe nerˇ eší. Do budoucna se plánuje pˇridání služby sdílené mezi instancemi aplikací i aplikacemi samotnými. Lze však vytvoˇrit vlastní službu [6] za úˇcelem perzistentního ukládání souboru. ˚
3.4
Možnosti škálování
Mˇenit výkon aplikace lze dvˇema zpusoby. ˚ První je manuálnˇe pˇridávat cˇ i odebírat zdroje aplikace (poˇcet spuštˇených instancí aplikace, pˇridˇelená operaˇcní pamˇet’, poˇcet procesorových jader. . . ). To s sebou nese velkou nevýhodu. Vˇetšinou nelze s jistotou pˇredpokládat, kdy bude potˇreba zvýšeného výkonu aplikace a na jak dlouhou dobu. Nezbývá tedy než hlídat zátˇež aplikace a ruˇcnˇe pˇridˇelovat zdroje, což je velmi neefektivní. Druhý zpusob ˚ je automatická zmˇena zdroju. ˚ Výhodou je použití pouze nezbytnˇe nutných prostˇredku˚ ke zvýšení výkonu aplikace po celou dobu. Je tˇreba však urˇcit maximální pocˇ et zdroju, ˚ které mohou být použity, aby nedocházelo k nadrozmˇernému využití dostupných placených prostˇredku. ˚ CloudFoundry, na rozdíl od ostatních poskytovatelu˚ cloudu, ˚ zatím nepodporuje automatické škálování. Je však plánováno do budoucna.
3.5
Testování
Pro testování je zapotˇrebí testovací prostˇredí. To by mˇelo být podobné, nejlépe stejné jako produkˇcní. Takové prostˇredí se dá získat více zpusoby. ˚ Prvním je vytvoˇrení nové testovací aplikace v cloudu, která pobˇeží paralelnˇe s produkˇcní verzi. Takový postup muže ˚ být nevýhodný, pokud uživatel musí platit za zdroje využité testovací aplikaci. Další možnosti muže ˚ být lokální testovací prostˇredí. Toho lze využít pouze tehdy, pokud poskytovatel platformy nabízí cloudové prostˇredí ke stažení. Dˇelá tak napˇríklad CloudFoundry, které umožnuje ˇ instalaci cloudového prostˇredí Micro CloudFoundry11 . V nˇem lze zapnout i debugovací mód pro aplikaci. Navíc lze na lokálním 10. http://code.google.com/p/gaevfs/ 11. https://my.cloudfoundry.com/micro
13
3. V ÝVOJ APLIKACE PRO CLOUD prostˇredí spustit i monitorovací program Spring Insight 4.6.3. Samotná aplikace se testuje bˇežnými zpusoby. ˚ V první rˇ ádˇe psaním jednotkových [7] a integraˇcních [8] testu. ˚ Výkon a škálovatelnost aplikace lze otestovat nástroji tˇretích stran napˇr. Apache JMeter 4.6.2 nebo The Grinder12 . Takové programy otestují odezvu aplikace, propustnost HTTP požadavku˚ atd. Testování lze provádˇet paralelnˇe na více poˇcítaˇcích a nakonec výsledky zobrazit formou grafu˚ nebo uložit do textového souboru k dalšímu zpracování.
3.6
Pˇrenositelnost aplikace
Provozovatelé cloudu˚ dbají na to, aby zákazník mˇel co nejménˇe práce s vývojem a nasazením aplikace. Pokud aplikace je vyvíjena obecnˇe a není vázaná na služby specifického cloudu, které jiné platformy neposkytují, pak zmˇena prostˇredí pro bˇeh aplikace by nemˇela pˇredstavovat problém. Proces pˇrenesení aplikace mezi cloudy v tomto pˇrípadˇe zahrnuje nahrání vlastní aplikace do nového prostˇredí. Obnovení dat v databázi, cˇ i souborech na disku 3.3. Pˇripojení dalších potˇrebných služeb k aplikaci.
12. http://grinder.sourceforge.net/
14
4 Ukázková e-commerce aplikace Souˇcásti této práce je, mimo jiné, vytvoˇrení jednoduché, ukázkové e-commerce aplikace na PaaS 2.3.2 platformˇe CloudFoundry1 . Za úˇcelem prakticky vyzkoušet a zdokumentovat vývoj, nasazení, testování a provoz aplikace v cloudu.
4.1
Specifikace platformy CloudFoundry
CloudFoundry reprezentuje cloud s distribuˇcním modelem PaaS 2.3.2. Provozuje jej firma VMWare2 . V souˇcasné dobˇe je stále v beta verzi a tudíž zdarma. Podmínky placení nejsou blíže specifikovány. Platforma nabízí pro každý registrovaný úˇcet až 20 aplikací, které se podˇelí o 16 služeb, 2 GB místa na disku a 2 GB operaˇcní pamˇeti. CloudFoundry podporuje nˇekolik nejrozšíˇrenˇejších programovacích jazyku˚ a frameworku˚ 3 . Dále poskytuje základní služby4 (fronty, databáze a jiné úložištˇe), jenž lze pˇripojit k aplikaci. Daná služba bude dostupná pro všechny instance aplikace napˇríˇc cloudem. Konfigurace a správa aplikací a služeb se provádí pomocí konzolového programu vmc5 . Java aplikace se nahrává z WAR6 baliˇcku. CloudFoundry je opensource a dovoluje uživatelum ˚ vytváˇret vlastní lokální virtuální prostˇredí pomocí aplikace Micro CloudFoundry7 , kterou lze dále konfigurovat cˇ i zapnout debugovací prostˇredí. Platforma zatím neumožnuje ˇ nastavení CNAME záznamu˚ [9] na vlastní doménu. Nicménˇe je tato vlastnost plánována do budoucna.
1. http://cloudfoundry.com/ 2. http://www.vmware.com/ 3. http://docs.cloudfoundry.com/frameworks.html 4. http://docs.cloudfoundry.com/services.html 5. http://docs.cloudfoundry.com/tools/vmc/installingvmc.html 6. http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WCC3.html 7. http://cloudfoundry.com/micro
15
4. U KÁZKOVÁ E - COMMERCE APLIKACE
4.2
Uživatelské požadavky na funkcionalitu aplikace
Výsledný program slouží pouze k testovacím a demonstraˇcním úˇcelum ˚ a nesplnuje ˇ požadavky plnohodnotné e-commerce aplikace. Požadavky na funkcionalitu aplikace jsou následující.
Program bude podporovat registraci uživatelu˚ a administrátoru. ˚ Jednotlivé produkty budou rˇ azeny do kategorií. Nákupní košík bude zpˇrístupnˇen pouze registrovaným uživatelum, ˚ stejnˇe tak i vyˇrízení objednávek. Administrátoˇri mohou udˇelovat jiným uživatelum ˚ administrátorské práva, vyˇrizovat a prohlížet objednávky. Vytváˇret a mˇenit kategorie, produkty, zpusob ˚ platby, zpusob ˚ dopravy. Uživatelé se mohou pˇrihlašovat do systému, prohlížet a objednávat produkty, prohlížet pˇrehled vlastních objednávek. Systém bude uschovávat záznam všech vyˇrízených i nevyˇrízených objednávek.
4.3
Návrh aplikace
Základní návrh aplikace je popsán pomocí UML 2.0 [10] diagramu. ˚ Funkcionalitu systému 4.2 reprezentuje Use Case diagram [11] vyobrazeny na obrázku 4.1. Návrh datové struktury aplikace vyobrazuje ER diagram [12] na obrázku 4.2. V systému jsou tˇri uživatelské role: 1.
anonymní uživatel – libovolný neautorizovaný návštˇevník webových stránek,
2.
registrovaný uživatel – bývalý anonymní uživatel, který se registroval a následnˇe pˇrihlásil do systému,
3.
administrátor – je registrovaný uživatel, který má navíc oprávnˇení k nˇekterým akcím (viz Use Case diagram 4.1).
16
4. U KÁZKOVÁ E - COMMERCE APLIKACE
Obrázek 4.1: Use Case diagram navrhované aplikace
17
4. U KÁZKOVÁ E - COMMERCE APLIKACE
Obrázek 4.2: ERD diagram navrhované aplikace
18
4. U KÁZKOVÁ E - COMMERCE APLIKACE
4.4
Použité technologie
Za úˇcelem snadného vývoje jsem se rozhodl použít verzovací systém GIT8 s veˇrejným repositáˇrem umístˇeným ve službˇe GitHub9 . Pro správu závislostí a jejích verzí, automatizaci sestrojení aplikace jsem použil nástroj Maven10 . Samotná e-commerce aplikace je napsána pomocí Java rámce Spring Framework11 ve verzi 3.1.0-RELEASE, který zárovenˇ slouží i jako integraˇcní platforma pro jiné frameworky. Aplikaˇcní i uživatelská data jsou ukládána do relaˇcní databáze PosgreSQL12 . K databázi systém pˇristupuje pomocí ORM [13] frameworku Hibernate13 . Zobrazení dat a rozhraní systému uživateli zajišt’uje šablonovací rámec Apache Tiles14 . Zabezpeˇcení aplikace a omezení neprivilegovaných uživatelu˚ poskytuje framework Spring Security15 . Jednotkové testování aplikace je provedeno pomocí rámce JUnit16 . Aplikace byla vyvíjená v IDE (integrované vývojové prostˇredí) IntelliJ IDEA17 . Zdrojové soubory aplikace lze stáhnout na adrese http://github.com/kurochenko/E-commerce-in-cloud.
4.5
Nasazení aplikace
Nasazení aplikace do platformy CloudFoundry znamená pˇrenesení sestaveného programu, v pˇrípadˇe Spring aplikace se jedná o balicˇ ek WAR, do cloudu. To lze splnit dvˇema zpusoby. ˚ Prvním je konzolový program vmc 4.5.1, druhým modul do IDE Eclipse 4.5.2. Oba zpusoby ˚ podporují nasazení aplikace jak do cloudového prostˇredí cloudfoundry.com, tak i do vlastní Micro CloudFoundry platformy. Webové rozhraní pro správu aplikací v cloudu neexistuje. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
http://git-scm.com/ http://github.com/ http://maven.apache.org/ http://www.springsource.org/ http://www.postgresql.org/ http://www.hibernate.org/ http://tiles.apache.org/ http://www.springsource.org/spring-security http://www.junit.org/ http://www.jetbrains.com/idea/
19
4. U KÁZKOVÁ E - COMMERCE APLIKACE 4.5.1 Konzolový program vmc Aplikace vmc18 je napsána v jazyce Ruby19 a je licencovaná pod MIT20 licenci. Podporuje-li operaˇcní systém nástroje pro pˇreklad a sestavení aplikací v tomto jazyce, instalace21 vmc je snadná. Pomocí tohoto nástroje lze nasazovat aplikace, ovládat jejích životní cyklus, pˇripojovat podporované služby, cˇ íst záznamy o bˇehu aplikace (logy), spravovat více úˇctu˚ na ruzných ˚ cloudech. Samotné nasazení aplikace se provádí pomocí interaktivního pˇríkazu push, napˇr vmc push kurochenko-bp. Bud’ z adresáˇre, ve kterém se nachází WAR balíˇcek nebo se cesta k tomuto adresáˇri muže ˚ specifikovat jako parametr pˇríkazu. Pˇri nasazování lze k aplikací pˇripojit potˇrebné služby, pˇridˇelit potˇrebnou velikost operaˇcní pamˇeti, nastavit název a URL adresu. Nejˇcastˇejší chybou pˇri selhání pˇríkazu push u Java aplikace bývá pˇrekroˇcení nastaveného limitu operaˇcní ˇ pamˇeti. Pˇriˇcemž výpisy z logu˚ jsou matoucí. Rešením je zvýšení tohoto limitu, pokud je to možné. Znovu nahrání aplikace se provádí pˇríkazem update doplnˇeným o název aplikace, napˇr vmc update kurochenko-bp. Pˇríkaz zastaví stávající aplikaci, nahraje zmˇeny a pokusí se aplikaci spustit. Tím dochází k chvilkové nedostupnosti aplikace. Tento problém lze vyˇrešit nahráním nové verze programu jako nové aplikace v cloudu, která bude namapována na stejné URL. Starou verzi je poté potˇreba zastavit. 4.5.2 Modul v Eclipse Jiný zpusob ˚ nasazení a spravování Java aplikace v cloudu je rozšíˇrení do IDE Eclipse. Nejjednodušší instalace22 tohoto modulu je do upravené verze vývojového prostˇredí s názvem SpringSource Tool Suite23 . Výhodou rozšíˇrení oproti vmc 4.5.1 je možnost nasazení a správy 18. http://github.com/cloudfoundry/vmc 19. http://www.ruby-lang.org 20. http://www.opensource.org/licenses/MIT 21. http://docs.cloudfoundry.com/tools/vmc/installingvmc.html 22. http://docs.cloudfoundry.com/tools/STS/configuringSTS.html 23. http://www.springsource.com/developer/sts
20
4. U KÁZKOVÁ E - COMMERCE APLIKACE aplikace bez opuštˇení IDE. Aplikaci lze také spouštˇet na bˇežném lokálním serveru, stejnˇe jak ve vzdáleném virtuálním prostˇredím. Rozšíˇrení podporuje integrací se službou Spring Insight. Nevýhodou modulu muže ˚ být použití samotného IDE, pokud vývojáˇr je zvyklý na jiné vývojové prostˇredí. Kvuli ˚ vˇetší složitosti a více závislostem rozšíˇrení oproti vmc, je více náchylné k chybám. Také vyžaduje grafické prostˇredí. Pluginy pro jiné vývojové prostˇredí jako Netbeans24 cˇ i IntelliJ IDEA25 zatím neexistují.
4.6
Testování aplikace
Správné fungování aplikace je kontrolováno jednotkovými [7] a integraˇcními [8] testy. V cloudu je však zajímavˇejší testování výkonu a škálovatelnosti. Tyto dvˇe vlastnosti jsem se rozhodl otestovat pomocí nástroju˚ Apache JMeter 4.6.2 a Spring Insight 4.6.3. 4.6.1 Metodika testování Nejdˇríve jsem testoval aplikací pouze Apache JMeterem z duvodu ˚ negativního dopadu aplikace Spring Insight na využitou operaˇcní pamˇet’ 4.6.3. Tato aplikace byla distribuovanˇe spouštˇena ze dvou poˇcítaˇcu, ˚ pˇriˇcemž na jednom z nich bylo zapnuto i grafické ovládání a zobrazování výsledku˚ viz. obrázek 4.3. Testovací aplikace byla alokována v jediné instanci s pˇridˇelenou operaˇcní pamˇeti 512 M B. Na tuto instanci byly zasílany požádávky nejprve od 100 až po 500 virtuálních uživatelu, ˚ kdy každý z nich zasílal sestavenou iterací dotazu˚ 10 krát. Poˇcet uživatelu˚ byl postupnˇe navyšován do doby, kdy ještˇe vystaˇcila operaˇcní pamˇet’. Poté byly spuštˇeny další instance aplikace, maximálnˇe však cˇ tyˇri. Více nebylo možné z duvodu ˚ omezených zdroju. ˚ Virtuální uživatelé byli pro každý požadavek autentizování spoleˇcným úˇctem. Výsledky testování jsou uvedeny v tabulce 4.1. Testování jediné instance nebylo možné vyzkoušet pro vˇetší pocˇ et uživatelu˚ jak 300, protože aplikace vyžadovala více operaˇcní pamˇeti, než bylo pˇridˇeleno. Namˇerˇ ené výsledky jsou taky zobrazeny v podobˇe grafu˚ na obrázcích B.1, B.2 a B.3. 24. http://netbeans.org/ 25. http://www.jetbrains.com/idea/
21
4. U KÁZKOVÁ E - COMMERCE APLIKACE Instance Uživatelé Opakování Propustnost Odezva Medián 100 12895 406 378 1 200 10 22441 489 401 300 21966 784 642 100 16464 302 211 200 28598 370 375 2 300 10 30721 535 442 400 36413 534 444 500 37108 722 605 100 14836 409 371 200 23836 526 380 4 300 10 36212 488 404 400 42575 561 514 500 37108 695 585 Tabulka 4.1: Výsledky zátˇežového testu aplikace pomoci programu Apache JMeter Testování rychlosti sestavování jednotlivých stránek, nároˇcnosti databázových dotazu, ˚ doby odezvy a propustnosti bylo provedeno aplikaci Apache JMeter, která generovala požadavky a Spring Insight, která monitorovala testovaný program. Pro tento úˇcel byla vlastní aplikace spuštˇena v jedné instanci s pˇridˇelenou operaˇcní pamˇeti o velikosti 1 GB a Spring Insight, která vyžaduje 512 M B pamˇeti. Více instancí nebylo možné spustit z duvodu ˚ omezených zdroju˚ ve virtuálním prostˇredí. Na testovací aplikaci byly opˇet posílány požadavky a pomocí Spring Insight se zjišt’ovaly požadováné informace. Na obrázku C.1 lze vidˇet, že naˇcítaní jednotlivých stránek bylo rychlé kromˇe prvního naˇctení. To je ovšem vlastnost JSP26 stránek, které nebyly pˇreloženy pˇri spuštˇení aplikace, ale až v dobˇe prvního naˇctení. Na obrázku C.2 je zobrazen detail vybrané stránky. Vˇetšina požadavku˚ mˇelo odezvu pod 200 ms. Také zde lze pozorovat, že se doba odezvy závisí na zatížení aplikace.
26. http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/JSPIntro4. html
22
4. U KÁZKOVÁ E - COMMERCE APLIKACE
Obrázek 4.3: Metodika testování pomoci Apache JMeteru 4.6.2 Apache JMeter Apache JMeter je nástroj psaný v Javˇe, který je schopný simulovat zátˇež na serveru posíláním pˇredem definovaných požadavku˚ a tím otestovat výkon jednotlivých komponent cˇ i stránek na webu. Program podporuje ruzné ˚ protokoly, umí autentizovat uživatele i udržet jeho sezení po dobu probíhajících požadavku. ˚ Aplikaci lze spouštˇet distribuovanˇe z více poˇcítaˇcu˚ a tím dále zvýšit testovanou zátˇež. Výstupem jsou textové soubory s namˇerˇ enými hodnotami jako doba odezvy, propustnost apod. Apache JMeter má i grafické rozhraní pro konfiguraci a zobrazení výsledku˚ formou grafu˚ cˇ i tabulek. 23
4. U KÁZKOVÁ E - COMMERCE APLIKACE 4.6.3 Spring Insight Spring Insight je nový nástroj vyvíjený divizí SpringSource firmy VMWare, který je urˇcený k monitorování aplikací v cloudovém prostˇredí. V dobˇe psaní této práce je projekt v beta verzi a dostupný pouze po pˇridˇelení povolení. Po pˇrihlášení lze Spring Insight zapnout pouze pro vybrané aplikace. To zpusobí ˚ nastartování nového programu ve virtuálním prostˇredí uživatele, který se bude zárovenˇ chovat jako služba. Tu lze poté pˇripojit k libovolné aplikaci bud’ manuálnˇe nebo pˇres webové rozhraní Spring Insight. Pro zapnutí je potˇreba aplikací pˇridˇelit minimálnˇe 512 M B operaˇcní pamˇeti. Služba využívá principu aspektovˇe orientovaného programování [14] a pˇri spuštˇení je napojena na servletový kontejner. Tím pádem má malou režii a monitorovanou aplikaci zpomaluje pouze minimálnˇe. Na oficiálních stránkách se uvádí doba zpoždˇení 1 ms. Spring Insight prozatím umí monitorovat a graficky zobrazovat dobu zpracování požadavku˚ na jednotlivé stránky. Navíc lze prohlížet všechny akce aplikace pro daný požadavek vˇcetnˇe dotazu˚ do databáze, prohlížení HTTP hlaviˇcek, servlet filtru˚ a sestavování vybrané stránky. Vše je uspoˇrádáno dle cˇ asové osy a výsledky lze filtrovat. Nástroj je dostupný ke stažení tudíž je možné jej používat i lokálnˇe. Nevýhodou programu je pamˇet’ové zatížení monitorované aplikace, které u vyvíjeného softwaru bylo témˇerˇ dvojnásobné. To má negativní dopad na omezené zdroje v uživatelském virtuálním prostˇredí.
4.7
Zhodnocení
Testováním bylo zjištˇeno 4.1, že aplikace ve virtuálním prostˇredí muže ˚ snášet velká zatížení, pˇritom vˇetšinou zpracovává požadavky v cˇ ase menším 200 ms. Doba odezvy aplikace k uživateli je závislá na internetovém pˇripojení. Pˇri testování byla pˇribližnˇe 400 ms. Vˇetší zátˇež se nejvíce projevuje na operaˇcní pamˇeti. Vytížení procesoru je minimální. Propustnost i dostupnost aplikace v pˇrípadˇe výpadku cˇ i pˇretížení jedné instance lze zvýšit zapnutím více instancí aplikace. To však znamená i vˇetší finanˇcní náklady.
24
5 Závˇer V rámci práce byly popsány základní principy cloudu, ˚ distribuˇcní modely 2.3, modely nasazení 2.4 a porovnány další vlastnosti vybraných virtuálních prostˇredí. Vˇetší cˇ ást práce je vˇenována návrhu a vývoji 4.3 vlastní e-commerce aplikace pomocí programovacího rámce Spring pro platformu CloudFoundry. Testovací aplikace, která byla vyvinuta pouze pro úˇcely práce a není vhodná ke komerˇcnímu použití, byla testována na výkon a škálovatelnost. Testy pˇrinesly zajímavé výsledky, které jsou vyobrazeny v tabulce 4.1 nebo na obrázcích C.1 a C.2. Cloudové prostˇredí je velice mocný nástroj, který urychlí nasazení aplikace a zmenší poˇcáteˇcní finanˇcní zátˇež na její provoz.
25
Literatura [1] Cloud computing. In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2006 [cit. 2012-05-12]. Dostupné z:
[2] Cloud computing service models. In: ORLANDO, D. DeveloperWorks [online]. 2008 [cit. 2012-04-14]. Dostupné z: [3] Internet Denial-of-Service Considerations. In: HANDLEY, M. a E. RESCORLA. IETF Documents [online]. 2006 [cit. 2012-04-14]. Dostupné z: [4] Dynamic Load Balancing and Scheduling. In: DECKER, T. Universität Paderborn [online]. 1998 [cit. 2012-04-14]. Dostupné z: [5] LINDHOLM, T., YELLIN, F., BRACHA, G. a BUCKLEY, A. TM The Java Virtual Machine Specification. In: Oracle [online]. [cit. 2012-05-12]. Dostupné z: [6] How to Add a System Service to OSS Cloud Foundry - Step by Step guide. In: SABEV, G. Cloud Foundry [online]. 2011 [cit. 201204-14]. Dostupné z: [7] FOWLER, M. Mocks Aren’t Stubs. In: MartinFowler.com [online]. 2007 [cit. 2012-04-28]. Dostupné z:
26
ˇ 5. Z ÁV ER
[8] Integration testing. In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2012 [cit. 2012-04-28]. Dostupné z: [9] HAMILTON, M. a R. WRIGHT. Use of DNS Aliases for Network Services. In: IETF Documents [online]. 1997 [cit. 2012-04-28]. Dostupné z: [10] Unified Modeling Language: Infrastructure. OMG [online]. 2005 [cit. 2002-04-29]. Dostupné z: [11] Use Case Diagrams. In: UML Diagrams [online]. [cit. 2012-04-29]. Dostupné z: [12] NAIBURG, E. J. a R. A. MAKSIMCHUCK. UML for database design. Boston: Addison-Wesley, c2001, 300 s. ISBN 02-017-2163-5. [13] AMBLER, S. Mapping Objects to Relational Databases: O/R Mapping In Detail. In: Agile Data [online]. [cit. 2012-04-29]. Dostupné z: [14] Aspect-oriented programming. In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2012 [cit. 2012-04-29]. Dostupné z:
27
A Obsah pˇriloženého CD Na pˇriloženém CD se nachází následující adresaˇrová struktura: •
/app ............. zdrojové soubory aplikace
•
/thesis –
thesis.tex .... zdrojový text práce psaný v LATEX
–
thesis.bbl .... bibliografie použitá v práci
–
thesis.pdf .... práce ve formátu PDF
–
img/ .......... obrázky a pˇrílohy použité v práci
28
B Grafy zátˇežového testu
Obrázek B.1: Propustnost aplikace pˇri zátˇežovém testu
29
ˇ B. G RAFY ZÁT EŽOVÉHO TESTU
Obrázek B.2: Prumˇ ˚ erná odezva pˇri zátˇežovém testu
30
ˇ B. G RAFY ZÁT EŽOVÉHO TESTU
Obrázek B.3: Medián odezvy pˇri zátˇežovém testu
31
C Obrázky z programu Spring Insight
Obrázek C.1: Výsledky monitorování aplikace pomocí Spring Insight
32
C. O BRÁZKY Z PROGRAMU Spring Insight
Obrázek C.2: Detail monitorování jediné stránky aplikace pomocí Spring Insight
33