Návrh přestavby — web na edge, jeden zapisovatel příhozů

Veřejný web předrenderovaný, dražení se zaručeným pořadím, jedna databáze jako zdroj pravdy

Návrh přestavby — web na edge, jeden zapisovatel příhozů Veřejný web předrenderovaný, dražení se zaručeným pořadím, jedna databáze jako zdroj pravdy Návštěvník · Prohlížeč, cs / en · Architecture component Návštěvník Prohlížeč, cs / en Astro na Workers · předrenderované + ostrůvky · Architecture component · skoro žádný JS Astro na Workers předrenderované + ostrůvky skoro žádný JS Payload CMS · redakce + stránky · Architecture component Payload CMS redakce + stránky Dražební místnost · jedna na aukci · Cloudflare Workers · jediný zapisovatel Dražební místnost jedna na aukci jediný zapisovatel Hono API · čtení, přihlášení, platby · Cloudflare Workers Hono API čtení, přihlášení, platby Fronty · média, pošta, faktury · Cloudflare Workers Fronty média, pošta, faktury Typesense · fasety, tolerance překlepů · Spravovaná data Typesense fasety, tolerance překlepů PostgreSQL · katalog + log příhozů · Spravovaná data · zdroj pravdy PostgreSQL katalog + log příhozů zdroj pravdy R2 + Images · originály + varianty · Spravovaná data R2 + Images originály + varianty HTTPS čtecí API SQL WSS proud příhozů append-only log příhozů fasety + fulltext do fronty varianty dotazy na obsah fotografie přes obrazovou CDN Cloudflare Workers Spravovaná data

Proč edge jako první

  • • Katalog i redakční stránky předrenderované, přegenerované při publikaci
  • • Zobrazení stránky běžně nestojí ani jeden dotaz do databáze
  • • Interaktivní ostrůvky jen tam, kde návštěvník opravdu něco dělá
  • • Cíl: LCP pod 1,5 s na českém mobilním připojení

Proč jeden zapisovatel na aukci

  • • Durable Object je jednovláknový, takže pořadí příhozů plyne z konstrukce
  • • Žádné advisory zámky, žádný závod o příhozový žebříček
  • • Rozesílání přes WebSocket sedí vedle stavu, který rozesílá
  • • Prodloužení konce aukce je časovač uvnitř téhož objektu

Zdroj pravdy

  • • PostgreSQL drží katalog a append-only log událostí příhozů
  • • Každou dosaženou cenu lze zrekonstruovat z logu
  • • Typesense je odvozený index, lze ho kdykoli postavit znovu
  • • Payload CMS ukládá do téže databáze

Co záměrně nepoužíváme

  • • Žádné SPA pro stránky, které se čtou, ne obsluhují
  • • Žádný Elasticsearch na 70 000 dokumentů
  • • Žádný obrazový server na kritické cestě
  • • Žádnou druhou databázi pro CMS