所感
- Rust で書いたコードをデプロイするには最速.うれしい.
- 使い方が簡単.
- 規模の大きいアプリケーションはまだ検討が必要(マイクロサービス向けなのでそもそも用途違いか).
Spin とは
Spin は,WebAssembly(Wasm)コンポーネントを用いてイベント駆動型のマイクロサービスアプリケーションを構築・実行するためのフレームワークである.
https://developer.fermyon.com/spin/index
Rust を書いていて困ることの一つが,デプロイである.せっかくコードを書いたのに,気軽にデプロイできる場所が少ない.
Spin を用いれば,コードを書いて動作確認したものをすぐに Web で公開することができる.
実装
ドキュメントに沿ってコマンドを実行するとプロジェクトが作成される.作成されたプロジェクトは下記の構成.
.
├── Cargo.lock
├── Cargo.toml
├── spin.toml
└── src
└── lib.rs
開発では,下記のファイルにそれぞれ記述する.
spin.toml
: プロジェクトの設定,ルーティング,動作する wasm ファイルの指定.Cargo.toml
: Rust アプリケーションの設定.通常の Rust の開発と同様.lib.rs
: Rustの処理を記述する.通常の Rust の開発と同様.
spin.toml
を使用する以外はほぼ通常の Rust 開発と同様である.コードは lib.rs
に記述するが,別ファイルに記述して呼び出しても問題ないので,Rust の開発経験があれば戸惑うことは少ない.
成果物
- 数値をリクエストすると素因数分解した配列を返すアプリケーションを実装
https://github.com/taroosg/spin-rust
デプロイしたもの
- クエリで n の後に数値を入れると素因数分解してくれる.
https://spin-rust-moqfmkju.fermyon.app/?n=2023
デプロイ
下記のコードを実行する.
spin deploy
以上だ!
もう少し詳しく説明すると,Spin を提供している Fermyon が Fermyon Cloud というサービスを提供しており,ここにデプロイされる.
https://developer.fermyon.com/cloud/index
- GitHub アカウントを連携してサインイン.
- 現時点では 5 プロジェクトをデプロイ可能.
GitHub との連携
上記のようにコマンド一発でデプロイできるが,GItHub と連携してバージョン管理するワークフローを作成したいことも多い.
ドキュメントには GitHub Actions の使用方法も記述されている.大まかな流れは以下の通り.
- Fermyon Cloud でトークンを発行する.
- GitHub のリポジトリの設定ページからトークンを登録する.
- プロジェクトに yml ファイルを作成し,Actions で実行する内容を記述する.
- (ドキュメントの内容では)main ブランチに push もしくは merge すると Actions が動きデプロイされる.
https://developer.fermyon.com/cloud/github-actions
まずはドキュメントに従えば問題ない.基本的に GitHub でバージョン管理しながらの開発となるため,こちらのほうが使用頻度は高そう.
まとめ
- Rust のコードをデプロイできるのがうれしい!
- GitHub 連携含め,思いついたらデプロイできる.
- マイクロサービス向けなので,アプリケーション全体の構成などは工夫したい(まだ知見がない).
以上だ( `・ω・ )b