• Nebyly nalezeny žádné výsledky

Hlavní práce3627_xstam36.pdf, 488.6 kB Stáhnout

N/A
N/A
Protected

Academic year: 2022

Podíl "Hlavní práce3627_xstam36.pdf, 488.6 kB Stáhnout"

Copied!
48
0
0

Načítání.... (zobrazit plný text nyní)

Fulltext

(1)

Vysoká škola ekonomická v Praze

Fakulta informatiky a statistiky

Katedra informačních technologií

Student : Michal Stankay

Vedoucí bakalářské práce : Ing. Tomáš Brabec Recenzent bakalářské práce : Ing. Daniel Kafka

TÉMA BAKALÁŘSKÉ PRÁCE

Aktuální trendy ve vývoji webových aplikací

ROK: 2006

(2)

Poďakovanie

Týmto by som sa rád poďakoval môjmu vedúcemu bakalárskej práce, Tomášovi Brabcovi, ktorý mi pri písaní práce poskytol cenné rady a pripomienky.

(3)

Vyhlásenie

Vyhlasujem, že som bakalársku prácu spracoval samostatne a že som uviedol všetky použité pramene a literatúru, z ktorých som čerpal.

V Prahe dňa 20.8.2006

………...

podpis

(4)

Abstrakt

Táto bakalárska práca sa zaoberá aktuálnymi trendmi pri vývoji webových aplikácií s dôrazom na platformu LAMP (Linux, Apache, MySQL, PHP) ako významného nástroja na vývoj a prevádzku webových aplikácií. V prvej časti popisujem trendy minulé a porovnávam ich s trendmi súčasnými, na konci tejto časti uvádzam rozšírenosť trendov na základe číselných dát. Ďalšia časť pojednáva o vybraných open-source prostriedkoch vývoja webových aplikácií, ktoré sa dostali na výslnie – AJAX, Ruby, Python, ich použití, kladoch a záporoch. Jazyky Ruby a Python a ich programové prostriedky porovnávam s jazykom PHP a hodnotím ich možnosti nasadenia v platforme LAMP ako náhradu za PHP. Pasáž o jazyku Ruby zahŕňa i predstavenie vývojového frameworku Ruby On Rails, ktorý je prevratný v úrovni integrácie jednotlivých prístupov k vývoju do uceleného riešenia.

Platforme LAMP a jej použitiu, kladom a záporom je vyhradená ďalšia kapitola práce. V prípadovej štúdii nasadenia LAMP vo firme vyvíjajúcej webové aplikácie popíšem dôvody nasadenia LAMP, uvediem porovnanie s konkurenčným riešením, sumarizujem skúsenosti s prevádzkou LAMP a zhodnotím výhľad používania tejto platformy v budúcnosti.

Abstract

This Bachelor's thesis is to describe current web-application development trends with emphasis on the LAMP (Linux, Apache, MySQL, PHP) as a prominent set of tools used for development and running web-based applications. The first part of the thesis is aimed on past Internet trends and their impact on- and comparison to the current trends. One can also find rating of popularity of particular trends based on numeric data in the end of this part. The next part describes selected open-source tools for web development that became widely used recently – AJAX, Ruby, Python, their usage, pros and cons. I am going to compare Ruby and Python programming languages to the PHP language and also evaluate the possibility of substituting PHP by these languages in the LAMP platform. The chapter about Ruby also includes description of Ruby On Rails development framework which incorporates revolutionary level of integration of various development

approaches into a single package. Next part of my thesis is focused on pros, cons and usage of the LAMP platform. In a case-study at the end of the thesis I will describe real-world usage and deployment of the LAMP in web development company, reasons for deploying the LAMP, company's experience with running the LAMP, comparison to the alternative products from the company's point of view and outlook of the LAMP to the future.

(5)

Obsah

1 Úvod...7

1.1 Vymedzenie témy práce a dôvod výberu témy...7

1.2 Cieľ práce, zmysel cieľa...7

1.3 Spôsob/metóda dosiahnutia cieľa...8

1.4 Predpoklady a obmedzenia práce...8

2 Minulé trendy a ich vplyv na súčasný vývoj...9

3 Aktuálne trendy všeobecne...11

3.1 Koncepčné zmeny...11

3.1.1 Personalizácia obsahu ...11

3.1.2 Zmena distribúcie informácií – RSS, blogy, užívateľský obsah...12

3.1.3 Sociálne siete na Internete...12

3.2 Implementačné zmeny ...14

3.3 Technologické zmeny ...15

3.4 Trendy číselne...16

4 Vybrané open-source technológie...17

4.1 Python...17

4.1.1 Predstavenie jazyka, použitie...17

4.1.2 Kľúčové vlastnosti, výhody a nevýhody...20

4.1.3 Výhľad do budúcnosti...20

4.2 Ruby/Ruby On Rails...21

4.2.1 Predstavenie jazyka, použitie...21

4.2.2 Ruby On Rails...22

4.2.3 Kľúčové vlastnosti, výhody a nevýhody...23

4.2.4 Výhľad do budúcnosti...24

4.3 AJAX...25

4.3.1 Predstavenie...25

4.3.2 Dôvody rozšírenia a podstatné vlastnosti...26

4.3.3 Výhody a nevýhody...26

4.3.4 Výhľad do budúcnosti...27

5 Platforma LAMP (Linux, Apache, MySQL, PHP)...28

5.1 Predstavenie...28

5.2 Dôvody rozšírenia, podstatné vlastnosti...28

5.3 Výhody a nevýhody...29

(6)

5.4 Výhľad do budúcnosti...31

6 Prípadová štúdia nasadenia platformy LAMP ...32

6.1 Predstavenie firmy a jej činností súvisiacich s používaním LAMP a OSS...32

6.2 História nasadenia LAMP...32

6.3 Porovnanie s alternatívnymi riešeniami z pohľadu firmy, metodika porovnania...33

6.3.1 Kritériá rozhodovania pri rozhodovaní o prijatí platformy LAMP, resp. konkurenčného riešenia...33

6.3.2 Porovnanie so súčasnou konkurenciou...34

6.4 Doterajšie skúsenosti s prevádzkou ...35

6.4.1 Konfigurácia AMP – dôležité body...35

6.4.2 Klady a zápory všeobecne...36

6.4.3 Testovacie a vývojové prostredie...37

6.4.4 Produkčné prostredie...37

6.4.5 Technická podpora...38

6.4.6 Ostatné postrehy...38

6.5 Výhľad používania LAMP vo firme do budúcnosti...38

7 Záver...40

8 Prehľad literatúry a použitých zdrojov...42

9 Zoznam obrázkov...44

10 Terminologický slovník...45

10.1 Termíny prevzaté z terminologického slovníka katedry informačných technológií...45

10.2 Ďalšie termíny...45

11 Prílohy...48

11.1 Príloha 1: Ukážková konfigurácia Apache a PHP na produkčnom serveri...48

(7)

1 Úvod

1.1 Vymedzenie témy práce a dôvod výberu témy

Témou mojej bakalárskej práce je oblasť aktuálnych trendov vo vývoji webových aplikácií, zhrnutie hlavných zmien v koncepcii, implementácii a technológiách pri tvorbe a nasadení webových aplikácií v posledných štyroch rokoch. Ďalšia časť mojej práce sa zameriava na jeden výrazný technologický trend a síce na platformu LAMP (Linux, Apache, MySQL, PHP), ktorá je významným fenoménom na poli vývoja a nasadenia aplikácií na webe a zároveň príkladom úspešného prieniku open-source software (spolu s x86 architektúrou) do enterprise prostredia. V tejto časti práce predstavím jednotlivé komponenty platformy LAMP, možnosti ich použitia a na prípadovej štúdii demonštrujem nasadenie platformy LAMP v produkčnom prostredí firmy zaoberajúcej sa webovými riešeniami na kľúč.

Dôvodom výberu tejto témy je moja osobná angažovanosť a určitá znalosť danej problematiky, keďže som zamestnaný v firme vyvíjajúcej webové riešenia na kľúč práve na platforme LAMP.

Zmienenej oblasti IS/IT do určitej miery rozumiem a bakalárska práca mi určite pomôže ďalej si rozšíriť rozhľad a tým pádom zlepšiť možnosti rozhodovania v tomto odvetví IS/IT.

1.2 Cieľ práce, zmysel cieľa

Cieľom práce je poskytnúť základný kategorizovaný prehľad aktuálnych trendov v oblasti webov a webových aplikácií a popísať vlastnosti a použitie platformy LAMP v prostredí webových aplikácií, spolu so zhodnotením kladov a záporov tejto platformy.

Zmyslom takéhoto cieľa, tj. spracovania témy, je zaznamenanie trendov aktuálnych v dobe tvorby bakalárskej práce (vznikne niečo ako odtlačok doby) a priniesť čitateľovi predstavu o možnostiach, schopnostiach a spôsoboch reálneho nasadenia platformy LAMP v tomto čase a priestore.

Cieľovým publikom mojej práce (najmä časti o LAMP) môže byť IT manažér, ktorý rozhoduje o nasadení alebo migrácii na platformu LAMP, respektíve informačný architekt, ktorý skúma schopnosti LAMP v špecifickom nasadení.

Vzhľadom na turbulentnosť prostredia IS/IT by bolo naivné domnievať sa, že informácie obsiahnuté v tejto bakalárskej práci budú platné i za 5-10 rokov. Práca však v budúcnosti môže poslúžiť pri retrospektívnom prieskume.

(8)

1.3 Spôsob/metóda dosiahnutia cieľa

Keďže táto práca hodlá popísať trendy vo všeobecnosti, ale i zamerať sa na jeden z nich, v oboch častiach použijeme rozdielne postupy pri dosahovaní cieľa. Domnievam sa, že významnosť toho- ktorého trendu sa dá odhadnúť podľa priestoru, aký sa mu venuje v odborných médiách. K tomuto meraniu je možné pristupovať exaktne (napr. počet zmienok v niektorom zo systémov monitoringu tlače ako je Newton IT), no v prípade, že človek sleduje dianie v branži na dennej báze, je možné vysledovať najvýznamnejšie trendy i popamäti. Vzhľadom na obmedzený priestor v rámci bakalárskej práce a na fakt, že ťažisko práce sa nachádza v časti popisujúcej LAMP si trúfam vyhlásiť, že prehľad trendov, ktorý zostavím v tejto práci iba prostredníctvom sledovania

aktuálneho IT spravodajstva z oblasti webov, bude dostatočne verne odrážať stav v období písania bakalárskej práce. Pre úplnosť doplním moju selekciu trendov o ich reálnu používanosť (vid kapitola 3.4).

V kapitolách na tému LAMP budem vychádzať jednak z článkov a publikácií uverejnených na Internete či v knižnej podobe a jednak z mojich osobných i firemných skúseností s prevádzkou riešení na platforme LAMP. Súčasťou bude popis dôležitých vlastností, výhod a nevýhod LAMP ako celku, v stručnosti i jednotlivých komponentov. V prípadovej štúdii predstavím firmu, jej činnosť, popíšem konfiguráciu serverov a príklady použitia LAMP vo firme. Za pomoci SWOT tabuľky si porovnáme klady a zápory danej technológie. Na záver tejto časti si dovolím umiestniť zhrnutie skúseností a odporúčania ohľadom použiteľnosti a nasadenia LAMP v malých a stredných podnikoch.

1.4 Predpoklady a obmedzenia práce

Predpokladom vyhotovenia tejto práce sú aspoň čiastočné znalosti a skúsenosti z prostredia webových aplikácií, praktické, no i teoretické, keďže autor práce musí byť schopný určiť

rozhodovacie kritériá a hlavné body pri vyhodnocovaní jednotlivých technológií. Viac ku popisu rozhodovacích kritérií v kapitole 6.3.

V tejto práci budem pracovať s určitým časovým delením a síce: za „súčasné“ dianie budem

považovať obdobie od roku 2003 po dnešok (júl 2006) a minulým dianím bude obdobie pred rokom 2003. Dôvody, prečo je tomu tak, uvádzam v kapitole 2.

Obmedzením môže byť už zmieňovaná turbulentnosť prostredia, ktorá je však permanentnou súčasťou IT branže, čo spôsobuje, že trendy, informácie o trendoch i použiteľnosť popisovaných technológií sa môžu zmeniť takpovediac zo dňa na deň. Ďalším obmedzením pri písaní práce môže byť rozsah, kedy často nie je možné danú tematiku obsiahnuť v požadovanej miere.

(9)

2 Minulé trendy a ich vplyv na súčasný vývoj

Rýchlosť, s akou prebiehajú zmeny v IT, spôsobila, že minulé trendy (viď nižšie) už dávno neplatia.

Vplyv technologického pokroku a skúseností, ktoré firmy získali v minulosti, sa transformoval do často antagonistických podôb v súčasnosti [1]:

Z vojny prehliadačov Netscape Navigator verzus Microsoft Internet Explorer vzišla symbióza open-source prehliadača Mozilla a Internet Exploreru. MSIE si síce drží majoritný podiel, no svojou funkčnou a užívateľskou strohosťou dal šancu vzniknúť všetkým rozšíreniam a zásuvným modulom Mozilly.

Z cieľa vojny, tj. kvalitného browsera sa stal prostý prostriedok prístupu k službám na webe, medzistupeň na ceste k úplnej diverzifikácii spôsobov prístupu na web (mobilné zariadenia, set- top boxy, RSS čítačky, webové služby atď.)

Z dial-up pripojenia sme sa presunuli k širokopásmovému pripojeniu, čo má za následok presun čoraz väčšieho množstva služieb na web a možnosť prenášať viac multimediálneho obsahu.

Z katalógových vyhľadávačov sa definitívne stali plno-textové, s vyššou presnosťou a väčším obsiahnutím znalostí Internetu.

Zo zobrazovania obrázkov sme prešli k audio a video súborom, čo možno pripísať navýšeniu prenosovej kapacity sieťových spojení.

Z reklamy pay-per-view, ktorú si aj tak všetci užívatelia dávno zablokovali, sa stala pay-per- click kontextová reklama, ktorá ľudí naopak zaujíma.

Weby optimalizujeme pre človeka, nie pre konkrétny prehliadač. Nastal návrat od vnorených tabuliek k pôvodným zámerom HTML značkovania – sémantike, prístupnosti a dodržiavaniu štandardov.

Portály vyvíjame v integrovaných vývojových rozhraniach (IDE) a frameworkoch miesto textových editorov.

Rozšírila sa ponuka implementačných platforiem, pred rokom 2000 boli k dispozícii ASP, JSP, CGI a jeho vyslanci v podobe jazykov Perl a C, dnes máme na výber navyše aj z Python, PHP, Ruby, C#...

Po vážených programátorských guru z dôb mainframov vstupujú na scénu teenageri vyzbrojení návodmi ako vytvoriť prvý formulár v PHP. Vznikli nové metodiky vývoja aplikácií, ktoré lepšie zodpovedajú potrebám vývoja webu – agilné programovanie, extrémne programovanie.

(10)

Zrýchlil sa vývojový cyklus projektov, napríklad Flickr.com je schopný nasadzovať úpravy kódu podľa potreby každých 30 minút [2].

Z čitateľov webu sa stávajú spoluautori. Novinkou sú kolaboratívne spravodajské servery ako Slashdot.org či Digg.com, či fenomén wiki.(pozn. takzvané Wiki-wiki autobusy sú prvé, s čím sa stretne turista po prílete do Honolulu :-)

Po dlhom období pôstu sa v oblasti webových užívateľských rozhraní (user interface - UI) objavila nádejná novinka nazývaná skratkou AJAX (zo slovného spojenia Asynchronous JavaScript and XML), ktorá približuje spôsob práce s webovými rozhraniami rozhraniam osobných počítačov.

Medzi odbornou verejnosťou sa pre tento postupný prerod vžil pojem Web 2.0. Osobne by som sa tomuto termínu s prihliadnutím na tendenciu spočiatku preceňovať význam nových trendov rád vyhol a ešte určitý čas (rok, dva) s jeho používaním počkal. Dôvodom je obsahová nestálosť tohto pojmu k dnešnému dátumu [3]. Prídomok „beta“ sa nachádza v názve na obrázku oprávnene:

Obrázok 1: "Mrak" kľúčových slov v okolí pojmu Web 2.0 (zdroj http://commons.wikimedia.org/wiki/Image:Web20_en.png)

(11)

3 Aktuálne trendy všeobecne

Za obdobie od roku 2003 až do súčasnosti môžeme vypozorovať viacero výrazných trendov, ktoré sa osvedčili aj v konfrontácii s časom. Naša pozornosť sa tradične upiera najmä na americké dianie, keďže do USA sa sústredí väčšina inovácií nielen z oblasti webov [4]. Aj v tomto období zažil Internet dramatické premeny, ktoré viedli k zvýšeniu užívateľského komfortu a záujmu o Internet ako taký. Vymenujme aspoň niektoré z nich.

3.1 Koncepčné zmeny

Tieto zmeny sú svojím dopadom najvýznamnejšie, pretože zmenili spôsob, akým sa web používa a ako sa v Internete šíria informácie. Prispeli k vyššiemu komfortu používania (prínos pre

užívateľov), zvýšeniu záujmu o web i k väčšej efektivite podnikania na webe (reklama, počty návštevníkov...)

3.1.1 Personalizácia obsahu

Čoraz viac serverov a služieb na Internete vyžaduje pre používanie služby autorizáciu pomocou užívateľského mena a hesla, respektíve pomocou e-mailovej adresy. Takáto autorizácia je často priamo spojená s možnosťou uchovať si informácie o prihlásení napríklad pomocou cookies, čo znamená, že odpadá nutnosť prihlasovať sa k službe pri každom prístupe.

Výhody tohto prístupu spočívajú najmä v:

možnosti nastaviť si personalizované rozhranie služby (nastavenie vizuálnej témy, voliteľné rubriky, príjem iba požadovaných správ, niekedy dokonca možnosť použiť vlastné šablóny pre zobrazenie webu)

urýchlení použitia služby (odpadá nutnosť opakovanej autorizácie) a tým pádom zvýšení spokojnosti s používaním

personalizovanom zacielení reklamy (GoogleAds), ktorá sa zobrazuje pri používaní služby (áno, i to je výhoda pre užívateľa)

Veľkou neznámou, ktorá vyvoláva obavy u personalizovaných služieb je ochrana súkromia. Nikto nevie, aké informácie v skutočnosti server o svojich užívateľoch zhromažďuje a hlavne, ako ich v budúcnosti použije. Na jednej strane sa zberom užívateľských zvykov a vzorcov pri „surfovaní“ dá zvýšiť kvalita služby (zobrazovanie obsahu, ktorý lepšie zodpovedá našim záujmom), na druhej strane by v budúcnosti mohol slúžiť na kompromitáciu užívateľa [5]. Čas ukáže, snáď sa viac o tejto problematike dočítate u niektorého z mojich nasledovníkov.

(12)

3.1.2 Zmena distribúcie informácií – RSS, blogy, užívateľský obsah

V období, ktoré som si stanovil ako interval, na ktorom vymedzíme zmeny na webe, nastala jedna podstatná zmena v šírení informácií, ktorú priniesli dva významné fenomény: syndikácia

(združovanie) obsahu a blogy. Zmena distribúcie informácií spôsobená týmito javmi spočíva v zmene získavania informácií, kedy užívateľ nemusí prechádzať desiatky serverov za účelom získať špecifické informácie, ale pristupuje k obsahu týchto serverov cez jeden centralizovaný bod a síce svoju čítačku syndikovaných správ (RSS – Really Simple Syndication). Z pohľadu užívateľa tak informácie nie sú roztrúsené po webe, ale nachádzajú sa na jednom mieste. Moje osobné skúsenosti z používania RSS čítačky hovoria, že tento prístup síce zvyšuje náchylnosť na konzumovanie informácií, no urýchlenie uspokojovania mojich informačných potrieb vyvažuje tento nedostatok.

Druhý z fenoménov, blogovanie, do určitej miery narušil informačný monopol klasických médií (v našom ponímaní medzi ne patria i internetové spravodajské servery) [6], decentralizoval

spravodajstvo a s pomocou RSS sa v dostupnosti dostal na úroveň klasických zdrojov správ (v RSS čítačke sú všetky zdroje vizuálne reprezentované rovnako). Význam blogov ako nositeľov správ nespočíva v úplnosti či presnosti pokrytia diania vo svete, ale v schopnosti poskytnúť subjektívny pohľad zainteresovaného jednotlivca na danú problematiku. S narastajúcim množstvom blogov však rastie podľa Murphyho zákona, kde kvalita x kvantita = konštanta, aj pravdepodobnosť, že človek narazí na „nepodarok“. Ostáva teda na jednotlivcovi, z akého zdroja bude informácie prijímať, blogy však ponuku voľne dostupných informačných zdrojov určite rozšírili.

V minulosti sa o webe hovorilo ako o read-only médiu. Spolu s príchodom kolaboratívnych projektov ako Wikipedia.org sa tento pohľad zmenil, nastal posun v chápaní webu ako média, ktorého obsah môže ovplyvniť každý užívateľ.

3.1.3 Sociálne siete na Internete

Weby tejto kategórie momentálne zažívajú svoj najväčší rozmach (za prielom za považuje úspech servera Friendster.com [7]). Spadajú sem diskusné servery, chatovacie servery, fotogalérie a vo všeobecnosti akékoľvek weby, ktoré podporujú interakciu medzi svojimi užívateľmi. Interakcia je realizovaná zväčša pomocou služieb ako zakladanie diskusných tém, súkromná pošta medzi užívateľmi, hodnotenie a komentáre k užívateľom, možnosť nahrávať audiovizuálny materiál, vytváranie záujmových skupín atď. Dokladom úspešnosti tohoto trendu je fakt, že i servery, ktoré tieto služby predtým neposkytovali, dopĺňajú postupne svoje portfólio.1 Z pohľadu prevádzkovateľa je atraktívna najmä vysoká návštevnosť a tým pádom vysoký počet zobrazení reklamy. Na serveri www.techno.cz, ktorý spravujem, sme pridali diskusné fóra počiatkom roku 2004 a v súčasnosti ide

1 Aj študenti VŠE už majú social network - www.vseborec.cz

(13)

po titulnej stránke o najnavštevovanejšiu sekciu serveru. Porovnajme počet zobrazení sekcie diskusné fóra za obdobie 07/2004 (pol roka po spustení) a obdobia 07/20062:

sekcia celkom úvodná stránka sekcie hlavná stránka techno.cz

obdobie 07/2004 69 147 36 162 179 667

obdobie 07/2006 251 396 75 943 183 524

nárast počtu zobrazení (%) 264 110 -

Tieto údaje by sa dali interpretovať takto: počas dvoch rokov stúpol počet zobrazení diskusných fór vyše dvaapolkrát a ich úvodnej stránky jedenkrát. Znamená to, že sa zvýšila aktivita užívateľov vo vnútri sekcie. V porovnaní s titulnou stránkou došlo tiež k nárastu aktivity, priamy výpočet nárastu zobrazení u titulky by nebol príliš informatívny, pretože v roku 2005 prebehol redesign a zmena štruktúry hlavnej stránky techno.cz.

Jednými z najúspešnejších sociálnych sietí je trojica (ako inak) amerických webov Flickr.com, del.icio.us a MySpace.com. U MySpace.com ide o štandardnú koncepciu sociálnej siete, zvyšné dva si v krátkosti predstavíme. Spoločným menovateľom je však užívateľská prívetivosť a komfort.

Flickr.com je zdieľaný fotoalbum, ktorý príkladom podarenej koncepcie a intuitívnosti (možnosť tagovania fotografií a vyhľadávania podľa tagov), dobrej sociálnej interakcie (možnosť vytvárania zoznamov priateľov, komentárov, zdieľania fotografií...), pokročilých technológií ako AJAX alebo cool URIs (viac o CoolURIs v kapitole 3.3) a dobre dokumentovaného aplikačného programového rozhrania (API), ktoré umožňuje alternatívne spôsoby práce s obsahom Flickru. Silnou stránkou Flickr.com je i dobrý obsah, fotografie majú často vysokú kvalitu i umeleckú hodnotu.

del.icio.us je založený na zdieľaní www odkazov (bookmarks) medzi užívateľmi. Rovnako ako Flickr používa pri prechádzaní obsahu tagy a cool URIs. Na titulnej stránke má návštevník možnosť zobraziť buď najčerstvejšie, či najpopulárnejšie odkazy, alebo najpoužívanejšie tagy. Silnou

stránkou del.icio.us je práca s tagmi a parametrami vyhľadávania (popular, recent), pretože sú súčasťou URL stránky. Napríklad – populárne odkazy na tému web 2.0 zobrazíme zadaním URL v tvare: http://del.icio.us/popular/web2.0

Spoločným znakom Flickr.com a del.icio.us je využitie tagov na kategorizáciu obsahu. Užívatelia značkujú obsah podľa uváženia, čím sa po postupom času vytvorí štruktúra. Tento prístup (zvaný

„folksonomy“) je v protiklade s rigídne stanovenou štruktúrou („taxonomy“) [8].

2 Zdroj dát – štatistiky návštevnosti na http://www.techno.cz/awstats/awstats.pl

(14)

3.2 Implementačné zmeny

Spolu s technologickým pokrokom prichádzajú aj zmeny v spôsobe tvorby webov samotných. Tieto zmeny sú bežnému návštevníkovi zväčša skryté, no v programátorskej komunite sa preberajú dnes a denne. Významným míľnikom pri zavádzaní nových implementačných zmien sa stalo uvedenie stabilnej verzie prehliadača Mozilla v roku 2003. Vďaka tomuto kroku sa vývojárom dostal do ruky silný nástroj pre testovanie webov, či už kvôli dobrej podpore W3C štandardov alebo množstvu vývojárskych rozšírení.

V realizácii webu sa v súčasnosti sa výrazne dbá na prístupnosť i pre užívateľov s postihnutím, ktorí k obsahu na webe využívajú pomôcky ako Braillove riadky, hlasové syntetizéry apod. Potrebu sprostredkovať obsah webov štátnej správy aj takýmto užívateľom ošetrilo Ministerstvo

Informatiky v článku „Best practice - Pravidla pro tvorbu přístupného webu“ [9], ktorý vznikol v nadväznosti na zákon č. 365/2000 Sb. o informačních systémech veřejné správy.

Ďalším trendom je rozšírenie tzv. sémantického webu. Podstatou sémantického webu je zámer vytvoriť univerzálne médium na výmenu informácií pomocou umiestnenia dokumentov v sémanticky správnej forme na WWW [10]. Pre samotné webové stránky to znamená využívať HTML značiek v ich pôvodnom význame (napr. <h1>Text nadpisu</h1> miesto <div

class=“nadpis1“>Text nadpisu</div>). Čiastočný podiel má na tomto trende i Google, po tom, čo sa zistilo, že algoritmus Google PageRank zohľadňuje i správnu štruktúrovanosť dokumentu [11].

Pri tvorbe sémantických a prístupných webov sa hojne využíva formátovanie pomocou

kaskádových štýlov CSS, čo prináša úsporu HTML kódu a oddelenie obsahu od formy, na druhej strane musia tvorcovia bojovať s rozdielnou interpretáciou CSS štýlov v rôznych prehliadačoch.

V honbe za návštevnosťou mnoho stránok zaviedlo SEO – Search Engine Optimisation, čo je súbor metód, ktoré vedú k vylepšeniu hodnotenia stránky „v očiach“ vyhľadávačov [31]. Opomenúc nečisté praktiky ako odkazovanie sa na vlastnú sieť serverov a naopak či podvrhnutý obsah, medzi najčastejšie techniky SEO patrí:

použitie unikátneho a relevantného titulu a nadpisu pre každú stránku

nahradenie všeobecnej a vágnej terminológie konkrétnymi slovami, ktoré sú relevantné k téme stránky

zvyšovanie podielu jedinečného obsahu

písanie obsahu pre ľudí, nie vyhľadávacie stroje

použitie relevantných a presných metadát v stránkach

(15)

používanie cool URIs, keďže názov stránky reflektuje obsah stránky určite lepšie, než jej číslo v databáze.

V súčasnosti patrí takpovediac k „bontónu“ či dokonca k stavovskej hrdosti, aby kvalitne spracovaný web spĺňal kritériá prístupnosti, zodpovedal štandardom konzorcia W3C (platné X/HTML, platné CSS, WAI) a používal design založený na CSS štýloch.

3.3 Technologické zmeny

Pri implementácii webov sa za nami sledované obdobie znova rozšíril počet používaných nástrojov a postupov. Pribudli vývojárske frameworky, databázové systémy, aplikačné platformy.

Vo vývoji webových aplikácií v súčasnosti definitívne prevládajú vysokoúrovňové a interpretované programovacie jazyky, ako PHP, Perl, Python apod. Výhodou týchto jazykov je okamžitá zmena fungovania aplikácie bez nutnosti rekompilácie zdrojových kódov, menej striktné typovanie premenných a dostatočne široké syntaktické možnosti (OOP, výnimky, všetky obvyklé typy premenných).

Proti spomínaným open-source možnostiam stojí vývojová platforma Microsoft .NET, ktorá od svojho uvedenia v roku 2002 zaznamenala výrazný nástup. Príčinu úspešnosti .NETu možno vidieť jednak za veľkou marketingovou silou Microsoftu, ale hlavne v schopnosti poskytnúť spolu so zmieňovanými výhodami open-source riešení navyše i komplexné vývojové a produkčné prostredie v integrovanej podobe (IDE, prostredie pre beh a ladenie, množstvo hotových komponentov,

technickú podporu), čo je veľkou konkurenčnou výhodou v porovnaní s open-source produktmi. Tie často už zo svojej podstaty trpia roztrieštenosťou užívateľskej základne a množstvom nedokonalých komponentov miesto jedného osvedčeného riešenia.

V oblasti úschovy dát dominujú relačné databázové systémy (RDBMS), vo odvetví webov vládne MySQL (bližšie o MySQL v kapitole 5), v prípade, že firma disponuje podnikovou databázou, prispôsobí sa výstup na web týmto podmienkam, ku všetkým rozšírenejším DBMS existujú ovládače a rozhrania pre prepojenie so zvoleným jazykom.

Veľké množstvo nových webov využíva takzvané Cool URIs [12]. Pomocou tejto techniky docielime jednoducho zapamätateľné a v zmysle SEO vhodnejšie tvary URL (pretože obsahujú kľúčové slová). Nie je to síce najzásadnejšia technológia moderného webu, ale má sčasti podiel na popularite webových aplikácií ako už zmieňovaný Flickr.com či del.icio.us. Na jednoduchom príklade uvediem rozdiely:

(16)

tradičný formát adresy dynamickej stránky:

http://www.stranka.com/show_page.php?section=guestbook&show=dnes Cool URIs - vylepšený formát:

http://www.stranka.com/kniha-navstev/dnes/

3.4 Trendy číselne

Nenechajme sa zmiasť hystericky oslavnými blogmi a spravodajstvom, ktoré pasie po každej senzácii. Infomatici pracujú s (minimálne dvoma) číslami a preto si priblížme popularitu toho- ktorého trendu z tejto kapitoly číselne:

Blogy – server Technorati.com momentálne indexuje 51,8 milióna blogov [13].

RSS – množina RSS feedov je zjednotením množín RSS z blogosféry, RSS štandardných médií a korporátnych RSS, čiže počet RSS prevyšuje počet blogov.

Významné sociálne siete na Internete majú dohromady vyše 400 miliónov užívateľov [14] z celkovej 1 miliardy užívateľov Internetu [15]. Počítajme s prelínaním užívateľskej základne medzi servermi a rôznymi metodikami počítania užívateľov, ale i číslo povedzme 200 miliónov je vysoké (zhruba polovica obyvateľstva EU).

AJAX podporujú veľkí hráči na webe, spomeňme aspoň piatich miláčikov publika: Google (služby Maps, Gmail, Suggest), Microsoft (MSN Spaces, Live.com), Flickr, Apple (Apple Store), Amazon (vyhľadávač A9) [16].

CSS a SEO weby – číselne vyjadrené mnoho, pre ilustráciu stavu na českom trhu si čitateľ môže prejsť portfóliá členských firiem profesnej organizácie Asociace.biz3 a zistí, že takmer všetky nové weby implementujú tieto trendy.

3 http://www.asociace.biz/clenove.htm

(17)

4 Vybrané open-source technológie

Vzhľadom na obmedzený rozsah práce nie je možné popísať bližšie všetky trendy spomenuté vo všeobecnej časti. Ak som v predošlých kapitolách málo operoval so pojmom open-source software (OSS), teraz prichádza jeho chvíľa. Open-source software sa s konečnou platnosťou etabloval ako životaschopná alternatíva ku komerčným produktom, čoho dôkazom je existencia všeobecne používaných OSS produktov. Medzi najúspešnejšie patria nesporne súčasti LAMPu, čiže Linux, Apache, MySQL a PHP (dá sa povedať, že i v tomto poradí), ďalej SMB server Samba, kancelársky balík OpenOffice, prehliadač Mozilla, technológia zdieľania obsahu BitTorrent, systém pre správu verzií CVS, J2EE aplikačný server JBoss atď. Z dôvodov vysokej popularity a môjho zamerania sa oblasť open-source volím do obmedzeného priestoru práve OSS produkty.

Do výberu technológií v tejto kapitole boli zahrnutí dvaja blízki konkurenti jazyka PHP, čo do zamýšľaného použitia – Python a Ruby a k nim technológia AJAX ako predstaviteľ čerstvého a progresívneho spôsobu tvorby užívateľských rozhraní na webe. U Ruby a Pythonu uvediem porovnanie s PHP na úrovni dostupnosti programových komponentov, univerzálnosti použitia a zhodnotím prípadnú nahraditeľnosť jazyka PHP v platforme LAMP jazykom Python, respektíve Ruby, prípadne uvediem porovnanie v ďalších zaujímavých oblastiach. Vývoj AJAX rozhraní skrýva mnohé úskalia, o ktoré sa môže roztrieštiť dobrá vôľa vývojára, ak si nedá pozor, ale aj o nich si napíšeme.

4.1 Python

4.1.1 Predstavenie jazyka, použitie

Python je univerzálny vysokoúrovňový, interpretovaný jazyk, ktorý predstavil verejnosti v roku 1990 Holanďan Guido Van Rossum. Momentálne jeho vývoj zastrešuje Python Foundation a Van Rossum sa podieľa na vývoji ako „benevolentný diktátor“. Python sa často charakterizuje ako minimalistický jazyk v otázkach syntaxe a sémantiky, no štandardná knižnica (standard library) poskytuje dostatočné množstvo funkcií a rozšírení. Van Rossum [17]:

„Python has a „batteries included“ philosophy. This is best seen through the sophisticated and robust capabilities of its larger packages.“

(18)

V procese vývoja kladie Python dôraz na úlohu programátora, nie jazyka samotného. To sa

napríklad prejavuje faktom, že kód nie je príliš rýchly (už len preto, že je interpretovaný), ale zato je dobre zrozumiteľný (viď ukážka kódu). Otázka rýchlosti kódu sa síce dá riešiť kompilovaním do binárnej podoby, čo Python umožňuje, ale zároveň užívateľ prichádza o výhodu vývoja formou rýchleho testovania.

Ukážka programu napísaného v Pythone, ktorý spočíta počet prvočísel v intervaloch od 2 do 2N × 10000, resp. 2N-1 × 10000, resp. 2N-2 × 10000:

Zdroj: [18]

# nsieve benchmark for The Computer Language Shootout

# Written by Dima Dorfman, 2004

# import knižníc z balíka itertools

from itertools import count, islice, izip

# definícia funkcie, obsahuje algoritmus Erastothenovho sita def nsieve(m):

a = [1] * m n = 0

# tu začína cyklus for

for i, x in izip(count(2), islice(a, 2, None)):

if x:

a[i + i::i] = (0,) * (m // i - 2 + (not not m % i)) n += 1

# tu končí cyklus for return n

# spustí test def test(n):

m = (1 << n) * 10000 count = nsieve(m)

print 'Primes up to %8d %8d' % (m, count)

# hlavná obslužná funkcia def main(n):

if n >= 0:

test(n) if n >= 1:

test(n - 1) if n >= 2:

test(n - 2)

# ak sa kód spúšťa v príkazovom riadku (nie je sám predmetom importu)

# spusti funkciu main() if __name__ == '__main__':

import sys

main(int(sys.argv[1]))

Univerzalita Pythonu spočíva v množstve a veľkej škále použití. Narozdiel od PHP nebol strhnutý

(19)

vlnou záujmu iba k použitiu na webe a dočkal sa knižníc a rozhraní, o ktorých sa jazyku PHP ani nesníva. Nasadenie Pythonu je vskutku univerzálne, niekoľko príkladov pre ilustráciu:

Najznámejším propagátorom použitia Pythonu je v súčasnosti firma Google, kde sa Python používa na vývoj frontendov aplikácií ako Google Maps, Google Mail, neváha však Python použiť ani pri implementácii aplikačnej logiky. Python sa v Google používa všade tam, kde nie je potrebná rýchlosť jazyka C++ [19].

wxPython a PyGTK – multiplatformné GUI knižnice, ktoré umožnili jednoduchý vývoj a portovanie grafických aplikácií postavených na Pythone.

BitTorrent, protokol a aplikácie vhodné pre zdieľanie veľkých objemov dát, ktorý inovoval spôsob zdieľania obsahu v P2P sieťach a momentálne sa snaží preraziť do distribúcie plateného obsahu. Postavený nad PyGTK.

Portage – systém pre správu inštalačných balíkov v linuxovej distribúcii Gentoo fungujúci v príkazovom riadku. Drobný súkromný postreh: u Gentoo je jasne vidno progres v technických nástrojoch súčasnosti – kým všetky ostatné distribúcie sú závislé na Perle, Gentoo je závislé na Pythone, čo sa dá chápať ako prechod od tradičného k modernému.

A keďže píšem prácu o trendoch na webe, nakoniec tu máme i frameworky pre vývoj webových aplikácií, CherryPy a TurboGears. CherryPy poskytuje vývojárovi okrem základných nástrojov pre prácu s webom (podpora sessions, práca s obrázkami, spracovanie GET a POST dát, prístup do DB a práca s reťazcami) i vlastný HTTP server a jednoduchú konfiguráciu jednotlivých aplikácií, navyše má prehľadnú syntax mapovania stránok na funkcie. Príklad jednoduchého mapovania [20]:

import cherrypy class HelloWorld:

def index(self):

return "Hello world!"

index.exposed = True

#zobrazenie stranky zabezpeci kontroler HelloWorld cherrypy.root = HelloWorld()

cherrypy.server.start()

TurboGears je v komplexnosti riešenia o úroveň vyššie než CherryPy a to integráciou viacerých komponentov do jednej aplikácie: JavaScriptová knižnica MochiKit + šablónovací systém Kid + CherryPy ako aplikačná logika + SQLObject. Tento framework implementuje návrhový vzor MVC, čo zvyšuje jednoduchosť správy kódu a prehľadnosť štruktúry kódu [21].

(20)

4.1.2 Kľúčové vlastnosti, výhody a nevýhody

Medzi kľúčové vlastnosti patrí univerzalita nasadenia – firma, ktorá používa Python, nie je odkázaná na určité odvetvie IS/ICT, v Pythone sa dá vyvinúť webový portál i plnohodnotná grafická aplikácia.

Dostupnosť vyspelého aplikačného serveru – Zope. Ak existuje vyspelé riešenie aplikačného servera pre určitú platformu, uľahčuje to vstup danej platformy do prostredia veľkých firiem, čo je oblasť s vyššou pridanou hodnotou pre dodávateľov (väčšie marže).

Python používa striktné formátovanie zdrojového textu pomocou odsadzovania od okraja, čo pomáha zlepšiť jeho čitateľnosť. Nemusia sa uplatňovať žiadne formátovacie konvencie, ktoré nesedia každému, toto riešenie zabezpečuje unifikovanú vizáž Pythonových skriptov, čo napríklad urýchľuje zoznamovanie sa s cudzím kódom – úspora času.

Orientácia na objektovo orientované programovanie (OOP), čo je z mojej skúsenosti ďalší krok k čistejšiemu kódu.

Za značnú nevýhodu považujem malú programátorskú základňu u nás. Predsa len, ako manažér firmy by som sa necítil dobre pri pomyslení, že bude obtiažne zohnať vývojárov na práve pridelenú zákazku od dôležitého klienta.

Python disponuje repozitárom hotových komponentov Python Cheese Shop, ktorý k dnešnému dňu (16.8.2006) obsahuje 1563 položiek. Hoci samotné číslo nič nevypovedá o kvalite obsiahnutého software, už len čisto zo štatistického hľadiska sa v ňom musia vyskytovať aj kvalitné položky.

S ohľadom na uvedené skutočnosti by mohol Python nahradiť PHP v platforme LAMP. Pre nasadenie hovorí predovšetkým univerzalita, množstvo komponentov a pokročilejšia komunita (Python je jazyk, s ktorým sa užívatelia väčšinou stretnú až po PHP) než u PHP, proti nasadeniu zase hovorí nižšia popularita medzi tuzemskými vývojármi.

4.1.3 Výhľad do budúcnosti

Python ako univerzálny webový jazyk našej dekády svoju šancu nedostal. Prevalcovala ho popularita PHP na začiatku 21. storočia a Python tak pravdepodobne aj naďalej zotrvá v úlohe mladšieho brata PHP. I do budúcnosti však platí univerzalita, ideologická stálosť (minimalizmus, preferencia užívateľa pred jazykom) a v porovnaní s PHP elitnejšia užívateľská základňa, čo môže v budúcnosti priniesť nejedno zaujímavé riešenie. Ostane tak jazykom pre „fajnšmekrov“, ktorý svoje uplatnenie nájde v projektov závisiacich na precíznosti riešenia.

Zostáva ešte jedna nezodpovedaná otázka a síce úloha veľkých hráčov pri propagácii Pythonu. Ak

(21)

mohol Microsoft v priebehu pár rokov vyniesť na výslnie svoj .NET, prečo by to isté nemohol urobiť jeho priamy konkurent Google s Pythonom?

4.2 Ruby/Ruby On Rails

Ruby je najmladším z prezentovanej trojice jazykov. Pomerne dlho sa zostával v úzadí, popularitu mu zaistil až webový framework Ruby On Rails, ktorý je natoľko zaujímavým produktom, že si v mojej práci zaslúži umiestniť na roveň samotnému Ruby.

4.2.1 Predstavenie jazyka, použitie

Ruby je vysokoúrovňový interpretovaný jazyk, ktorého vývoj sa datuje do roku 1995. Má podobné ciele v prístupe k uživateľovi ako Python a podobný osud ako Python vo vzťahu k PHP. Narozdiel od Pythonu či PHP je syntakticky bohatší a flexibilnejší i bez prídavných knižníc. Ruby je výrazne objektovo-orientovaný, všetky dáta sú považované za objekt. Ukážka rovnakého kódu ako v Pythone [22]:

# nsieve benchmark in Ruby.

# definícia funkcie Erastothenovho sita def sieve(m)

flags = "\x1" * m count = 0

pmax = m – 1

2.step(pmax, 1) do |p|

if flags[p] == 1 count += 1

p.step(pmax, p) do |mult|

flags[mult] = 0 end

end end count end

n = (ARGV[0] || 2).to_i

n.step(n - 2, -1) do |exponent|

break if exponent < 0 m = 2 ** exponent * 10_000 count = sieve(m)

printf "Primes up to %8d %8d\n", m, count end

Orientácia na užívateľa sa v Ruby prejavuje tým, že bol navrhnutý tak, aby nasledoval „princíp najmenšieho prekvapenia“, čo znamená, že jazyk sa správa tak, ako predpokladá programátor, že sa bude správať [23]. K tomu mu dopomáha syntaktická pestrosť a tým pádom možnosť voľby

postupu pri písaní zdrojového kódu.

(22)

4.2.2 Ruby On Rails

Významný podiel na popularite jazyka Ruby nesie webový vývojový framework Ruby On Rails (alebo len Rails). Názornú ukážku popularity nájdeme pri použití aplikácie Google Trends, kde môžeme porovnať trendy vyhľadávania kľúčových slov „ruby language“ a „ruby on rails“. Body A, B, C … znamenajú uverejnenie dôležitého textu na tému Ruby On Rails na Internete, pre

porovnanie popularity na Google sú však nepodstatné.

Čím si Rails vydobyl pozornosť programátorskej obce? Ako väčšina frameworkov, aj Rails sa snaží uľahčiť rutinné činnosti programátora, aby svoju energiu mohol investovať do písania samotnej logiky aplikácie, nie do neustáleho písania SQL dotazov a nekonečných cyklov. Rozdiel je však v úrovni integrácie jednotlivých komponentov a postupov vo frameworku, kedy sa rôzne časti frameworku ovládajú niekoľkými málo príkazmi. Tu je niekoľko kľúčových vlastností, žiadna z nich nie je sama o sebe prevratná (existujú vo väčšine moderných frameworkov), podstatná je ich integrácia do jedného celku:

Don't Repeat Yourself – každá definícia (konfigurácie, triedy atď) existuje v Rails iba raz.

Convention over Configuration – Rails, tak ako jazyk Ruby samotný sa správa tak, ako by to od neho vývojár očakával. Dokladom toho je použivanie menných konvencií, napríklad ak sa trieda v modeli volá Komentáre, tabuľka v databáze a konfigurácia sa tiež bude volať Komentáre. Z osobnej skúsenosti poznám, že používanie menných konvencií pri pomenovaní entít v aplikácii sa vypláca kvôli rýchlej orientácii v kóde, pretože odpadá nutnosť dohľadávať v hlave (alebo na

Obrázok 2: Porovnanie vyhľadávania kľúčových slov na Google (zdroj http://www.google.com/trends)

(23)

displeji), čo k čomu patrí.

Orientácia na MVC dodáva projektom vytvoreným v Ruby on Rails unifikovaný vzhľad adresárovej štruktúry a moderný a štandardný spôsob vývoja aplikácií.

Scaffolding a generátory – samotný názov lešenie hovorí za seba. Jediným príkazom sa napríklad dá vygenerovať celá infraštruktúra na prácu s položkami v databáze, čiže výpis položiek, zobrazenie detailu položky a formulár pre úpravu jednotlivých stĺpcov položky (tzv.

CRUD operácie – create, read, update, delete). Takto jednoducho postavíme lešenie okolo stavby budúceho webu a postupným pobiehaním po lešení je možné upravovať časti stavby (formátovanie výpisu, ošetrenie vyplnenia povinných polí v zázname, stránkovanie, pridanie metódy v modeli atď.).

Interaktívna debuggovacia konzola je silným nástrojom pri ladení aplikácie. Samotný Ruby podporuje breakpointy, takže ladenie je pohodlnejšie než napríklad u PHP.

Unit testy priamo v balení a predgenerované spolu s každou triedou typu Model.

“Ruby on Rails is a breakthrough in lowering the barriers of entry to programming. Powerful web applications that formerly might have taken weeks or months to develop can be produced in matter

of days.”

Tim O‘Reilly, Founder of O‘Reilly Media4

4.2.3 Kľúčové vlastnosti, výhody a nevýhody

Ruby Application Archive – kto nepoužíva Ruby On Rails, neprichádza o možnosti Ruby samotného, rozsiahla aplikačná knižnica poskytuje dostatočné množstvo komponentov a knižníc. K dnešnému dňu (18.8.2006) je to 975 knižníc a 459 aplikácií.

Univerzalita jazyka Ruby je v porovnaní s PHP vyššia, čo je dané syntaktickou bohatosťou a rozsiahlosťou RAA. Situácia je podobná ako u Pythonu, Ruby nie je tak jednoúčelový jazyk (PHP síce tiež nie, ale pomer používania web : iný typ aplikácií je narozdiel od Ruby a Python veľmi vysoký)

Výhradne objektovo orientovaný prístup, čiže prehľadnejšia organizácia kódu a viac

premýšľania pri programovaní. Zároveň sa dá povedať, že OOP prístup otvára cestu k použitiu CASE nástrojov v procese vývoja, čo je nevyhnutnosť u veľkých projektov.

4 http://www.rubyonrails.org/

(24)

Nie všetkým mladým, nadšeným Web 2.0 programátorom bude vyhovovať syntax Ruby.

Svojou zložitosťou totiž úspešne doháňa lingvistický klenot Perl a preteky v minimalizme zápisu a hustote syntaxe nie sú tou pravou cestou pri naháňaní nových ovečiek.

Existencia Ruby On Rails je obrovskou výhodou pre celú komunitu, najmä kvôli pozornosti, ktorú na seba obracia. To prináša šancu, že na báze Ruby vzniknú ďalšie podobne úspešné projekty.

Techniky ako scaffolding podporujú agilné programovanie, hlavne v zmysle rýchleho iterovania vývoja aplikácie a rýchleho získania náhľadu do funkcionality aplikácie.

Výraznou nevýhodou Ruby On Rails je jeho relatívna mladosť. Projekt vznikol v roku 2004, do povedomia širokej verejnosti sa dostal až v druhej polovici roku 2005 (viď graf z Google Trends, obr. 2). Z mladosti kódu vyplýva nedostatočné otestovanie5 a takisto nedostatočná korelácia s potrebami trhu, proste je to koncept bez dostatočne veľkej spätnej väzby od dostatočného množstva vývojárov.

A nakoniec rovnaký problém ako u Pythonu – nedostatok ľudských zdrojov v našich končinách.

Kto sa však snaží, (v Tróji a na Strahove) nájde a spolu s možným rozšírením Rails sa tento problém zmenší.

4.2.4 Výhľad do budúcnosti

Momentálne sa väčšina diania na poli Ruby točí iba okolo Ruby On Rails, ktorý má veľký potenciál časť trhu získať pre seba, ale na druhej strane tento záujem i rýchlo stratiť. Mladosť projektu a nedostatok spätnej väzby sa premieta v stále nezodpovedaných otázkach ohľadom produkčného nasadenia, napríklad nakoľko je to škálovateľné riešenie (beží v CGI/FastCGI) či neexistencii IDE plne využívajúceho možnosti Rails.

V tejto chvíli chýba frameworku Rails dôkladné otestovanie a stret s väčším množstvom vývojárov a ich pripomienok. Týmto dospeje Rails k stabilizovaniu svojho kódu a zistí sa, ktoré z jeho

vlastností trh žiada a naopak, čo ešte chýba, resp. treba upraviť. V prípade, že sa Rails nevysporiada s týmito nedostatkami, čaká ho ústup z výslnia.

V otázke samotného Ruby ako náhrady jazyka PHP v hypotetickej platforme LAMR som pomerne skeptický. Pridaná hodnota jazyka samotného oproti PHP je nízka, zložitá syntax a problémy spojené s prechodom na inú platformu nemajú adekvátnu protiváhu na strane pozitív. V otázke dostupnosti komponentov má Ruby navrch, ale masívna popularita PHP a jeho osvedčenosť v nasadení na webe je silný kaliber.

5 Napríklad 11.8.2006 bola objavená kritická zraniteľnosť

(25)

4.3 AJAX

4.3.1 Predstavenie

AJAX je technológia tvorby užívateľských rozhraní. Slovo AJAX predstavuje skratku slovného spojenia Asynchronous JavaScript and XML, čo presne vystihuje, ktoré technológie AJAX využíva:

W3C DOM (Document Object Model) implementáciu v JavaScripte na manipuláciu s HTML kódom zobrazovanej stránky a JavaScriptovú funkciu XMLHttpRequest na výmenu informácií so serverom. Ukážkovú implementáciu AJAXu môžeme nájsť (áno, už znova) u firmy Google, pomocou AJAXu sú zostavené rozhrania služieb Google Mail, Google Maps, AJAX sa uplatnil aj pri pomôcke Google Suggest, čo je automatické doplňovanie textu počas písania.

Porovnanie princípov zobrazovania webových stránok bez AJAXu a s AJAXovým UI.

Obrázok 3: Porovnanie fungovania tradičného a AJAXového UI (zdroj http://www.adaptivepath.com/publications/essays/archives/000385.php)

(26)

4.3.2 Dôvody rozšírenia a podstatné vlastnosti

Hlavným dôvodom rozšírenia AJAXu je fakt, že umožňuje tvorbu komfortnejších rozhraní na webe. Užívateľské rozhrania vytvorené pomocou AJAXu sa podobajú rozhraniam desktopových aplikácií, a to najmä rýchlosťou práce, keďže odpadá nutnosť opätovného načítania celej stránky a vyššou interaktivitou v podobe pridaných informačných prvkov ako progress-bary, informačné okná atď. Modelová situácia môže byť napríklad nákup v elektronickom obchode: klikneme na pridanie tovaru do nákupného košíka a miesto načítania celej stránky sa na pozadí pošle požiadavka serveru, medzitým sa uprostred obrazovky na zlomok sekundy objaví pruh „Čakajte prosím, vaša požiadavka sa spracováva“, ktorý zmizne po prijatí potvrdenia od serveru, že tovar bol pridaný a zobrazí sa dialógové okno s informáciou o výsledku operácie. Efektné a užívateľsky prívetivé.

4.3.3 Výhody a nevýhody

Výhody

Weby s AJAXovým užívateľským rozhraním sa omnoho príjemnejšie používajú a majú

rýchlejšiu odozvu. Táto výhoda sa naplno prejaví napríklad u intranetov alebo administračných rozhraní, kedy sa pracuje s určitými funkciami aplikácie opakovane a vo veľkom rozsahu (napr.

plnenie a úpravy položiek v e-shope). Úspora času je pri takomto opakovanom používaní aplikácii značná.

AJAX znižuje nároky na prenosovú kapacitu linky. Pri práci s AJAXovým rozhraním nie je potrebné zakaždým načítať celú stránku, po počiatočnom načítaní stránky a potrebných komponentov ďalej prebieha komunikácia so serverom vo veľkostiach rádovo jednotiek kilobajtov.

Knižnice pre prácu s AJAXom existujú pre väčšinu jazykov bežne používaných na webe a technika je na Internete dobre zdokumentovaná.

Priamy prístup k Web Services ako zdroju dát.

Nevýhody

Nekompatibilita so staršími prehliadačmi spôsobená absenciou funkcie XmlHttpRequest, či dokonca JavaScriptu. Je teda na zvážení výrobcu, či k svojej aplikácii poskytne i ne-AJAXové rozhranie a tak si zdvojnásobí prácu na tvorbe rozhrania alebo zníži použiteľnosť aplikácie.

Nižšia prístupnosť AJAXových rozhraní pre užívateľov s postihnutím, ktoré často nepodporujú JavaScript.

(27)

Obmedzené možnosti ladenia AJAXu, kedže komunikácia prebieha na pozadí a správy od serveru prijíma samotný browser, nie jeho užívateľ.

Horšia indexovateľnosť stránok s AJAXom a tým pádom vplyv na návštevnosť serveru, pretože často sa celé kusy stránky skrývajú v JavaScripte a hypertextové odkazy sú riešené ako

JavaScriptové udalosti. Tento nedostatok sa dá sa riešiť tak, že indexovateľné informácie budú nahrané už pri prvom prístupe na stránku, nie až z JavaScriptu.

Nutnosť dôkladne ošetriť prípad, kedy komunikácia so serverom zlyhá, aby sa užívatelia nestretli s neštandardným chovaním aplikácie

Neexistencia centrálneho bodu na Internete. Paradoxom existencie AJAXu je, že ho síce používa každý, ale nikto ho nevyvíja.

4.3.4 Výhľad do budúcnosti

Navzdory viacerým nevýhodám je AJAX veľkým kvalitatívnym krokom vpred a stojí za priazeň užívateľov vyvíjať AJAXové rozhrania. U tohto trendu predpokladám vysokú životnosť, pretože spolu s umiestňovaním čoraz väčšieho množstva aplikácií na web porastú i nároky na pohodlnejšie a efektívnejšie užívateľské rozhrania. Spolu s rozšírením AJAXu sa dočkáme sofistikovanejších vývojárskych prostriedkov a postupov, snáď i konkurenčného riešenia. Tak či onak, v budúcnosti bude nutné vybalansovať hranicu medzi oprávneným a nadmerným užívaním AJAXu v

rozhraniach, v žiadnom prípade by nemala byť obetovaná prístupnosť webu na úkor často bezúčelných grafických efektov.

(28)

5 Platforma LAMP (Linux, Apache, MySQL, PHP)

5.1 Predstavenie

LAMP je aplikačná plaforma pre prevádzkovanie webových aplikácií, ktorá obsahuje:

1. Operačný systém Linux 2. HTTP server Apache

3. Programovací jazyk PHP (občas sa uvádza i Python alebo Perl) 4. Relačný systém pre riadenie bázy dát MySQL

Spoločným znakmi týchto produktov je open-source podstata a vysoká popularita vo svojej kategórii i open-source komunite ako celku, dalo by sa povedať, že ide o open-source „all-stars“

tím. Jednotlivé komponenty sa dajú zamieňať za svojich konkurentov, bola by však škoda nevyužiť najmä kombinácie Apache, PHP a MySQL kvôli jej zladenosti a flexibilite.

Z OSS dokážeme postaviť mnoho variácií platformy LAMP za použitia alternatív ako *BSD systémy, Solaris, PostgreSQL, Firebird, Perl, Ruby, Python (dajú sa navzájom ľubovoľne

kombinovať), ale pre nasadenie malých až stredne rozsiahlych webov6 existuje pre porovnanie iba jedna ďalšia platforma a síce Microsoft (MS) .NET + MS SQL Server + MS Windows 2003 Server.

Java 2 Enterprise Edition (J2EE) je pri našom zameraní na sféru malých a stredných podnikov asi príliš veľké sústo.

Riešenie od Microsoftu sa v porovnaní s LAMP vyznačuje vyššou nadobúdacou cenou (a za každé rozšírenie sa platí), ponúka však kompletné vývojové rozhranie, neobmedzuje sa iba na vývoj webov a hlavne ponúka technickú podporu cez e-mail, diskusné skupiny alebo platenú telefonickú podporu, čo je výhoda, ktorá môže zavážiť napríklad pri tendri na zákazku od veľkého klienta, ktorý má striktné požiadavky na zabezpečenie behu aplikácie a riešenia prípadných problémov.

5.2 Dôvody rozšírenia, podstatné vlastnosti

Nízke nadobúdacie náklady a prítomnosť v každej *NIX distribúcii. Keďže LAMP je open- source, nákupná cena je nula a licenčné poplatky neexistujú. Začínajúce firmy začnú s LAMP a spolu s rastom firmy postupne škálujú podľa potreby i LAMP. Znamená to, že LAMP si priazeň svojich „zákazníkov“ vybuduje hneď na počiatku ich existencie a zároveň im dokáže dlho sekundovať.

6 To jest nie korporátnych portálov ako IBM alebo obchodov ako Amazon

(29)

Stabilita a bezpečnosť riešenia – vďaka svojej popularite podliehajú súčasti LAMP bedlivému dohľadu odbornej verejnosti a prípadné bezpečnostné zraniteľnosti a chyby sú odstránené v rádoch hodín. U žiadnej zo súčastí neexistujú detské choroby, produkty sú na trhu minimálne od polovice 90-tych rokov. Konfigurácia LAMPu umožňuje zabezpečenie systému a aplikácií na viacerých úrovniach – Linux: Grsec/PaX, chroot, IP Filter, šifrovanie súborových systémov, v Apache SSL, v PHP existuje safe_mode a obrana proti XSS (Cross-site scripting) a SQL injection, MySQL umožňuje prístup cez SSL atď.

Napriek svojej stabilite podlieha LAMP neustálemu vývoju, má širokú vývojársku základňu a podporu u veľkých hráčov (sponzoring projektov, tímy vydelené na vývoj OSS, uvoľňovanie svojich produktov ako OSS)

Široká podpora na Internete, či už vo forme dokumentácie, špecializovaných e-mailových konferencií alebo napríklad i platenej podpory ako v prípade MySQL.

Multiplatformnosť - AMP nájdete v každej linuxovej distribúcii, porty AMP existujú pre operačné systémy Win32, BSD klony, komerčné *NIX systémy od IBM alebo Hewlett- Packardu a ďalšie.

Jednoduchosť inštalácie a konfigurácie – buď pomocou správy balíčkov tej-ktorej distribúcie alebo grafickým inštalátorom vo Win32 systémoch.

Rozšíriteľnosť a flexibilita použitia – Apache podporuje veľké množstvo skriptovacích jazykov a disponuje užitočnými modulmi (SSL, auth, mime, proxy, rewrite, WebDAV), PHP má PEAR (PHP Extension and Application Repository) komponenty a aplikácie, Linux sa dá nainštalovať na PDA ale i 64-procesorový server v banke.

Škálovateľnosť LAMP riešenia – LAMP sa dá prevádzkovať na domácom kancelárskom počítači (koľkým ľuďom doma beží IBM WebSphere alebo Oracle?) i na 64-bitovom clusteri alebo SMP serveri. Ako vravia technici z Google: „We usually throw in some servers“ [19].

A nakoniec synergia riešenia: komponenty LAMPu nie sú technicky najvyspelejšie vo svojej kategórii (platí hlavne pre PHP a MySQL), sú však dostatočne dobré pre svoje predpokladané použitie, čo znamená, že akékoľvek produkty ašpirujúce ako náhradníci v platforme LAMP musia mať podstatne vyššiu pridanú hodnotu, aby boli začlenené alebo nahradili ten-ktorý komponent (viď Ruby a Rails).

5.3 Výhody a nevýhody

Vzhľadom na rozšírenosť je LAMP pre malé a stredné firmy najjednoduchšou cestou k vlastnému webu. Nájdite mi prosím webhostingovú službu bez podpory LAMP. Veľa šťastia.

Výhodou open-source povahy LAMPu nie sú nadobúdacie náklady, ale nezávislosť na

(30)

dodávateľovi software, tj. nenastane takzvaný „Vendor Lock-in“ [25]. Ak napríklad Microsoft ukončí podporu .NET, môže firma, ktorá sa sústredí na vývoj v .NET počítať s nutnosťou reštrukturalizácie svojej činnosti. Open-source software zostane pri živote a ak nie priamo vo vývoji, tak aspoň v štádiu záplatovania zraniteľností.

Dostupnosť ľudských zdrojov schopných pracovať s LAMP je ďalší z dôsledkov (a dôkazov) popularity tejto platformy.

Prítomnosť pomerne vyspelého OOP konceptu v PHP verzie 5 znamená, že bude možné posunúť vývoj na platforme LAMP bližšie k veľkým riešeniam.

Existencia viacerých IDE pre PHP, jedno je dokonca priamo od tvorcu PHP – Zend Studio.

MySQL je rýchla, disponuje dostatočne obsiahlou sadou funkcií (takmer kompletná množina ANSI SQL 99) na použitie na webe a dobrou internacionalizáciou.

MySQL buď neobsahuje v základnom balení alebo nemá odladené pokročilé funkcie ako fail- safe replikáciu, uložené procedúry a triggery, cudzie kľúče (tie majú iba InnoDB tabuľky) alebo OLAP (On-Line Analytical Processing), čo znamená, že nie je vhodná na nasadenie v

podnikovom prostredí.

PEAR na jednej strane obsahuje užitočné komponenty, na druhej strane je výber ešte vždy malý Obrázok 4: Ilustrácia dôvodov používania

open-source software (zdroj

http://www.computereconomics.com/article.

cfm?id=1043)

(31)

(cca tretinový oproti Ruby alebo Pythonu) a kompatibilita medzi verziami jednotlivých balíkov nie je zaručená (poznám bohužiaľ z vlastnej skúsenosti). Oproti Perlovskému CPAN alebo Ruby RAA je to výrazný handicap, na webe – mimo PEAR – sa však vyskytuje veľké množstvo balíkov a aplikácií, kde však užívateľ prichádza o komfort práce s balíčkovým systémom (PEAR, Ruby Gems ...)

PHP čiastočne doplatilo na svoju popularitu ako nástroja pre web absenciou komponentov pre iné použitia. Existujú síce projekty ako PHP-GTK, wxPHP, ale vývoj napreduje pomaly a reálny záujem príliš nevidno.

PHP nemal/nemá svoj vlastný Ruby On Rails (má iba napodobeniny), čo by mu prilákalo aj pochybovačov z radov pokročilých programátorov, ktorí ním pohŕdajú. Domnievam sa, že dôvody sú minimálne dva:

syntaktická chudoba v podaní PHP < 5.0.0 (5.0.0 vydané dňa 13.4.2005), kedy neexistovali prostriedky jazyka na implementáciu takého riešenia.

povaha PHP komunity, v ktorej je vysoký podiel tzv. „script kiddies“, u ktorých sa nedá očakávať rozjímanie nad pojmami typu MVC, ORM alebo OOP.

V súčasnosti však prichádzajú na scénu vyspelé frameworky ako Symfony, Mojavi alebo PHP On Trax, takže situácia sa môže v blízkej dobe zlepšiť. Nebude to však žiadna revolúcia, ako v prípade Ruby On Rails, užívateľská základňa PHP je príliš široká na to, aby bez podpory veľkého hráča vo veľkej miere prerazil sebelepší framework.

5.4 Výhľad do budúcnosti

Ústup LAMPu z čelných pozícií neočakávam tak skoro, synergia všetkých komponentov je silnejšia než superiorita konkurentov tej-ktorej súčasti, navyše LAMP zasahuje rozsiahlu časť trhu, od one- man-company po stredne veľké podniky. Linux je solídnou základňou pre prevádzku riešenia a ostatné komponenty ho suverénne dopĺňajú. Apache je natoľko stabilný a vyspelý komponent, že pokračuje v raste podielu na trhu i napriek svojmu 62% podielu [27].

Spolu s vyvinutím pokročilých vlastností očakávam pomalý presun ku komplexnejším riešeniam, na svoju chvíľu čakajú technológie ako virtualizácia prostriedkov počítača Xen, MySQL verzie 5.1 alebo nové webové PHP frameworky. Domnievam sa, že LAMP chytí ďalší dych spolu so

stabilizáciou a rozšírením používania PHP 5 a plánovanými novými funkciami MySQL, ktorú zatiaľ považujem z hľadiska enterprise možností za slabý článok LAMPu.

(32)

6 Prípadová štúdia nasadenia platformy LAMP

Táto kapitola obsahuje prípadovú štúdiu a súhrn skúseností s nasadením LAMP vo firme První Multimediální s.r.o., poprednej internetovej agentúre v ČR.

6.1 Predstavenie firmy a jej činností súvisiacich s používaním LAMP a OSS

První Multimediální s.r.o. je firma s 27 zamestnancami, ktorá sa zaoberá novými médiami. Jej hlavnou činnosťou je návrh, vývoj a správa internetových prezentácií mieru pre svojich klientov, no v poslednej dobe rastie podiel činností v obore internetového marketingu, najmä kreatívna a

technická príprava bannerových kampaní pre klientov firmy i partnerské reklamné agentúry. Ďalšou postrannou činnosťou je prevádzkovanie e-mailového serveru, DNS hostingu a webhostingu.

Hlavným oborom však zostáva kompletná dodávka webových riešení vrátane hostovania služby na serveroch firmy.

Platforma LAMP a jej časti sa teda vo firme používajú na:

prevádzku produkčných serverov – LAMP, pure-ftpd

prevádzku testovacích serverov – LAMP, CVS

e-mailové a antispamové servery – LAMP, Qmail, CyrusIMAP, ClamAV, Spamassassin, webmail

prevádzku DNS – LAP, bind, webové administračné rozhranie

DHCP server – L, dhcpd

centrálne zálohovanie serverov – L, rsync, bacula

monitoring sieťovej infraštruktúry – LAP, nagios

primary domain controller a zdieľanie súborov – L, Samba

vlastný web-based systém sledovania zákaziek – LAMP

6.2 História nasadenia LAMP

Firma vznikla v roku 1995, ale približne do roku 1997 bola hlavným oborom činnosti výroba multimediálnych prezentácií a CD. Zhruba v roku 1996 začal pozvoľný obrat k dodávaniu riešení na webe. Firma disponovala dvoma linuxovými servermi a prvé weby boli buď bez dynamického

(33)

obsahu, tj. statické HTML alebo CGI skripty napísané v Perle. S rastúcim objemom zákaziek vznikla potreba flexibilnejšej alternatívy k CGI skriptom. Od roku 1998 sa používa jazyk PHP, ktorý vzišiel ako víťaz z porovnania s MS Active Server Pages (ASP) hlavne kvôli licenčným podmienkam, rýchlosti implementácie a nákladom na celkové riešenie. Ďalším kritériom

hovoriacim pre PHP bola prítomnosť linuxových serverov vo firme a tým pádom odpadla nutnosť migrovať na MS Windows. Používanie celej platformy LAMP sa ustálilo okolo roku 1998.

Platforma je priebežne podrobovaná porovnávaniu s alternatívami, ale zotrvačnosť a spokojnosť s používaním zatiaľ prevažuje.

Počas celého obdobia používania sa potvrdzujú podľa slov obchodného riaditeľa tieto klady a zápory riešenia:

Klady

rýchlosť implementácie

licenčné podmienky a OSS povaha (nie je riziko Vendor Lock-in)

veľké množstvo hotových modulov a komponentov

stabilita a relatívna hardwarová nenáročnosť platformy Zápory

roztrieštený vývoj

občasná spätná nekompatibilita

problémy pri škálování

6.3 Porovnanie s alternatívnymi riešeniami z pohľadu firmy, metodika porovnania

6.3.1 Kritériá rozhodovania pri rozhodovaní o prijatí platformy LAMP, resp. konkurenčného riešenia

Aby sme dokázali určiť optimálne riešenie pre firmu ako je První Multimediální, potrebujeme poznať jej potreby, ktoré má platforma uspokojiť, požiadavky, ktorá má spĺňať a možnosti firmy prevádzkovať takéto riešenie. Takisto vhodné je určiť si priority jednotlivých požiadaviek a ohodnotiť ich adekvátnymi váhami. Váhy sa budú líšiť podľa zamerania firmy a jej presnej orientácie v rámci trhu (či kladie dôraz na cenu, robustnosť, rýchlosť, čistotu alebo bezpečnosť riešenia atď.).

(34)

Čo by mala platforma z pohľadu firmy spĺňať?

Platforma by mala umožňovať rýchly vývoj jednoduchých riešení, rýchlosť dodávky je vždy konkurenčnou výhodou a najmä u malých projektov klient očakáva, že realizácia prebehne najlepšie ešte v ten istý deň.

Na platforme by malo byť možné implementovať aj zložitejšie projekty, aby nebolo potrebné kvôli tomu zavádzať ďalšie technologické riešenie a aby platforma zároveň umožňovala firme takpovediac „rásť“ spolu s klientom.

Mala by byť open-source, aby čím menej podliehala prípadným zmenám v licenčnej politike.

Nízke náklady na zadováženie a prevádzku.

Bezpečnosť – hrozba preniku na server, strata dát alebo odopretie služby (DoS) nie je dobrou vizitkou v očiach klienta.

Mala by mať nízku hardwarovú náročnosť – pri raste klientského portfólia firmy sa citeľne prejaví rozpočtová položka nákup a upgrade serverového HW. Nízka náročnosť umožňuje navrhnúť sofistikovanejšiu (rozumej výpočtovo náročnejšiu) aplikačnú logiku.

Dostupnosť kvalitných, ľahko použiteľných komponentov a dokumentácie, ktorá uľahčí vývoj a prevádzku riešenia na platforme.

Takisto je vhodné individuálne zhodnotiť ďalšie špecifické výhody tej-ktorej platformy proti konkurencii a určiť ich váhu pri konečnom účtovaní.

6.3.2 Porovnanie so súčasnou konkurenciou

Na základe kritérií uvedených v predošlej podkapitole sa môžeme pustiť do porovnania. Ako už bolo spomenuté v predošlých kapitolách o post najvážnejšieho konkurenta platformy LAMP sa uchádza riešenie od Microsoftu, ktoré sa skladá z komponentov Windows 2003 Server +.NET + MS SQL Server. Riešenia postavené na J2EE sa vyznačujú až prílišnou robustnosťou pre použitie na jednoduché webové aplikácie, HW náročnosť je takisto na vyššej úrovni. Uveďme si preto do tabuľky porovnanie LAMP a .NET spolu s váhami platnými pre firmu První Multimediální.

Názov kritéria Váha Víťaz Komentár

Rýchly vývoj malých projektov

10% LAMP Závisí aj od schopností vývojárov, takže nedá sa určiť s istotou, minimálne však rýchlosť nasadenia u LAMPu rozhoduje

Zložitejšie projekty 5% .NET .NET bol navrhnutý tak, aby konkuroval LAMPu zhora a

Odkazy

Související dokumenty

Celému turné bola venovaná pozornos ť hongkonských oznamovacích prostriedkov, nezávislých aj Pekingom riadených, ktoré prezentovali mnoho Tengových prejavov,

Diplomová práce na téma Nástup Číny v globalizujícím se světě se zabývá tématem, které je pro aktuální vývoj celé světové ekonomiky velmi důležité.. Proto je

Väznosť v kondenzačnej zóne vody vyžíhanej zmesi sa znižuje v porovnaní s väznosťou v kondenzačnej zóne vody nevyžíhanej zmesi. Preto sa znižuje aj termostabilita

Táto teória však platí iba pri dodržaní určitých predpokladov (Chovancová, 2012, s. Markowitz sa neskôr vyjadril, že má rovnaký podiel na modernej teórii

premyslená s prihliadnutím na väzby na celú banku a jej fungovanie. Základné cestou, ako v dnešnej dobe uspie ť je odlíšenie sa od ostatných bánk. Od nákladovej

Pre dosiahnutie lepšej ochrany banky v čase nadmerného rastu celkových úverov Povinnosť jeho tvorby sa však bude vyžadovať iba v tej krajine , kde sa vyskytne

V poslednej časti tejto kapitoly všeobecne popíšem internetbanking, možnosti ktoré ponúka, spôsoby zabezpečenia a následne sa dostanem na začiatok druhej kapitoly, v ktorej sa

A 1 Vzostupná korektúra je fáza, ktorá sa vyznačuje nízkymi objemami obchodov a malým počtom vlastníkov akcií. Na trhu sa prejavuje nedostatok disponibilných