Web mashup
www.webmashup.com
Miloˇs Kal´ ab
173388 – 1.roˇ cn´ık FI MU N-IN POS
4. prosince 2009
Uvod ´
Slovo
”Mashup“ znamen´a podle v´ykladov´eho slovn´ıku
”rozmaˇckat nˇeco, nejˇcastˇeji j´ıdlo, do kaˇsovit´e formy“. 1 Tato definice ˇc´asteˇcnˇe nastiˇnuje, co to vlastnˇe mashup (ˇcesk´y pˇreklad by mohl b´yt
”m´ıchanice“ nebo
”mix´aˇz“) je.
V kontextu sluˇzby internetu je mashup definov´an jako webov´a str´anka nebo aplikace, kter´a uˇz´ıv´a obsah z v´ıce zdroj˚u k vytvoˇren´ı nov´e sluˇzby. Obsah vyuˇz´ıvan´y v mashupu b´yv´a bˇeˇznˇe zprostˇredkov´an ze zdroj˚u tˇret´ı strany pomoc´ı veˇrejn´eho rozhran´ı. [1]
Obr´azek 1: Co je mashup?[2]
Web mashup je sv´ym pojet´ım podobn´y port´al˚um. Obˇe tyto technologie jsou zamˇeˇreny na prezentaci agregovan´eho obsahu. Jejich rysy se vˇsak z´asadnˇe liˇs´ı.
Port´aly, jeˇz jsou starˇs´ı technologi´ı, jsou navrˇzeny jako rozˇs´ıˇren´ı dynamick´ych webov´ych aplikac´ı. Prezentace obsahu ve formˇe webov´ych str´anek sest´av´a ze dvou f´az´ı. Nejprve je tˇreba vytvoˇrit jednotliv´e ˇc´asti a n´aslednˇe je agregovat do kompletn´ı webov´e str´anky. Port´alov´e technologie jasnˇe definuj´ı ud´alosti ˇ
cten´ı a aktualizace. Poˇzadavek na str´anku je pˇreloˇzen na operace ˇcten´ı nad jednotliv´ymi ˇc´astmi, kter´e str´anku tvoˇr´ı. Proveden´ı akce (napˇr. kliknut´ı na tlaˇc´ıtko) na str´ance port´alu je pˇreloˇzeno na aktualizaci t´e konkr´etn´ı ˇc´asti, ve kter´e se akce provedla, coˇz je ale spojeno s opˇetovn´ym zobrazen´ım cel´e str´anky.
Tato strategie je vcelku n´akladn´a. Nav´ıc, agregace dat u port´al˚u prob´ıh´a pˇr´ımo na stranˇe serveru. Na rozd´ıl od port´al˚u, mashup obvykle vyuˇz´ıv´a technologi´ı Webu 2.0. Kromˇe klasick´ych prezentaˇcn´ıch jazyku, jako je HTML je mashup schopen zpracov´avat ˇcistˇe XML dokumenty. Agregace dat prob´ıh´a bud’ na stranˇe
1Longman Dictionary Online –http://www.ldoceonline.com/dictionary/mash_1
serveru (jako u port´al˚u), nebo na stranˇe klienta. To umoˇzˇnuje moˇznost dynamick´e aktualizace obsahu jednotliv´ych ˇc´ast´ı str´anky bez nutnosti ˇcast´eho znovunaˇc´ıt´an´ı kompletn´ı webov´e prezentace.[3]
Jednou z nejvˇetˇs´ıch v´yhod mashup˚u je syst´em jejich vytv´aˇren´ı. Obecnˇe se d´a ˇr´ıct, ˇze velk´e firmy (jako jsou Google, Amazon atd.) provozuj´ı nˇejakou aplikaci.
Koncov´ı uˇzivatel´e maj´ı moˇznost vyuˇz´ıt API tˇechto aplikac´ı a zkombinovat je. T´ım vzniknaj´ı nov´e, ˇcasto velice specializovan´e sluˇzby. Ty by se velk´ym spoleˇcnostem nevyplatilo vyv´ıjet a provozovat, ale pr´avˇe t´ım, ˇze poskytnou svoje API, zviditelˇnuj´ı sv´e sluˇzby a zdarma z´ısk´av´aj´ı reklamu. Nav´ıc m˚uˇze jejich produkt natolik prosadit, ˇze se stane takˇrka standardem. Typick´ym pˇr´ıkladem mashupu je Weather Bonk2, kde jsou dohromady spojeny informace o poˇcas´ı, mapa, n´ahledy online kamer zab´ıraj´ıc´ıch v´yznamn´e m´ısta. To vˇse je samozˇrejmˇe propojen´e a interaktivn´ı.
Obr´azek 2: Nejpouˇz´ıvanˇejˇs´ı zdroje pro tvorbu mashup˚u[4]
Typy mashup˚ u
Zp˚usob vytv´aˇren´ı mashup˚u, jejich c´ılov´a skupina a filosofie, se kterou jsou tvoˇreny dˇel´ı mashupy do dvou skupin: uˇzivatelsk´e mashupy (angl.
”Consumer mashups“) a podnikov´e mashupy (angl.
”Enterprise (2.0) mashups“).
Uˇ zivatelsk´ e mashupy
Casto jde o amat´ˇ ersky vytv´aˇren´e aplikace. Amat´ersky v tomto pˇr´ıpadˇe nemus´ı pˇr´ımo znamenat, ˇze jde o nekvalitn´ı pr´aci. Mezi internetov´ymi uˇzivateli je spousta program´ator˚u, IT nadˇsenc˚u a ostatn´ıch, kteˇr´ı z vlastn´ı iniciativy spoj´ı nˇekolik pˇredpˇripraven´ych n´astroj˚u (widget˚u, gadget˚u atd.) a vytvoˇr´ı z nich novou aplikaci.
U tohoto typu mashup˚u je agregovan´y obsah obvykle zobrazen pr´avˇe pomoc´ı str´anek jednoho ze zakomponovan´ych n´astroj˚u - napˇr. mashupy vyuˇz´ıvaj´ıc´ı Google Maps API.
2Weather Bonk –www.weatherbonk.com
Podnikov´ e mashupy
Tento typ by se dal charakterizovat tak, ˇze v´ysledek spojen´ı nˇekolika n´astroj˚u vede k vytvoˇren´ı aplikace, kter´a soustˇred’uje firemn´ı (a i ostatn´ı) data do formy umoˇzˇnuj´ıc´ı kvalitn´ı spolupr´aci v´yvoje a obchodu. Bˇeˇznˇe jsou pouˇz´ıv´any u projekt˚u vyv´ıjen´ych pomoc´ı tzv. agiln´ıch metodik, kde je potˇreba ´uzk´e spolupr´ace mezi z´astupci z´akazn´ık˚u a v´yvoj´aˇr˚u kv˚uli definov´an´ı a implementaci obchodn´ıch poˇzadavk˚u projektu.
Podnikov´e mashupy by se daly zase jeˇstˇe rozdˇelit podle toho, jak´ym zp˚usobem jsou vytv´aˇreny. Prvn´ım zp˚usobem je vytvoˇren´ı koneˇcn´e podoby pˇr´ımo v IT oddˇelen´ı. Koneˇcn´emu uˇzivateli je pˇredstavena hotov´a aplikace vˇcetnˇe uˇzivatelsk´eho rozhran´ı. Nemoˇznost uˇzivatelsk´ych ´uprav je vyvaˇzov´ana faktem, ˇze IT oddˇelen´ı je schopno funkˇcn´ı mashup vytvoˇrit rychle.
Druhou metodou tvorby mashup˚u, je vytvoˇren´ı sady gadget˚u v IT oddˇelen´ı.
Narozd´ıl od prvn´ıho zp˚usobu dostane uˇzivatel
”pr´azdn´e“ aplikaˇcn´ı prostˇred´ı, do nˇehoˇz si m˚uˇze dle libosti poskl´adat pˇredpˇripraven´e gadgety. Ovˇsem, pokud uˇzivatel potˇrebuje jin´e gadgety neˇz jsou k dispozici, tak mus´ı poˇz´adat o jejich vytvoˇren´ı IT oddˇelen´ı.
Implementaˇcnˇe nejtˇeˇzˇs´ı metoda, jej´ıˇz realizace m´a v koneˇcn´em d˚usledku nejvˇetˇs´ı pˇrednosti, je nasazen´ı prostˇred´ı umoˇzˇnuj´ıc´ı komukoliv vytvoˇrit a zkom- binovat sv˚uj vlastn´ı mashup. Oproti pˇredeˇsl´e metodˇe jsou jasnˇe viditeln´e v´yhody.
Uˇzivatel´e jsou schopni sv´epomoc´ı vytv´aˇret ty prvky, kter´e jim v jejich mashupu chyb´ı. Nev´yhodu to vˇsak m´a. Stejnˇe tak, jak se rychle ˇs´ıˇr´ı dobr´a ˇreˇsen´ı, tak se rozˇsiˇruj´ı i ta ˇspatn´a.[5]
Rizika
T´ım jsem se dostal k zabezpeˇcen´ı mashup˚u. Vzhledem k povaze mashup˚u, je jasn´e, ˇze d´ıky jejich sloˇzitosti vznik´a v´ıce moˇznost´ı, jak takov´e aplikace napadnout.
D˚uvody jsou kombinov´an´ı r˚uzn´ych programovac´ıch jazyk˚u, technologi´ı nebo vˇetˇs´ı mnoˇzstv´ı skript˚u na stranˇe serveru v porovn´an´ı s bˇeˇznou webovou aplikac´ı.
Pouˇz´ıv´an´ı r˚uznorod´ych sluˇzeb, n´astroj˚u ˇci komponent je zkr´atka probl´em cel´eho prostˇred´ı Webu 2.0. Spojovan´e prvky nemus´ı b´yt ide´alnˇe specifikovan´e, jejich vnitˇrn´ı bezpeˇcnost m˚uˇze b´yt na r˚uzn´e ´urovni. To je n´aslednˇe probl´em, kdyˇz je m´a pouˇz´ıt mashup aplikace jako zdroj. Jako uk´azka rizika m˚uˇze slouˇzit napˇr´ıklad nutnost autentizace pro pˇr´ıstup k soukrom´emu nastaven´ı nˇejak´e sluˇzby.
V momentˇe, kdy aplikaci poskytnete sv´e pˇrihlaˇsovac´ı jm´eno a heslo je na jednu stranu zobrazen v´ami nakonfigurovan´y obsah aplikace, na druhou stranu byly vaˇse ´udaje poskytnuty tˇret´ı stranˇe a vy m˚uˇzete pouze doufat, ˇze nebudou zneuˇzity.
Probl´emem m˚uˇze b´yt tak´e vˇetˇs´ı mnoˇzstv´ı spojen´ı, kter´e mashup potˇrebuje pro prezentov´an´ı, aktualizov´an´ı dat nebo jejich z´ısk´av´an´ı.
V´yvoj´aˇri mashup˚u by mˇeli myslet na tyto aspekty a oˇsetˇrit k´od tak, aby byl v´ysledn´y produkt bezpeˇcn´y. V dneˇsn´ı dobˇe uˇz existuj´ı prostˇredky, jak tyto probl´emy ˇreˇsit. Napˇr. jiˇz zm´ınˇenou problematiku autentizace m˚uˇze vyˇreˇsit protokol OAuth. Lze jej pouˇz´ıt jako metodu ovˇeˇren´ı uˇzivatele k jak´emukoli typu API (SOAP, XML-RPC, REST atd.), a to nejen na webov´ych aplikac´ıch.[6]
O vytvoˇren´ı standard˚u t´ykaj´ıc´ıch se mashup˚u se snaˇz´ı i W3C 3. Naneˇstˇest´ı
3Widgets 1.0 –http://www.w3.org/TR/widgets-reqs/
takov´eto ˇr´ızen´ı je velice zdlouhav´e, a i za pˇredpokladu, ˇze bude standard vytvoˇren, je ot´azou, jestli uˇz nebude pˇr´ıliˇs pozdˇe pro jeho prosazov´an´ı.
Architektura
Z hlediska toho, jak mashup zpracov´av´a poˇzadavek, se daj´ı rozliˇsit
”Web based“ a
”Server based“ varianty. Web based prov´ad´ı kombinaci a pˇreform´atov´an´ı dat pˇr´ımo v prohl´ıˇzeˇci. U server based je kombinace a pˇreform´atov´an´ı provedeno na serveru. Na uˇzivatel˚um webov´y prohl´ıˇzeˇc se tud´ıˇz dostane aˇz fin´aln´ı podoba.
Vnitˇrnˇe vypad´a mashup jako n´avhrov´y vzor fas´ada, kter´a poskytuje zjed- noduˇsen´a rozhran´ı pro pr´aci s vˇetˇs´ım mnoˇzstv´ım k´odu. V pˇr´ıpadˇe mashupu jde o API, kter´e je rozhran´ım, a datov´e zdroje, kter´e jsou k´odem. Velkou v´yhodou mashup˚u pramen´ıc´ı z Web 2.0 je znouvupouˇzitelnost zdroj˚u a API. Webov´e sluˇzby funguj´ıc´ı jako zdroje nebo API pro mashup jsou ˇcasto zaloˇzen´e na SOA.
Poskytuj´ı otevˇren´e standardizovan´e protokoly zaruˇcuj´ıc´ı unifikovan´y zp˚usob jak pˇristupovat k informac´ım zaloˇzen´ych na r˚uzn´ych platform´ach (OS, programovac´ı jazyky, aplikace).
Na podporu v´yvoje mashup˚u vznik´a spousta prostˇredk˚u, jak zdarma, tak placen´ych. Z´akladem jsou GUI editory – Google Web Toolkit, XAP nebo Net- beans a jin´e. Do nich existuje ˇrada knihoven, napˇr. pro pr´aci s Ajaxem. Pro v´ymˇenu dat se pouˇz´ıvaj´ı tzv. mikroform´aty. Jde o XML str´anky s konkr´etn´ım dohodnut´ym form´atem. Obl´ıben´e je tak´e pouˇzit´ı RSS nebo Atom form´at˚u pro agregaci zpr´av. Pro v´ymˇenu dat se zase pouˇz´ıv´a JSON. U podnikov´ych mashup˚u je moˇzn´e vyuˇz´ıt i bin´arn´ıch form´at˚u jako.xlsnebo.pdfa dalˇs´ıch. Kaˇzdop´adnˇe se vˇsak d´a oˇcek´avat, ˇze v oblasti podnikov´ych mashup˚u bude snaha o vyuˇzit´ı co nejv´ıce zdroj˚u z cel´eho internetu.
Pro tvorbu mashup˚u existuj´ı i tzv. konstrukt´eˇri, programy, jeˇz uˇzivatel˚um umoˇzˇnuj´ı jednoduch´ym
”drag and drop“ stylem utvoˇrit sv˚uj vlastn´ı mashup za pomoc´ı knihovny jiˇz existuj´ıc´ıch gadget˚u. Mezi nejzn´amˇejˇs´ı patˇr´ı Google Gadgets, Yahoo Pipes, Teqlo nebo Dapper.[7] Ve sf´eˇre podnikov´ych mashup˚u je to napˇr.
IBM Mashup Center.
Aktu´ aln´ı stav
Je zˇrejm´e, ˇze mashup zaˇz´ıv´a masivn´ı n´astup. Ilustrovat to lze na poˇctu funguj´ıc´ıch mashup˚u. V roce 2007 jich bylo kolem 2000, zat´ımco dnes uˇz zhruba 4500. Poˇcet pouˇziteln´ych API uˇz pˇreviˇsuje 1500. [4] Tento prudk´y n´ar˚ust svˇedˇc´ı o ˇc´ım d´al vˇetˇs´ı obl´ıbenosti mashup˚u. Bohuˇzel, zvl´aˇstˇe v ˇCesk´e republice se jim zat´ım moc nedaˇr´ı.
Z´ avˇ er
Mashupy jsou ze sv´e filosofie zcela univerz´aln´ı. Jejich jednoduchost nav´ıc zrychluje rychlost jejich ˇrozˇsiˇrov´an´ı. Nav´ıc je mashup velice zaj´ımav´ym ˇreˇsen´ım situace, kdy uˇzivatel poˇzaduje sluˇzby, kter´e zat´ım neexistuj´ı. V pˇr´ıpadˇe pouˇzit´ı mashupov´ych konstruktor˚u je vytvoˇren´ı str´anky, na kter´e bude vˇse co uˇzivatel poˇrebuje, snadn´e. Bohuˇzel, dle m´eho n´azoru, je na internetu v dneˇsn´ı dobˇe pˇr´ılˇs mnoho lehkomysln´ych uˇzivatel˚u. Probl´emy, kter´e jsem nast´ınil v kapitole rizika,
je netr´ap´ı. Dokud mashup˚u nezaˇcne nˇekdo zneuˇz´ıvat, tak bude situace v poˇr´adku.
Co nastane potom se d´a odhadnout – bud’ dojde k profesionalizaci jejich tvoˇren´ı, coˇz s sebou ponese netrivi´aln´ı n´aklady, nebo jejich obliba rychle poklesne. Na druhou stranu, bezpeˇcnost je jedn´ım z hlavn´ıch probl´em˚u Webu 2.0 jako celku.
Reference
[1] Webmashup.com. www.webmashup.com.
[2] Dion Hinchcliffe. Mashups: The next major new software development model?
ZDNet.com, 14.5.2007. blog –http://blogs.zdnet.com/Hinchcliffe/?p=
106.
[3] Mashup – web application hybrid. http://en.wikipedia.org/wiki/
Mashup_%28web_application_hybrid%29.
[4] Programmableweb.com. http://www.programmableweb.com/.
[5] Michael Ogrinz. Mashup Patterns: Designs and Examples for the Modern Enterprise. 2009. extrakt –http://www.informit.com/articles/article.
aspx?p=1337592&seqNum=5.
[6] Oauth – nov´y protokol pro autentizaci k vaˇsemu api. http://zdrojak.root.
cz/clanky/oauth-novy-protokol-pro-autentizaci-k-vasemu-api/.
[7] Patrick Zandl. Mashup aneb m´ıchanice pro web 2.0. Certodˇˇ ej.cz, 21.5.2007.
http://www.certodej.cz/view/mashup-aneb-m.
Metadata v DC
<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"/>
<meta name="DC.Title" content="Web mashup" />
<meta name="DC.Creator" content="Bc. Miloˇs Kal´ab"/>
<meta name="DC.Subject" content="Web mashup"/>
<meta name="DC.Description" content="Web mashup -- webov´a str´anka nebo aplikace, kter´a uˇz´ıv´a obsah z v´ıce zdroj˚u k vytvoˇren´ı nov´e sluˇzby"/>
<meta name="DC.Date" content="4.12.2008"/>
<meta name="DC.Type" content="Text"/>
<meta name="DC.Type" content="Esej"/>
<meta name="DC.Format" content="application/pdf"/>
<meta name="DC.Format" content="computerFile"/>
<meta name="DC.Identifier" content="http://mildaontheweb.ic.cz/PV 070/esej.pdf"/>
<meta name="DC.Source" content="http://en.wikipedia.org/wiki/Mash up_%28web_application_hybrid%29"/>
<meta name="DC.Source" content="http://www.webmashup.com"/>
<meta name="DC.Language" content="cs"/>