← Referenční architektury / reference-architecture / diagrams / serverless
Programovatelné platformy
Úvod
Programovatelná platforma umožňuje zákazníkům přizpůsobit produkt psaním kódu. Na rozdíl od tradičního SaaS s pevně danými funkcemi umožňuje uživatelům rozšiřovat funkcionalitu, nasazovat backendovou logiku a vytvářet plnohodnotné full-stack řešení, a to vše v rámci infrastruktury dané platformy.
Provoz infrastruktury pro tyto platformy přináší řadu výzev, mezi něž patří zabezpečení, škálovatelnost, nákladová efektivita a izolace výkonu. Umožnit zákazníkům spouštět vlastní kód znamená rizika jako spouštění nedůvěryhodného kódu, možné zneužití a souboj o sdílené prostředky, a to vše je nutné řídit, aniž by byla narušena spolehlivost platformy. Provoz milionů jednoklientských aplikací je z podstaty nákladný, proto je efektivní využití prostředků klíčové. Schopnost škálovat zátěž na nulu v době nečinnosti má zásadní význam pro ekonomickou udržitelnost a zároveň umožňuje rychlé spuštění při nárůstu poptávky. Bezproblémové globální spouštění s nízkou latencí navíc vyžaduje odolnou, distribuovanou architekturu. Neméně důležité jsou i robustní možnosti monitorování, ladění a správy, které zajišťují viditelnost a kontrolu nad kódem nasazeným zákazníky, aniž by omezovaly inovace.
Workers for Platforms poskytuje ideální infrastrukturu pro budování programovatelných platforem tím, že nabízí zabezpečená izolovaná prostředí, ve kterých mohou zákazníci bezpečně a ve velkém měřítku spouštět vlastní kód, s automatickým škálováním až na nulu a globálně distribuovaným běhovým prostředím, které optimalizuje výkon i náklady.
Základní komponenty architektury
Architektura Workers for Platforms se skládá z několika klíčových komponent, které společně poskytují zabezpečené, škálovatelné a efektivní řešení pro multitenantní aplikace. Následující text popisuje základní koncepty.
-
Hlavní tok požadavků: Přehled toku požadavku v programovatelné platformě.
-
Tok volání a metadat: obvykle příchozí požadavky obohacené o metadata, která funkci při jejím vyvolání poskytnou potřebný kontext nebo umožní směrování.
-
Řízení egress provozu: kontrola odchozích připojení, aby bylo zajištěno chování v souladu s předpisy.
-
Využití úložných a datových prostředků: využití databází a úložišť k vytváření ještě bohatších zkušeností koncových uživatelů ve velkém měřítku.
-
Nástroje pro observabilitu: Služby pro logování a sběr metrik určené ke sledování výkonu platformy a řešení problémů.
Hlavní tok požadavků
-
Klientský požadavek: Odeslání požadavku z klientské aplikace na Dynamic Dispatch Worker.
-
Směrování: Určení správné úlohy ke spuštění a směrování požadavku do příslušného Uživatelský Worker v Dispatch Namespace. Úloha každého zákazníka běží v izolovaném User Workeru s vlastními prostředky a bezpečnostními hranicemi.
Tok volání a metadat
U mnoha případů užití dává smysl načítat další metadata, uživatelská data nebo konfiguraci pro zpracování příchozích požadavků a poskytnout volání User Worker další kontext.
-
Příchozí požadavek: Odesílání požadavků na vlastní hostname nebo Worker pomocí zástupné (wildcard) trasy Workers.
-
Vyhledávání metadat: Načtení konfiguračních dat specifických pro daného zákazníka z KV úložiště. Tato vyhledávání obvykle vycházejí z hostname příchozího požadavku nebo z vlastních metadat v případě vlastních hostname.
-
Vyvolání Workeru: Směrování požadavků na příslušný User Worker v Dispatch Namespace na základě metadat. Volitelně lze při volání funkce předat další kontext.
Vzor řízení egress provozu
Pozorovatelnost a kontrola dat jsou pro zabezpečení klíčové. Outbound Workers umožňují zachytávat všechny odchozí požadavky ve skriptech User Worker.
-
Vyvolání Workeru: Směrování požadavků na příslušný User Worker v Dispatch Namespace. Volitelně lze při volání User Worker předat Outbound Worker další parametry.
-
Externí požadavky: Odesílání požadavků prostřednictvím
fetch()volání na externí služby prostřednictvím řízeného Outbound Workeru. -
Zachytávání požadavků: Vyhodnocení odchozích požadavků a zajištění klíčových funkcí, jako je centralizované vynucování zásad a auditní logování.
Architektura metrik a protokolování
-
Protokolování: Shromažďování logů ze všech Workers v průběhu zpracování požadavku prostřednictvím Tail Worker a Workers Trace Events Logpush služeb.
-
Metriky: Shromažďování vlastních metrik prostřednictvím Workers Analytics Engine a předpřipravené Analytics které lze snadno dotazovat prostřednictvím GraphQL API.
-
Integrace třetích stran: Export logů a metrik do různých externích monitorovacích a analytických platforem, jako jsou Datadog, Splunk, Grafana a další, prostřednictvím Integrace analytiky.
Model izolace zdrojů
-
Příchozí požadavek: Odesílání požadavků na vlastní hostname nebo Worker pomocí zástupné (wildcard) trasy Workers.
-
Vyvolání Workeru: Směrování požadavků na příslušný User Worker v Dispatch Namespace.
-
Přístup k prostředkům: Interakce s prostředky specifickými pro daný skript:
- D1 pro relační databázové úložiště
- Durable Objects pro silně konzistentní data
- KV pro úložiště klíč-hodnota s vysokou četností čtení a eventuální konzistencí
- R2 pro objektové úložiště
Průběh nasazení a správy
-
Rozhraní pro správu: Interakce s platformou prostřednictvím rozhraní GUI, API nebo CLI.
-
Zpracování na platformě: Zpracování těchto interakcí za účelem:
- Transformace a sbalení kódu
- Provádění bezpečnostních kontrol
- Použít konfiguraci
-
Řízení změn: Nasazení změn do Cloudflare pomocí Cloudflare REST API.
Závěr
Cloudflare Workers for Platforms poskytuje spolehlivý základ pro budování vícenájemných aplikací SaaS se silnou izolací, globální distribucí a škálovatelným výkonem. Díky této architektuře se poskytovatelé platforem mohou soustředit na přinášení hodnoty svým zákazníkům, zatímco složitost podkladové infrastruktury řeší Cloudflare.