📌

【Movementテストノード挑戦記】10章:バージョン固定のポイントと再現性確保

に公開

【Movementテストノード挑戦記】10章:バージョン固定のポイントと再現性確保


再現性を最重視したバージョン固定の基本方針

  • 手順書どおりに実行すれば、誰でも何度でも必ず同じ結果になることを最重要方針とする。
  • サーバー・ツール・依存関係・各種コマンドのバージョンをすべて明示的に固定し、記録する

今回実際に固定したもの・記録したもの

1. OS・VPS

  • Ubuntu 22.04.5 LTS (カーネル 5.15.0-79-generic)
  • サーバ: ConoHa VPS(メモリ1GB/CPU2Core/SSD100GB)

2. swap構成

  • /swapfile(2GB)
  • /var/spool/swap/swapfile(2GB)
  • 合計4GB(手順どおりにコマンド実行)

3. Rust

  • rustc 1.88.0 (6b00bc388 2025-06-23)
  • cargo 1.88.0 (873a06493 2025-05-10)
  • rustup default 1.88.0 で明示的に固定

4. APTパッケージ

  • インストールコマンド内ですべてのパッケージにバージョン指定
    • 例: curl=7.81.0-1ubuntu1.20 など
  • libz-devは使わず、zlib1g-devのみでOK
  • 実際に成功した環境でapt list --installedを保存して記録

5. Movementリポジトリ

  • mainブランチ
  • コミットID: e5e78e6d575505d50b49e225a79f12cc322266c4
  • git checkout <コミットID>で必ず固定

6. 設定ファイルとコマンド

  • config.jsonはsetup full-nodeで自動生成、allow_sync_from_zeroのみ手動変更
  • DAセットアップ・ノード起動も同じコマンド・順番で毎回実行

実践:再現性確保の具体的ポイント

  • 手順は「1コマンド1ステップ」で明確に記録・公開
  • コマンドや編集手順の「省略」や「省略形」は使わず、必ずそのまま明記
  • サーバ・VPS間で環境差異が生じないよう、同じ初期化・インストール・ビルドを新規VPSでも毎回検証
  • 「何のコマンドが・どのバージョン・どの状態で」成功したかをすべて保存
  • 不具合や想定外の挙動が出た場合は、すべてのバージョンとコマンド履歴を1から見直し、ズレを修正

よくある落とし穴と回避

  • バージョン指定忘れ・依存のズレ
    • APTやRustをアップデートせず、必ず明記したバージョンで固定して実行
  • メモリ不足やswap忘れ
    • 毎回手順どおりにswap作成・有効化すること
  • config.jsonの編集忘れや編集ミス
    • 例: sedコマンドやエディタ編集で変更した場合は必ず内容確認

ドキュメント・記録の運用

  • 実際に動いたコマンド・ファイル・バージョンを、必ず記録・公開
  • バージョンやコマンドを変えた場合は「いつ・なぜ・どう変えたか」も記録
  • テストノード・メインネットノード両方で「同じ手順で」再現できることを最重視

まとめ

  • Movementノード構築・起動における「再現性」は「全バージョン固定+手順全記録」の徹底に尽きる
  • どんな些細なズレ・省略・曖昧さも再現性を崩す要因なので、ひとつひとつ全部明記・管理
  • バージョンが変わったら必ず新規サーバで再現テストし、成功した手順を最新化していく

この章では、今回実際に運用した「バージョン固定」「手順全記録」による再現性確保のノウハウをまとめました。
次章では今後の展望やメインネット・バリデータへの応用を見据えた振り返りをします。

GitHubで編集を提案

Discussion