Rust のコードをデプロイしたくて Spin を試した

Apr 3rd, 2023 github rust webassembly

所感

Spin とは

Spin は,WebAssembly(Wasm)コンポーネントを用いてイベント駆動型のマイクロサービスアプリケーションを構築・実行するためのフレームワークである.

https://developer.fermyon.com/spin/index

Rust を書いていて困ることの一つが,デプロイである.せっかくコードを書いたのに,気軽にデプロイできる場所が少ない.

Spin を用いれば,コードを書いて動作確認したものをすぐに Web で公開することができる.

実装

ドキュメントに沿ってコマンドを実行するとプロジェクトが作成される.作成されたプロジェクトは下記の構成.

.
├── Cargo.lock
├── Cargo.toml
├── spin.toml
└── src
    └── lib.rs

開発では,下記のファイルにそれぞれ記述する.

spin.toml を使用する以外はほぼ通常の Rust 開発と同様である.コードは lib.rs に記述するが,別ファイルに記述して呼び出しても問題ないので,Rust の開発経験があれば戸惑うことは少ない.

成果物

https://github.com/taroosg/spin-rust

デプロイしたもの

https://spin-rust-moqfmkju.fermyon.app/?n=2023

デプロイ

下記のコードを実行する.

spin deploy

以上だ!

もう少し詳しく説明すると,Spin を提供している Fermyon が Fermyon Cloud というサービスを提供しており,ここにデプロイされる.

https://developer.fermyon.com/cloud/index

GitHub との連携

上記のようにコマンド一発でデプロイできるが,GItHub と連携してバージョン管理するワークフローを作成したいことも多い.

ドキュメントには GitHub Actions の使用方法も記述されている.大まかな流れは以下の通り.

https://developer.fermyon.com/cloud/github-actions

まずはドキュメントに従えば問題ない.基本的に GitHub でバージョン管理しながらの開発となるため,こちらのほうが使用頻度は高そう.

まとめ

以上だ( `・ω・ )b