5P - Play! produktivně při produkčním použití

Pravidelné středeční technologické setkání v Et neteře, zvané TechDay, bylo tentokrát věnováno představení frameworku Play! ve verzi 2.x. Karel Čížek nás seznámil se základními vlastnostmi tohoto frameworku pro webové aplikace psané v Javě nebo ve Scale. Následně jsme diskutovali o možnostech produkčního využití frameworku.

Stručně jsme si představili:

  • F5 driven development – produktivní vývoj s využitím hot-reloadování tříd, šablon, JavaScriptu, kaskádových stylů, CoffeScriptu aj.
  • Bezestavovost frameworku – framework ctí princip RESTu – pro komunikaci se serverem se využívá bezestavové komunikace pomocí protokolu HTTP (metody GET, POST, DELETE, PUT). Play! plně podporuje asynchronní komunikaci, která neblokuje prostředky serveru, pokud aktuálně nejsou potřeba.
  • Mapování URL adres na akce controllerů v konfiguračním souboru routes. Snadno se mapují i předávané parametry (GET parametry; identifikátory, které jsou součástí cesty v URL), aplikaci je možné snadno nadefinovat/změnit URL adresy na jednom místě.
  • MVC architekturu webové aplikace v Play, testování pomocí unit testů a programových testů využívajících API Selenia.

Zúčastněné zajímaly otázky ohledně produkčního využití Play frameworku. Framework nalezne využití zejména (ale nejen) v aplikacích, které obsluhují obrovské množství požadavků uživatelů, které framework úsporně rozkládá na výkon serveru (nebo více serverů v clusteru).

Nažhavený hardware

Pokud chceme plně využít výhod asynchronní komunikace, která nebude blokovat zpracovatelská vlákna (okamžitě použitelná na zpracování dalších požadavků), bude nutné využít databázi, pro kterou existují drivery umožňující asynchronní komunikaci (MongoDB, případně další, pro které budou asynchronní drivery v produkční verzi již dostupné). Pouze tak se opravdu využije maximum potenciálu dostupného hardwaru. Je zbytečné, aby vlákna čekala na výsledek databázového dotazu, který se může vykonávat poměrně dlouhou dobu. Teprve až budou data k dispozici, potřebujeme zpracování dokončit pomocí jednoho z dostupných vláken.

Moduly na pochodu

Pro produkční použití je také významná dostupnost rozšiřujících knihoven/modulů, které usnadní vývojářům typické úkoly při tvorbě webových aplikací. Samotný framework je poměrně jednoduchý a v základu nenabízí komponenty/fragmenty pro UI nebo knihovny pro AJAXovou komunikaci. S rostoucí oblibou frameworku však vznikají zajímavé nové moduly, které by měly vývojářům dostatečný komfort zajistit. Samozřejmě můžete využít své vlastní odladěné knihovny. Rozhraní Play! pluginu je jednoduché a vlastní knihovny můžete jako pluginy do Play! integrovat.

Šablony jaké potřebujete

Ne každému bude vyhovovat výchozí šablonovací systém založený na kombinaci Scala kódu a HTML. Takové šablony mají velkou výhodu díky své typové bezpečnosti, ale mnozí kodéři Scalu neovládají a upřednostní jiné šablonovací systémy. Naštěstí integrace vlastního šablonovacího systému do Play! je velmi jednoduchá. Příkladem může být modul Japid Template Engine pro Play! 2.0. Framework umožňuje do kompilační fáze zapojit také kompilaci samotných šablon (převést je na vhodnou objektovou reprezentaci), a odhalit tak případné chyby v šablonách již ve fázi kompilace. Není to však nutné, pokud šablonovací systém takovým převodem nedisponuje.

Všudypřítomné formuláře

Framework nabízí pěknou podporu pro snadnou tvorbu formulářů (reprezentovaných objektem typu play.api.data.Form), včetně validačních pravidel, která framework automaticky kontroluje a prezentuje uživateli. Při integraci vlastního šablonovacího systému se zdá být výhodné tohoto formulářového API využít a kodérům poskytnout helper šablonu, která usnadní nadefinování HTML fragmentů pro jednotlivé formulářové fieldy, podobně jako je tomu v případě vestavěného šablonovacího systému.

Sockety pro váš web

Play! podporuje komunikaci mezi serverem a klientem pomocí WebSocket. Po navázání spojení klienta se serverem může server udržovat komunikaci po vyhrazeném socketu a pushovat na klienta aktuální data. Jakmile tato data dorazí, klient může ihned aktualizovat jejich zobrazení uživateli. Např. monitorovací aplikace tak může poskytovat skutečně aktuální pohled na dění na serveru.

Článek obsahuje 2 komentáře

  • Vladan

    1
    Toho chlapce vlevo v kosili to evidentne bavi...
  • Jana

    2
    Si dela poznamky :)