Recently, Rawkode Academy recorded a deep dive with Fermyon Wasm Functions - where host David Flanagan and Thorsten Hans (of Fermyon) provide a hands-on session exploring the new serverless offering.
Fermyon Wasm Functions is a fully managed hosted service built on top of Akamai’s globally connected network. It takes the proven architecture of running Spin apps in a dense and available fashion and distributes them across multiple regions worldwide. This means your applications are always available, and requests are automatically routed to the closest data center based on the user’s location.
During the Rawkode Academy session, David and Thorsten discuss:
- Benefits
- Wasm Functions Setup
- Demoing app scenarios
- Deployment
- Advanced Features
- Use Cases and Examples
Benefits of Fermyon Wasm Functions
Lightning-Fast Cold Starts
While traditional containers measure startup time in hundreds of milliseconds, WebAssembly applications measure startup in nanoseconds. Combined with Akamai’s global network, this delivers consistently low latency regardless of user location.
Global Distribution Made Simple
Instead of manually selecting regions and managing deployments, Fermyon Wasm Functions automatically distributes your application globally. Developers can focus on building great applications rather than infrastructure management.
Familiar Developer Experience
The service extends the existing Spin CLI with an aka
plugin, maintaining the familiar workflow developers already know while adding global deployment capabilities.
Getting Started
Prerequisites:
To get started with Fermyon Wasm Functions, you’ll need:
- Spin CLI (version 3.2.0 or later)
- Spin
aka
plugin to extend your Spin CLI
spin plugin install aka
Authentication
Fermyon Wasm Functions uses GitHub for authentication:
spin aka login
This initiates a device code flow where you’ll authenticate with your GitHub account and grant the CLI permissions to interact with Fermyon Wasm Functions on your behalf.
Building Your First Application
Creating a New Project
Fermyon has updated their templates to provide better developer experience. For TypeScript projects, you can now choose between different HTTP routers:
spin new http-ts hello-fermyon-wasm-functions
The new templates support popular frameworks like Hono, which provides an excellent API for building HTTP applications with clean middleware support.
App Demos
1. Simple Hello World
A basic application that responds with personalized greetings:
app.get('/', (c) => c.text('Hello Spin'))
app.get('/hello/:name', (c) => c.text(`Hello ${c.req.param('name')}`))
2. A/B Testing with Key-Value Store
A more advanced example implementing A/B testing using Fermyon’s globally distributed key-value store:
// Track request count
const counter = await store.getJson(HITS_KEY) || { count: 0 }
counter.count++
await store.setJson(HITS_KEY, counter)
// Return different content based on even/odd requests
if (counter.count % 2 === 0) {
return c.html('<h1>Even</h1>')
} else {
return c.html('<h1>Odd</h1>')
}
Deployment
Deploying to Fermyon Wasm Functions is straightforward:
spin aka deploy
This command:
- Creates an OCI artifact from your Spin application
- Pushes it to Fermyon’s registry
- Deploys it across all regions
- Provides a generated subdomain with HTTPS certificate
Advanced Features
Monitoring and Observability
The aka plugin provides several commands for monitoring your applications:
spin aka apps list
- View all deployed applicationsspin aka apps info [app-name]
- Get detailed application informationspin aka logs [app-name]
- View application logs
Cron Jobs (Experimental)
Fermyon Wasm Functions supports scheduled jobs:
spin aka cron create --route / --schedule "* * * * *" my-cron-job
CDN Integration
Applications automatically benefit from Akamai’s CDN. You can add cache control headers to enable caching:
response.headers.set('Cache-Control', 'max-age=10')
Configuration Management
For sensitive configuration like API keys, use Spin’s variable system:
spin aka deploy --variable secret_key=$SECRET_VALUE
Variables are encrypted and only exposed to your specific deployment.
Portability: A Key Advantage
One of WebAssembly’s greatest strengths is portability. The same application you deploy to Fermyon Wasm Functions can run:
- Locally with
spin up
- On Kubernetes using SpinKube
- On any other Spin-compatible platform
Use Cases and Examples
Fermyon provides a comprehensive repository of examples showcasing various use cases:
- A/B Testing - Dynamic content serving based on user segments
- Traffic Filtering - Request filtering and routing
- Geo-blocking - Restricting access based on user location
- Response Header Modification - Dynamic header manipulation
- Gated Access - Time-based access control
These examples demonstrate how edge computing with WebAssembly enables new architectural patterns that weren’t practical with traditional serverless platforms.
Conclusion
The familiar developer experience, combined with powerful features like global key-value storage, cron jobs, and seamless CDN integration, makes it an compelling choice for building modern, high-performance web applications.
Whether you’re building APIs, implementing edge logic, or creating globally distributed applications, Fermyon Wasm Functions provides the tools and infrastructure to deploy your ideas worldwide with minimal complexity and maximum performance.
Ready to get started? Request access to Fermyon Wasm Functions and join the future of serverless computing.
- Docs: developer.fermyon.com/wasm-functions
- Examples Repository: github.com/fermyon/fwf-examples community examples and tutorials
- Spin: spinframework.dev for the open-source Spin project
- Hands-On Video: Watch the full demonstration