June 06, 2025

Rawkode's Hands-on Intro to Fermyon Wasm Functions

Fermyon Fermyon

wasm functions

Rawkode's Hands-on Intro to Fermyon Wasm Functions

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 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 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:

  1. Creates an OCI artifact from your Spin application
  2. Pushes it to Fermyon’s registry
  3. Deploys it across all regions
  4. 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 applications
  • spin aka apps info [app-name] - Get detailed application information
  • spin 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:

  1. Locally with spin up
  2. On Kubernetes using SpinKube
  3. 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.

 


🔥 Recommended Posts


Quickstart Your Serverless Apps with Spin

Get Started