AzureFunBytes Episode 63 - Getting Started with @Azure and WebAssembly with @StevenMurawski
Tags: webdev, opensource, azure, beginners
Published: 2021-12-02 20:12:17

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](https://cda.ms/226) and learn more about Azure.

![AzureFunBytes animation](https://res.cloudinary.com/practicaldev/image/fetch/s--Z7BxBMz1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j2xzw2g664tj31jij13t.gif)

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](https://cda.ms/3kz), 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](https://twitter.com/stevenmurawski), 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.

{% youtube y9Bsrl-X9Qw %}

[00:00:00 - Opening](https://www.youtube.com/watch?v=y9Bsrl-X9Qw)
[00:04:47 - Let's welcome Steven back!](https://youtu.be/y9Bsrl-X9Qw?t=287)
[00:10:07 - What is WebAssembly?](https://youtu.be/y9Bsrl-X9Qw?t=607)
[00:15:16 - Why would I use WebAssembly?](https://youtu.be/y9Bsrl-X9Qw?t=916)
[00:18:13 - Where can I use WebAssembly outside the browser?](https://youtu.be/y9Bsrl-X9Qw?t=1093)
[00:21:57 - Demoing WebAssembly with Rust](https://youtu.be/y9Bsrl-X9Qw?t=1317)
[00:24:07 - Running the WASM file locally](https://youtu.be/y9Bsrl-X9Qw?t=1447)
[00:30:28 - Bicep even fits in here](https://youtu.be/y9Bsrl-X9Qw?t=1828)
[00:33:00 - Logging into Hippo](https://youtu.be/y9Bsrl-X9Qw?t=1980)
[00:36:25 - Using `yo` to build scaffolding](https://youtu.be/y9Bsrl-X9Qw?t=2185)
[00:42:53 - Adding environment variables](https://youtu.be/y9Bsrl-X9Qw?t=2573)
[00:50:51 - Krustlet](https://youtu.be/y9Bsrl-X9Qw?t=3050)

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](https://cda.ms/226) at 11 AM PT / 2 PM ET Thursday. You can also find the recordings here as well:

[AzureFunBytes on Twitch](https://twitch.tv/azurefunbytes)
[AzureFunBytes on YouTube](https://aka.ms/jaygordononyoutube)
[Azure DevOps YouTube Channel](https://www.youtube.com/channel/UC-ikyViYMM69joIAv7dlMsA)
[Follow AzureFunBytes on Twitter](https://twitter.com/azurefunbytes)

Useful Docs:
[Get $200 in free Azure Credit](https://cda.ms/219)
[Microsoft Learn: Introduction to Azure fundamentals](https://cda.ms/243)
[WebAssembly overview](https://webassembly.org/)
[WebAssembly Use Cases](https://webassembly.org/docs/use-cases/)
[WebAssembly MDN Web Docs](https://developer.mozilla.org/en-US/docs/WebAssembly)
[Public preview: AKS support for WebAssembly System Interface (WASI) workloads](https://cda.ms/3kw)
[Krustlet Project](https://krustlet.dev/)
[Steven's three part series, Getting Started with Hippo](https://dev.to/smurawski/series/15635)
[Host and deploy ASP.NET Core Blazor WebAssembly](https://cda.ms/3kx)
[Microsoft Learn: Publish a Blazor WebAssembly app and .NET API with Azure Static Web Apps](https://cda.ms/3ky)
[Create WebAssembly System Interface (WASI) node pools in Azure Kubernetes Service (AKS) to run your WebAssembly (WASM) workload (preview)](https://cda.ms/3kz)
[Wasm By Example](https://wasmbyexample.dev/home.en-us.html)
[`yo wasm` on GitHub](https://github.com/deislabs/yo-wasm)