← Referenční architektury / reference-architecture / diagrams / storage
Ukládání obsahu vytvořeného uživateli
Úvod
Obsah vytvářený uživateli (UGC) je zásadní součástí moderních aplikací. Patří sem nahrávání profilových fotografií, dokumentů a videí uživateli, ale i generování obrázků, souhrnů nebo strukturovaných dat pomocí AI modelů. Aplikace proto potřebují spolehlivé, škálovatelné a nákladově efektivní řešení pro ukládání tohoto obsahu a přístup k němu.
Cloudflare R2 je objektové úložiště kompatibilní s S3 bez poplatků za odchozí přenos dat, takže se ideálně hodí pro nahrávání a doručování obsahu ve velkém měřítku. V kombinaci s Cloudflare Workers a globální síti Cloudflare umožňuje rychlé, bezpečné a nákladově efektivní procesy pro příjem a správu obsahu UGC.
Tato referenční architektura popisuje dva běžné workflow pro obsah vytvářený uživateli (UGC), oba optimalizované z hlediska výkonu, zabezpečení a nákladové efektivity:
- Zabezpečené nahrávání souborů od uživatelů do R2 pomocí Signed URLs: Umožňuje uživatelům efektivně a bezpečně nahrávat soubory (profilové obrázky, dokumenty atd.), aniž by přetěžovali backendové systémy.
- Obsah generovaný AI uložený v R2: Ukládání obsahu vygenerovaného pomocí Workers AI nebo externích AI služeb, díky čemuž jsou výsledky inference trvale dostupné pro pozdější použití.
Případy užití
Případ užití 1: Zabezpečené nahrávání souborů uživatelů do R2 pomocí podepsaných URL
Obsah vytvářený uživateli obvykle začíná nahráváním souborů, včetně profilových fotografií, životopisů, bohatých médií a dokumentů. Aplikace musí tato nahrání bezpečně validovat a ukládat, a zároveň se vyhnout latenci, vysokým nákladům a zbytečné složitosti na backendu.
V této architektuře používáme R2 jako primární úložnou vrstvu a Worker k řízení přístupu k nahrávání. Soubory se nahrávají přímo z prohlížeče nebo zařízení uživatele do R2 pomocí podepsaných URL, které Worker vygeneruje po ověření oprávnění uživatele a záměru nahrání.
Tento přístup se vyhýbá směrování velkých souborů přes backend aplikace nebo Worker, čímž snižuje latenci i provozní náklady, a zároveň zajišťuje přísnou kontrolu přístupu a zabezpečení.
A protože je R2 nativně integrováno do globální sítě Cloudflare, soubory uložené v R2 jsou dostupné s nízkou latencí odkudkoli ve světě, a bez jakýchkoli poplatků za odchozí přenos dat, a to i s tím, jak vaše aplikace roste.
Jak to funguje
- Uživatel zahájí nahrávání z frontendu: Aplikace shromáždí údaje o souboru (například velikost a název) a zavolá backendové API (Cloudflare Worker), které zahájí proces nahrávání.
- Worker ověří uživatele a zkontroluje platnost požadavku: Worker ověří, že je uživatel přihlášen, má oprávnění k nahrávání a že soubor splňuje povolené limity (například maximální velikost 10 MB, povolené typy MIME).
- Worker vrátí podepsanou PUT URL adresu pro R2: Podepsaná URL adresa umožňuje frontendu nahrávat soubory přímo do R2 po omezenou dobu, pod konkrétním klíčem nebo v konkrétním jmenném prostoru. Worker tak nemusí velké soubory zpracovávat přímo.
- Frontend nahraje soubor přímo do R2: Soubor se streamuje přímo z klienta do R2.
- (Volitelné) Spusťte pracovní postupy po nahrání: R2 nabízí oznámení o událostech k odesílání zpráv do fronty při změně dat ve vašem R2 bucketu, například při novém nahrání. Příklad následného zpracování:
- Skenujte, moderujte nebo transformujte soubor.
- Zápis metadat (například
user_id,file_path,timestamp) na D1, serverless SQL databáze od Cloudflare. - Upozornit uživatele nebo aktualizovat dashboard/UI.
Další informace o přímém nahrávání dat z klienta do R2 najdete v dokumentaci k předem podepsané URL adresy.
Případ užití 2: Obsah vygenerovaný AI uložený v R2
Mnoho moderních aplikací využívá obsah generovaný pomocí AI, který může zahrnovat popisy produktů, profilové fotky, zvukové klipy a další. Pokud tento obsah vzniká v reakci na akce uživatelů nebo naplánované události, musí být uložen okamžitě, spolehlivě a ve velkém měřítku.
Tato architektura využívá Workers AI k provádění inference na edge a poté ukládá vygenerovaný výstup přímo do Cloudflare R2, to vše v rámci jediného Workeru.
Jak to funguje
- Uživatel zahájí generování obsahu: Frontend odešle požadavek na Cloudflare Worker, aby pomocí AI modelu vytvořil obsah (například „Vytvoř náhledový obrázek pro tento produkt“).
- Worker vyvolá Workers AI: Worker předá uživatelský vstup modelu nasazenému ve Workers AI.
- Vygenerovaný výstup se vrátí Workeru: Odpověď může mít podobu prostého textu, obrázku v Base64, binárního bufferu nebo jiných strukturovaných dat, v závislosti na typu modelu.
- Worker nahraje výstup přímo do R2: Podepsaná URL adresa ani nahrávání z klienta nejsou potřeba. Worker provádí zabezpečený, ověřený
PUTpožadavek na uložení výstupu do určeného bucketu. - Worker vrátí frontendu úspěšnou odpověď a metadata: Klient obdrží odkaz na uložený soubor (například cestu, klíč objektu nebo v případě potřeby podepsanou URL adresu pro stažení).
Viz Použití R2 z Workers s dalšími informacemi o přístupu k bucketům R2 pomocí Cloudflare Workers.
Souhrn
Uložením obsah vytvářený uživateli v Cloudflare R2, aplikace získávají:
- Vysoce škálovatelný úložný backend
- Rychlý přístup díky edge computingu Cloudflare
- Předvídatelné náklady s nulovými poplatky za odchozí přenos dat
- Plynulé pracovní postupy AI + UGC, které maximalizují efektivitu
Tato architektura zajišťuje, že obsah je uložen, zpracován a doručen rychle, bezpečně a nákladově efektivně.