INTEGRITY Dokumentace

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.

  1. Hlavní tok požadavků: Přehled toku požadavku v programovatelné platformě.

  2. 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í.

  3. Řízení egress provozu: kontrola odchozích připojení, aby bylo zajištěno chování v souladu s předpisy.

  4. 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.

  5. 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ů

Obrázek 1: Workers for Platforms: hlavní tok
Obrázek 1: Workers for Platforms: hlavní tok
  1. Klientský požadavek: Odeslání požadavku z klientské aplikace na Dynamic Dispatch Worker.

  2. 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

Obrázek 2: Workers for Platforms: hlavní tok
Obrázek 2: Workers for Platforms: hlavní tok

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.

  1. Příchozí požadavek: Odesílání požadavků na vlastní hostname nebo Worker pomocí zástupné (wildcard) trasy Workers.

  2. 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.

  3. 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

Obrázek 3: Workers for Platforms, řízení egress provozu
Obrázek 3: Workers for Platforms, ří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.

  1. 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.

  2. 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.

  3. 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í

Obrázek 4: Workers for Platforms, metriky a protokolování
Obrázek 4: Workers for Platforms, metriky a protokolování
  1. 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.

  2. 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.

  3. 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ů

Obrázek 5: Workers for Platforms, prostředky
Obrázek 5: Workers for Platforms, prostředky
  1. Příchozí požadavek: Odesílání požadavků na vlastní hostname nebo Worker pomocí zástupné (wildcard) trasy Workers.

  2. Vyvolání Workeru: Směrování požadavků na příslušný User Worker v Dispatch Namespace.

  3. 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

Obrázek 6: Workers for Platforms, průběh nasazení a správy
Obrázek 6: Workers for Platforms, průběh nasazení a správy
  1. Rozhraní pro správu: Interakce s platformou prostřednictvím rozhraní GUI, API nebo CLI.

  2. 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
  3. Ří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.