Kaupalliset Edge FaaS -palvelut
Sekä Fastlyllä että Cloudflarella on palveluita, joissa voi ajaa WebAssemblyä hyvin kevyesti Function-as-a-Service eli FaaS-palveluna.
Kummassakin palvelussa asiakas antaa suoritettavan WebAssembly-tiedoston heille, ja he asentavat sen kymmeniin reunapalvelimiin ympäri maailmaa. Aina kun asiakkaan pyyntö triggeröi tämän palvelun tarpeen, se käynnistetään millisekunneissa lähimmässä reunapalvelimessa.
Fastly
Fastlyn ratkaisussa luodaan WebAssembly-moduuli Rustilla tai C:llä.
https://www.fastly.com/documentation/reference/compute/
Moduuli käynnistetään yhden HTTP-pyynnön webbiserveriksi. Se voi lukea pyydetyn URL:n argumentteineen.
Tulos palautetaan HTTP-pyynnön esittäjälle HTML-sivuna.
Tämän lisäksi
- Palvelin voi tehdä HTTP-kyselyjä (mutta ei muuta verkkotoimintaa)
- Saa vahvan satunnaisuluvun pyytäessään
- Saa kellonajan
Tämä on kaikki, mitä WebAssembly-ohjelma voi kommunikoida isäntätietokoneen kanssa.
Fastlyn toteutus on tehty Rustilla.
Cloudflare workers
Clouflaren ratkaisussa WebAssembly-moduuli on web-palvelin, joka saa HTTP-pyyntöjä eventteinä, jotka se käsittelee.
CloudFlare käyttää runtimenä V8-JavaScriptiä.
Aikaisemmin pyynnöt oli välitettävä JavaScript ohjelmatynkien kautta, mutta noin kuukausi sitten tehtiin päivitys, joka sallii WebAssemblyn saada pyynnöt suoraan ilman JavaScript-koodia.
https://developers.cloudflare.com/workers/learning/how-workers-works
Palvelupyynnön sisällä voidaan käyttää WebSocketteja kutsujan ja palvelimen tietojenvaihtoon. Tämä on toistaiseksi kokeellinen ominaisuus.
https://developers.cloudflare.com/workers/
Cloudflaren WebAssembly-moduuleilla on käytettävissään Key-Value -tietokanta tietojen pysyvään säilyttämiseen.
Miksi WebAssembly
WebAssemblyn vuoksi tarvitaan vain hyvin kevyt runtime-ympäristö.
Koodi ei pääse missään vaiheessa tekemään suoraan systeemikutsuja tai edes kirjastokutsuja isäntäkoneessa. Tämä takaa täyden turvallisuuden hyökkäyksiin isäntäkoneeseen. Myöskään isäntäkoneen konekielisiä käskyjä ei suoriteta suoraan, joten käskykannan HW-bugejakaan ei päästä hyväksikäyttämään. Esim.
Kevyt runtime tarkoittaa myös, että suoritus alkaa hyvin nopeasti, jopa tuhat kertaa nopeammin kuin kontainer-tyyppisen kuorman käynnistäminen. Yhtäaikaisia suorituksia voi myös olla paljon enemmän.
Päivitys 2024: Fastlyn linkki vaihdettu toimivaksi.