Introduction
以前、Spinという、WASMを使うイベント駆動型フレームワークを紹介しました。
RustやGoで実装できるシンプルなフレームワークなのですが、
先日のアップデートでFermyon Cloudにデプロイできるようになってました。
※ Fermyon Cloudは2022/11月時点ではオープンベータです
FermyonはさきほどのSpinフレームワークの開発元であり、
Fermyon PlatformはSpinやSpin CLI、管理機能などの
関連するツールやサービスをまとめたプラットフォームです。
そして、Fermyon Platformをクラウドサービスとして
使えるようにしたものが、Fermyon Cloudです。
今回は、この前と同じくSpinをつかったアプリを作成し、
Fermyon Cloudにデプロイしてみます。
Environment
- MacBook Pro (13-inch, M1, 2020)
- OS : MacOS 13.0.1
- rust : 1.65.0
Setup
まずはspin cliをインストールして所定の位置へ移動しましょう。
% curl -fsSL https://developer.fermyon.com/downloads/install.sh | bash
% sudo mv spin /usr/local/bin/
0.6がインストールされていればOKです。
% spin --version
spin 0.6.0 (12a5037 2022-10-21)
提供されているテンプレートのインストールをしておきます。
% spin templates install --git https://github.com/fermyon/spin
newコマンドでプロジェクトを作成します。
今回もhttp-rustを選択。
% spin new
Pick a template to start your project with:
http-c (HTTP request handler using C and the Zig toolchain)
http-go (HTTP request handler using (Tiny)Go)
http-grain (HTTP request handler using Grain)
> http-rust (HTTP request handler using Rust)
http-swift (HTTP request handler using SwiftWasm)
http-zig (HTTP request handler using Zig)
redis-go (Redis message handler using (Tiny)Go)
redis-rust (Redis message handler using Rust)
このあとプロジェクト名やパスを設定します。
適当な名前(ここではspin-appと指定)を設定してあとはデフォルトで作成しましょう。
生成されたコードはそのままで、ビルドと起動をします。
% cd spin-app/
% spin build
% spin up
Serving http://127.0.0.1:3000
Available Routes:
spin-app: http://127.0.0.1:3000 (wildcard)
curlで動作確認。問題なく動いてます。
% curl http://127.0.0.1:3000
Hello, Fermyon
Fermyon Cloudにデプロイ
↑のSpinアプリをFermyon Cloudにデプロイするのは簡単です。
下記のようにspin deployコマンドを実行するだけです。
% spin deploy
Copy your one-time code:
XXXXXXX <-コードが表示
...and open the authorization page in your browser:
https://cloud.fermyon.com/device-authorization <ーここで認証
Waiting for device authorization...
one-timeコードがコンソールに表示され、
認証用のURLが表示されます。
ブラウザでアクセスすると、↓のような画面が表示されるので、
Githubログインして認証しましょう。
認証に成功すると、デプロイが実行されて
Fermyon CloudでのURLが発行されます。
Device authorized!
Uploading spin-app version 0.1.0+rxxxxxx...
Deploying...
Waiting for application to become ready........ ready
Available Routes:
spin-app: https://spin-app-xxxxxxxx.fermyon.app (wildcard)
こちらも問題なくアクセスできました。
% curl https://spin-app-xxxxxxxx.fermyon.app
Hello, Fermyon
また、Fermyon cloudの画面右上からログインすると、
ダッシュボードにアクセスできます。
ここではデプロイしたアプリのステータスやログの確認ができます。
Summary
Spinアプリを簡単にデプロイして公開することができました。
最近はこういったWASM系のPaaSが増えてきてますね。
Fermyon Cloudをはじめ、WASM界隈の今後が楽しみです。