V prvním díle Levný vývoj nebo levný provoz? Obojí! jsme přemýšleli o dvou rozporuplných požadavcích na vývoj - provozní rychlosti a rychlosti vývoje. Dnes budeme ještě chvíli přemýšlet o dobrých strategiích řešení obecně, ale pak už si rovnou ukážeme, jak jsou tyto strategie použity v Drupalu. Existuje mnoho efektivních řešení, které problém úspěšně obchází. Je to schopnost velmi užitečná a je i jádrem řešení v Drupalu. Právě nad konstruktivní leností se proto krátce zamyslíme.
Lenost jako hnací síla pokroku
Snad každý technologický vynález vznikl proto, aby se ušetřila práce. Lenost je tedy doslova hnací silou pokroku. Nakonec většinou dopadlo jinak - prací se nestrávilo menší množství času, ale místo toho začali lidé usilovat o uskutečnění větších a složitějších projektů. Ty mohly teoreticky v konečném důsledku uspořit ještě větší množství práce v ještě vzdálenější budoucnosti, ale my si teď všimneme pouze tohoto začátku:
Na začátku pokroku byla vždy konstruktivní lenost v položení otázky: "A nešlo by se vyhnout kompletně dělání té či oné věci?"
Nezapomínejme, že to byla konstruktivní lenost zaměstnávat čím dál větší armády numeriků, co motivovalo vývoj toho „pilného hlupáka”, který se jmenuje počítač.
Je to konstruktivní lenost řešit stále dokola ručně mechanickou práci, co vůbec vytváří poptávku po aplikačním software.
Důmyslná lenost matematiky
Dobrý matematik je líný. Přemýšlí, jak si ušetřit mechanickou početní práci a snaží se i snižovat počet znalostí k zapamatování tím, že vytváří obecnou základnu, která zahrne speciální případy.
Víte, jak si uvaří normální člověk čaj, když dostane studenou vodu, konvici, šálek a pytlík čaje? Prostě uvaří vodu a zalije s ní čaj. A co matematik? Není to chyták - uvaří vodu a zalije s ní čaj.
Co se stane když dostane normální člověk vařící vodu, šálek a čaj? Zalije vodou čaj. A matematik? Vylije horkou vodu, čímž převede situaci na předcházející případ.
Co se stane, když máme implementovanou cache a chceme stránku? Přece ji zkusíme napřed načíst z cache a počítat, jen když je to opravdu nutné. A když si tu práci s nastavení cache nedáme? Drupal použije vlastní vestavěnou výchozí cache, čímž převede problém na předcházející případ.
Lenost se proměňuje v rychlost
Konstruktivní lenost je tedy východiskem i Drupalu. A netřeba připomínat, že matematika je východiskem každého kvalitního vývoje. Tedy: máme tady krásný obecný nástroj na rapidní vývoj a my chceme kulatou krychli - aby to bylo i rychlé.
Nešlo by ten úkol - zrychlit provoz našeho nástroje - prostě obejít? Neřešit tedy vůbec?
Tuto otázku si klade Drupal hned na začátku a je jeho odpovědí na dilema rychlost versus pružnost a spolehlivost. My nemusíme stránku pokaždé počítat, nemusíme pokaždé dolovat pracně data z databáze. Na to je tu stará dobrá cache. Drupal není inovativní tím, že ji objevil, ale že se od základu spoléhá na její použití a připravuje k němu přímočarou cestu.
Umožňuje jednoduché použití efektivních nástrojů třetích stran jako alternativu vestavěného mechanismu cache a práce vývojáře je vůči použité technice indiferentní. Vývojář tak nemusí nastavovat vůbec nic a skutečnou provozní rychlost lze snadno zajistit použitím stabilních a ověřených nástrojů, které prostě vymyslel někdo jiný - a které jsou dobře známy administrátorům webových serverů.
Přesně tak vyrůstá z lenosti rychlost.
Samotný Drupal bez cache je opravdu velmi pomalý. Ale nevadí to, protože prostě ví, že tu cache má a pracuje s ní od samého začátku vývoje. Ve skutečnosti je velice obtížné provozovat Drupal bez jakékoliv cache.
K čemu je ale ta cache konkrétně dobrá? Jaké problémy je třeba vyřešit, aby byla aplikace přívětivá pro vývojáře a současně rychlá? O tom bude další díl našeho seriálu Levný vývoj nebo levný provoz? Flexibilita je i práce navíc.