Solomon Hykes, spoluzakladatel Dockeru, kdysi řekl: „Kdyby WASM+WASI existovaly v roce 2008, nepotřebovali bychom vytvořit Docker.” V roce 2025 se WebAssembly workloady stávají realitou v Kubernetes clusterech — a mění představu o tom, jak vypadá moderní kontejner.
Proč kontejnery nestačí¶
Linuxové kontejnery jsou fantastická technologie. Izolace přes namespaces a cgroups, standardizované image formáty, obrovský ekosystém. Ale mají inherentní omezení, která se projevují čím dál víc.
Cold start: Spuštění kontejneru trvá stovky milisekund až sekundy. Pro serverless a event-driven workloady je to příliš. AWS Lambda řeší cold start custom runtime, ale to je vendor-specific hack, ne řešení.
Velikost: Minimální kontejner image má desítky MB. Distroless image Google redukují povrch útoku, ale stále balíte celý userspace. Wasm modul pro stejnou funkcionalitu má stovky KB.
Bezpečnost: Kontejnery sdílejí kernel s hostem. Capability-based security a seccomp profily pomáhají, ale attack surface zůstává velký. Každý container escape exploit je připomínkou, že izolace není kompletní.
Co přináší WebAssembly¶
WebAssembly (Wasm) byl původně navržen pro prohlížeče jako kompilační target pro C/C++/Rust. Ale jeho vlastnosti — sandboxed execution, near-native performance, platform independence — ho předurčují pro server-side workloady.
WASI (WebAssembly System Interface) přidává standardizovaný přístup k systémovým zdrojům — filesystem, síť, hodiny, random — bez přímého přístupu ke kernelu. Wasm modul běží ve vlastním sandboxu s explicitně deklarovanými capabilities. Nemá přístup k ničemu, co mu host explicitně nepovolí.
Čísla, která mluví¶
- Cold start: pod 1 ms (vs. 100-500 ms pro kontejnery)
- Velikost modulu: 100 KB – 5 MB (vs. 20-500 MB pro kontejner image)
- Paměťová režie: minimální — žádný OS, žádný runtime overhead
- Bezpečnost: capability-based sandbox, žádný sdílený kernel
SpinKube — Wasm v Kubernetes¶
Projekt SpinKube (dříve containerd-shim-spin) integruje WebAssembly runtime přímo do Kubernetes. Funguje jako containerd shim — Kubernetes scheduluje Wasm workloady stejně jako kontejnery, ale místo OCI runtime se spustí Wasm runtime (Wasmtime nebo Spin).
Kubernetes manifest pro Wasm workload¶
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-wasm-app
spec:
replicas: 3
template:
spec:
runtimeClassName: wasmtime-spin
containers:
- name: app
image: ghcr.io/my-org/my-app:latest
command: [“/”]
Z pohledu operátora se nic nemění — kubectl, Helm, ArgoCD, monitoring — vše funguje. Wasm workloady jsou first-class citizens v Kubernetes ekosystému. Rozdíl je pod kapotou: rychlejší start, menší footprint, silnější izolace.
Fermyon, Cosmonic a ekosystém¶
Fermyon s frameworkem Spin nabízí developer experience podobný serverless — napíšete handler v Rustu, Go, TypeScriptu nebo Pythonu, zkompilujete do Wasm a nasadíte. Spin Cloud běží celý na Wasm bez tradičních kontejnerů.
Cosmonic (nyní součást CNCF projektu wasmCloud) se zaměřuje na distribuované Wasm aplikace s actor modelem. Komponenty komunikují přes capability providers — abstrakcí, která umožňuje měnit implementaci (např. databázi) bez rekompilace aplikace.
CNCF přijala několik Wasm projektů: wasmCloud, Krustlet (archivován, nahrazen SpinKube), WasmEdge. Ekosystém konverguje kolem WASI Preview 2 a Component Model — standardů, které definují, jak Wasm moduly interagují.
Kde to dává smysl dnes¶
- Edge computing: IoT gateway s omezenými zdroji, kde kontejner je příliš těžký. Wasm modul běží na ARM zařízení s 256 MB RAM.
- Plugin systémy: Bezpečné rozšiřování aplikací třetími stranami. Envoy proxy filters, Istio extensions, database UDF — vše v sandboxed Wasm.
- Serverless functions: Sub-milisekundový cold start eliminuje hlavní bolest serverless. Fermyon Spin a Fastly Compute@Edge to dokazují v produkci.
- Multi-tenant SaaS: Každý tenant běží v izolovaném Wasm sandboxu. Tisíce tenantů na jednom nodu bez obav z úniku dat.
Kde to (zatím) nedává smysl¶
Stateful workloady: Wasm je designován pro stateless execution. Databáze, message brokeři, distribuované cache — ty zůstávají v kontejnerech.
Existující aplikace: Přeportovat enterprise Java aplikaci do Wasm je nerealistické. Wasm je pro nové workloady nebo komponenty, ne pro lift-and-shift.
Debugging a observability: Tooling dospívá, ale stále zaostává za kontejnerovým ekosystémem. DWARF debug info ve Wasm funguje, ale IDE integrace je limitovaná.
Kontejnery + Wasm = budoucnost¶
Nejde o „kontejnery nebo Wasm”. Jde o kontejnery a Wasm vedle sebe ve stejném clusteru. Kubernetes je orchestrační vrstva pro oba typy workloadů. Těžké stateful služby běží v kontejnerech, lehké event-driven funkce ve Wasm. Jeden cluster, jednotný management, různé runtime charakteristiky.
Wasm v K8s — sledujte, experimentujte¶
WebAssembly workloady v Kubernetes nejsou budoucnost — jsou přítomnost. SpinKube a wasmCloud běží v produkci u early adopters. Ekosystém dozrává rychle.
Doporučení: nainstalujte SpinKube do dev clusteru, nasaďte první Spin aplikaci, změřte cold start a resource consumption. Data vás přesvědčí líp než jakýkoliv blogpost.