AzureFunBytes is a weekly opportunity to learn more about the fundamentals and foundations that make up Azure. It's a chance for me to understand more about what people across the Azure organization do and how they do it. Every week we get together at 11 AM Pacific on Microsoft LearnTV and learn more about Azure.
WebAssembly (or WASM) was introduced as a runtime for more highly performant in-browser applications. WASM workloads offer another exciting use case outside of the browser. WebAssembly's sandbox, the ability to target multiple languages to a common runtime, and a very low overhead execution runtime provide an interesting option for true cloud native workloads. We'll look at an experimental PaaS platform for running WebAssembly workloads - with a fully automated environment setup in Azure, use the yo wasm tool to get started quickly, and look at an existing preview feature in Azure Kubernetes Service where WASM workloads can be run today!
From the Microsoft docs website, WASM is described as: "...a binary format that is optimized for fast download and maximum execution speed in a WASM runtime. A WASM runtime is designed to run on a target architecture and execute WebAssemblies in a sandbox, isolated from the host computer, at near-native performance. By default, WebAssemblies can't access resources on the host outside of the sandbox unless it is explicitly allowed, and they can't communicate over sockets to access things environment variables or HTTP traffic."
The goals of WebAssembly include:
- Speed and portability
- Human readable and debuggable
- Secured by using sanboxed environments
- Plays well with other web technologies and provides backward compatibility
To talk more about WebAssembly, I've asked Steven Murawski, a Principal Cloud Advocate Microsoft to come back on the show. We'll learn about what changes to web applications are provided by WebAssembly, look at how we can integrate it with your Azure environment, and show how to get started.
00:00:00 - Opening
00:04:47 - Let's welcome Steven back!
00:10:07 - What is WebAssembly?
00:15:16 - Why would I use WebAssembly?
00:18:13 - Where can I use WebAssembly outside the browser?
00:21:57 - Demoing WebAssembly with Rust
00:24:07 - Running the WASM file locally
00:30:28 - Bicep even fits in here
00:33:00 - Logging into Hippo
00:36:25 - Using yo
to build scaffolding
00:42:53 - Adding environment variables
00:50:51 - Krustlet
Agenda:
- What is WebAssembly?
- Why would I use WebAssembly?
- Where can I use WebAssembly outside the browser?
- Wasmtime
- Hippo
- WASM Node Pools in AKS
- Getting started with yo wasm
- Publishing an app into Hippo
- Publishing an app via Azure Container Registry into AKS
You can find a number of great code examples at wasmbyexample.
About Steven Murawski:
Steven Murawski is a Principal Cloud Advocate focusing on Cloud Native technologies - most specifically, the use of WebAssembly as a cloud native runtime. Steven comes to this role with a background in DevOps, Site Reliability Engineering, and software development.
Learn about Azure fundamentals with me!
Live stream is normally found on Twitch, YouTube, and LearnTV at 11 AM PT / 2 PM ET Thursday. You can also find the recordings here as well:
AzureFunBytes on Twitch
AzureFunBytes on YouTube
Azure DevOps YouTube Channel
Follow AzureFunBytes on Twitter
Useful Docs:
Get $200 in free Azure Credit
Microsoft Learn: Introduction to Azure fundamentals
WebAssembly overview
WebAssembly Use Cases
WebAssembly MDN Web Docs
Public preview: AKS support for WebAssembly System Interface (WASI) workloads
Krustlet Project
Steven's three part series, Getting Started with Hippo
Host and deploy ASP.NET Core Blazor WebAssembly
Microsoft Learn: Publish a Blazor WebAssembly app and .NET API with Azure Static Web Apps
Create WebAssembly System Interface (WASI) node pools in Azure Kubernetes Service (AKS) to run your WebAssembly (WASM) workload (preview)
Wasm By Example
yo wasm
on GitHub