WebExpo 2011

Letošní WebExpo se skutečně vydařilo. Rozhodně se v něm nevyskytovaly žádné fatální problémy, jejichž jsem byl svědkem minulý rok. WebExpo má oproti jiným konferencím (konkrétně můžu porovnávat se zahraničními Java konferencemi) zvláštní atmosféru. Kromě toho, že se tam můžete setkat s velkým množstvím českých "elit", je v něm i řada drobností, které potěší a pobaví. Letos mě například dostaly unikátní teasery promítané před každým blokem přednášek s fotkami a krátkým popisem přednášejících osobností se skvělou 8bitovou muzikou na pozadí. Skvělá je také myšlenka moderátorů, kteří uvádějí jednotlivé prezentace a dodávají každé místnosti osobitý nádech. Stánky v prezentační aule jsou na WebExpu ojedinělé - čajovnou počínaje přes letecký simulátor až ke stánku, kde jste se mohli nechat udělat masáž od profíka.

Jak jsem již říkal, nejzásadnější problémy loňského ročníku se podařilo vyřešit - registrace tentokrát probíhaly zcela plynule a hodinová fronta minulého ročníku se letos naštěstí nekonala. Stejně tak programy již byly přiloženy mezi prospekty v dárkové tašce. Trochu výtku bych měl k mobilní verzi webu, která by měla být pro konferenci tohoto druhu standardem (tj. přímou součástí hlavního webu s automatickým redirectem podle koncového zařízení). Letos byla mobilní verze pravděpodobně na jiném serveru a propojení asi nebylo ideální, protože například mně se s existujícím účtem vůbec nepodařilo přihlásit. Navíc jsem ani nikde na stránkách www.webexpo.cz nenašel žádný odkaz na mobilní verzi, takže jsem se o ní dozvěděl až náhodou z Twitteru.

Keynote byla leto vcelku snesitelná, dokonce v ní padlo i pár zajímavých informací od garantů akce za VŠE. Jediná část, která se trochu nepovedla, byl čtený výstup Václava Stoupy, který se mezi ostatními řečníky, kteří dali proslov "z patra", trochu vyjímal.

Mou první přednáškou byla Architektura škálovatelných aplikací od Michala Táborského, která slibovala sdílení zkušeností ze škálování internetového obchodu Mall.cz, ve kterém je Michal právě hlavním architektem. Nic světoborného nakonec v přednášce nezaznělo, nicméně se jednalo o velmi kondenzovaný souhrn best practices:

  • modularizujte svůj systém - budete tak mít volnější ruku při předělávání jednotlivých částí (napoprvé to stejně nikdy netrefíte správně)
  • základem je monitoring a měření všeho co je možné monitorovat - jen tak víme, kde jsou úzká místa, která je nutné posilovat
  • automatizujte infrastrukturu - tj. deployment proces, instalaci nového prostředí
  • výkon serveru je typicky limitován IO operacemi, dřív než se začnete poohlížet po shardingu nebo NoSQL řešení, vyměňte plotnové HDD za SDD
  • vše dávejte do VCS a to včetně deployment skriptů a konfiguračních souborů
  • všechno, co jde servírovat jako statický soubor, poskytujte rychlým webcache serverem (nginx, varnish, squid)
  • cachujte efektivně - kromě cache s časovanou expirací se zamyslete nad efektivním procesem invalidace správné části cache při změně údajů
  • co jde provádějte asynchronně

V další přednášce Novinky z konference Build David Grudl sdílel své postřehy z návštěvy této konference v Anaheimu (US). Vše se točilo samozřejmě okolo prototypu nových Windows 8. Základní informace jsou sice už přes týden k dispozici na řadě webů, ale jedna věc je si o tom někde přečíst a jiná je to vidět naživo. To nejzásadnější pro webové vývojáře je to, že s novými Windows se jim otevírá celá nová platforma, pro kterou mohou programovat se stávajícími znalostmi. Jestli jsem to pochopil správně, budou mít k dispozici celou řadu API, které jsou aktuálně dostupné jen .NET programátorům. Znalosti HTML, CSS a JavaScriptu bude možné více než dobře utilizovat i pro čistě desktopový vývoj, což je pro všechny z nás skvělá zpráva. Otázka je, jak hodně bude bude programování prošpikované M$ specifiky, ale i tak, nám to otvírá dveře do úplně nového vesmíru. Zajímavý je i přístup M$ k OS pro tablety - základem bude samozřejmě METRO, ale z něj bude možné se přepnout do rozhraní současné plochy Windows a bude možné tablet používat jako plnohodnotnou PC stanici s klávesnicí a myší třeba přes bluetooth.

Přednášky o Cassandra a MongoDB se zabývaly specifiky obou NoSQL databází a z obou bylo cítit zdravé vystřízlivění z NoSQL hype. Oba řečníci potvrdili to, co se už nějaký ten měsíc odehrává na celé řadě IT blogů. NoSQL řešení nasazujte až ve chvíli, kdy vám nestačí vaše relační databáze. S nasazením a programováním pro NoSQL se nadřete rozhodně víc, než při použití osvědčené relační databáze. Relační databáze mají ve vývoji 30-letý náskok, který se nedá jen tak vygumovat a proto si na skutečně vyzkoušené a optimalizované NoSQL řešení s dostatkem toolingu ještě chvíli počkáme. Ve chvíli, kdy narážíte na limity HW a potřebujete horizontálně škálovat, je načase zvážit použití NoSQL řešení. Znamená to ale, že z některých vlastností ACID budete muset ustoupit (viz. CAP theorem).

Zavítal jsem také na přednášku Jiřího Knesla Test driven development v coffee scriptu, která mne, musím přiznat, trošku zklamala, protože se pohybovala na velmi základní úrovni. Mám za to, že automatizované testování je v dnešní době tak elementární záležitost, že není třeba jeho prospěšnost na konferencích tohoto typu dále opakovat. Automatizované testování, si myslím, ignorují snad už jen ti nepoučitelní a většina profesionálů jej snad už v této době praktikuje (rozdíly jsou už pak jen v kvalitě). Na úrovni Coffeescriptu se prošla jen základní syntaxe, nicméně zazněly zajímavé odkazy na testovací frameworky pro Javascript. Přednáška byla nicméně velmi srozumitelná a řečnické dovednosti Jirky rozhodně nechci snižovat, spíš jen téma mohlo jít více do hloubky (pravda je, že za 30 minut, které na to byly k dispozici, se toho také moc probrat nedá).

Daniel Steigerwald se na WebExpu představil s přednáškou Za hranicemi jQuery, ve které v rychlosti rozdělil současný ekosystém JavaScriptích knihoven na 3 úrovně:

  1. jednoduché helper knihovny obalující (usnadňující práci s DOM) - jQuery
  2. vyspělé frameworky s podporou modularizace, dokumentace, kompilace, rámcem pro UI komponenty atp. - Google Closure YUI, Dojo
  3. komplexní řešení včetně IOC, MVC, šablonovacího systému atp. - AngularJS

S tím, že podle něj, budoucnost spočívá ve frameworcích třetí úrovně (kam teoreticky může spadnout i Googlí Dart, o kterém pár informací uniklo). Celá přednáška se týkala jeho představy o tom, jak se má vyvíjet v JavaScriptu profesionálně. Záměry přednášky jsou velmi bohulibé, ale myslím si, že valná většina současných web devoloperů nemá ambice v JavaScriptu implementovat takové množství kódu, aby tyto rady využila. Pokud je ovšem signifikantní část aplikace implementovaná v JavaScriptu je třeba na vývoj aplikovat podobná pravidla, která standardně využíváme při vývoji server-side aplikací. Tedy - automatické testování, namespacy, IOC, oddělení MVC, dokumentaci, statickou analýzu kódu, refactoring atd. Zdá se mi, že to co již léta známe v Javě se nyní ve velkém dostává do JavaScriptového ekosystému s tím, jak se zvyšuje počet složitých aplikací v něm vyvíjených (např. s nástupem NodeJS).

Mou poslední přednáškou dne byla Serversideness v podání Douglase Crockforda, ikony našeho oboru - autora JSON nebo JSLint. V přednášce Douglas Crockford vyzdvihoval vlastnosti NodeJS ve smyslu ortodoxní asynchronicity a dokonalém využití možností funkcionálního programování, které vede k vysokému výkonu a vyloučení problémů s konkurenčním zpracováním (tj. vlákny). Zde se trochu opřel i do Javy, o které tvrdí, že jako jazyk si nedokázala jasně zvolit, zda má jít o jazyk systémový (tj. podobně jako je Cčko), ve kterém se přímé práci s vlákny nelze vyhnout, nebo o jazyk pro psaní aplikací, kde je naopak práce s vlákny nežádoucí a vede k celé řadě problémů, se kterými se skutečně běžně v našem prostředí potýkáme. Přednáška byla zaměřená spíše teoreticky, ale byla velmi poutavě podaná a hlavně (podle reakcí, které jsem měl příležitost zaznamenat) měla zásadní dopad na celou řadu vývojářů, kteří měli dojem, že o programování v JavaScriptu něco ví. Dopad v tom smyslu, že tato přednáška jim otevřela oči - že dosud nevěděli o tom, že neví (viz. staré perské přísloví). Tohle poznání je zcela zásadní v tom, že je to posune do stadia, ve kterém se nacházím teď já sám - tj. že vím, že nevím a tudíž se chci dál vzdělávat, abych věděl, že vím ;-)

To bude pro dnešek vše - o sobotním dni se v tomto článku nedočtete, protože na něm jsem již nebyl. Nicméně pokud vás zajímá zajímá kompletnější výcuc letošního WebExpa, nenechte si ujít agregační dokument na GoogleDocs, ve kterém jsou odkazy na celou řadu zajímavých materiálů a zápisků z jednotlivých přednášek.