Přeskočit obsah

O co jde

Celá platforma stojí na jedné myšlence. Když ji pochopíš, všechno ostatní — kešování, verzování, ten podivný typovaný graf — přestane být sbírka detailů a stane se z toho jeden důsledek.

Ta myšlenka zní:

Web se přestane vyrábět a začne se odvozovat.

Co to znamená, hodně polopatě

Představ si, že děláš e-shop s koly. Máš tam produkt „Trek Marlin 7". Ten produkt se objeví:

  • na své vlastní stránce
  • ve výpisu kategorie „Horská kola"
  • v bloku „Podobné produkty" u jiného kola
  • v porovnávači
  • ve vyhledávání
  • v sitemapě
  • ve feedu pro Zboží.cz
  • v mailu „vrátilo se skladem"

To je osm míst. Kolikrát ten produkt existuje?

Odpověď „jednou, v databázi" je správná jen napůl. V databázi je jednou, ale znalost o tom, kde se objevuje, je rozházená po osmi šablonách, třech dotazech a jedné funkci, kterou jsi psal před dvěma lety a která má v sobě WHERE category_id IN (3, 7, 12).

A teď se změní cena.

Proč mažeš celou cache

Protože nevíš, co se má smazat.

Vážně, to je celý důvod. Nikdo nemaže celou cache proto, že by chtěl. Maže ji proto, že ta znalost „kde všude se tenhle produkt objevuje" v systému nikde není zapsaná. Je jenom v těch osmi šablonách, rozpuštěná v kódu, ve tvaru, ze kterého se nedá zpětně zjistit.

Takže se udělá jediná věc, která je bezpečná: smaže se všechno a web se přegeneruje. Chvíli je pomalý. Nevadí, funguje to.

Až do chvíle, kdy máš 80 000 produktů, ERP posílá změny každých pět minut a přegenerování trvá dvacet.

Tohle je M1

Bod M1 v registru je právě tohle a vzniklo kolem něj nejvíc práce z celé debaty — dvě kola. Ne proto, že by kešování bylo zajímavé, ale proto, že je to první místo, kde se ta jedna myšlenka projeví jako konkrétní mechanismus.

Jak to vypadá potom

Když komponenta „Podobné produkty" nesmí sáhnout do databáze, jak chce, ale musí říct dotazem, který systém rozumí, co vlastně chce — pak systém ví, na čem ten blok závisí. Nemusí to hádat. Bylo mu to řečeno.

A když se změní cena, systém neřekne „smažu všechno". Řekne: na tomhle produktu závisí tyhle tři výpisy, tenhle feed a tahle stránka. Zbytek se nedotkne.

To není optimalizace kešování. To je důsledek toho, že závislost je zapsaná místo aby byla rozpuštěná v kódu.

Cena, kterou za to platíš

Tady je ta nepříjemná část a je poctivé ji říct hned na druhé stránce:

Všechno, co je dneska implicitní, musíš říct nahlas

Dneska „tenhle článek patří do téhle rubriky" žije napůl v databázi a napůl ve tvojí hlavě. Potom to musí být deklarovaný typ vazby s určenou kardinalitou.

Dneska „tenhle blok ukazuje novinky" je SQL v šabloně. Potom je to dotaz, který má povolené filtry, povolené řazení, limit a spočítanou cenu.

Dneska „tenhle nadpis je trochu menší" je style="font-size:14px". Potom je to varianta komponenty, kterou někdo musel předem navrhnout a otestovat.

Vyměňuješ volnost za odvoditelnost. Nic se neztratí, ale všechno se musí vyslovit. A vyslovit to je práce, která proběhne dřív, než vznikne první stránka.

Jestli chceš jednu větu, kterou si z týhle dokumentace odnést:

Platí se předem, v přemýšlení. Vrací se to potom, v tom, že se věci nemusí dělat dvakrát.

Proč zrovna teď

Tahle úvaha není nová. Lidi se o ni pokoušejí od doby, kdy vzniklo první CMS, a většinou skončí u toho, že se to nevyplatí — protože zkušený vývojář zvládne tu implicitnost udržet v hlavě. Podívá se na šablonu a , co tím bylo myšleno.

Co se změnilo: AI to nevidí.

AI se nemůže podívat na šablonu a domyslet si záměr. Potřebuje, aby to bylo napsané. A hlavně — vývojář udělá za den čtyři změny, AI udělá čtyři tisíce. Cokoli, co dneska „většinou funguje", při tom objemu praskne.

Takže ta stará dobrá rada „udělej to pořádně a explicitně" najednou přestala být otázkou vkusu a stala se podmínkou toho, aby se do systému vůbec dal pustit stroj.

Co z toho neplyne

Že AI bude psát web. Nebude. V debatě (S1) z tohohle vyšla hodně přísná hranice: AI smí vybírat z toho, co vývojář předem vytvořil a otestoval. Nesmí přidávat nové možnosti.

Jinými slovy: AI dostane menu, ne kuchyni.


Tohle je celá myšlenka. Zbytek dokumentace je jen o tom, co z ní plyne v konkrétních situacích — a na to jsou scénáře.