小さい自動化プログラム、家のPCで回し続けるか・サーバーに移すか
物販や情報収集を続けていると、小さい自動化プログラムが増えていきます。価格の定点観測、条件に合ったら通知、日次のレポート作成——1つ1つは大した処理ではないけれど、毎日決まった時間に動いてほしいもの。
うちはこれを家のWindows PCとタスクスケジューラで回しています。いわゆるローカル運用です。「サーバーを借りるべきでは?」と何度か考えて、いまのところ借りていません。その判断も含めて、実際にやって分かったことを書きます。
ローカル運用の現実
まず、家のPCで毎日プログラムを動かすと何が起きるか。
止まる理由が、プログラムの外にあります。
- PCがスリープしていて時刻が来ても動かない
- Windows Updateが夜中に再起動して、朝のジョブが消えている
- 外出中・停電・家族がPCを使っている
- セキュリティソフトが新しいスクリプトを隔離する
うちで実際に起きたのは大体この4種類で、コードのバグより環境都合の失敗のほうが多いです。だからローカル運用を続けるなら、最低限この3つはセットで要ります。
- 電源とスリープの設定を固定する(スリープさせない、自動再起動の時間帯を避ける)
- 実行ログを残す。動いたか・何件処理したかをファイルに書く
- 失敗したら通知する。静かに死ぬのが一番怖い。チャットアプリへの通知を最初に作る
これで「気づいたら3日止まっていた」はほぼ消えます。
それでもローカルで続けている理由
正直に書くと、うちがサーバーに移していない理由は2つです。
- PCがもともと点いている。 日中作業で使うマシンなので、限界費用がほぼゼロ
- 画面が要る処理がある。 ブラウザを実際に開いて操作するタイプの自動化は、画面のあるローカル環境のほうが素直に動く
つまり「たまたまローカルが合う条件だった」だけで、ローカルが正解という話ではありません。
サーバー(VPS)に移すべきサイン
逆に、次のどれかに当てはまったら移し時だと考えています。VPS(月数百円〜の仮想サーバー)が受け皿になります。
- 止まると損失が出るようになった。 通知が1日止まっても困らないうちはローカルでいい。仕入の機会損失や顧客対応に直結し始めたら、稼働率をお金で買う段階
- 24時間動かしたくなった。 数分おきの監視や夜間の処理は、スリープと戦うよりサーバーに置くほうが早い
- PCを買い替え・修理に出せなくなった。 「このPCを止められない」と感じたら、それは環境が資産に癒着しているサイン。事業用PCの記事で書いた「メイン機とサブ機の分離」と同じ話で、実行環境は本体から切り離せる状態が健全
- 電気代・騒音が気になり始めた。 常時稼働のためだけにPCを点けっぱなしにしているなら、月額数百円〜のVPSと比較する意味が出る
移すときの判断軸
VPSを借りる場合に見る要件です(うちは未契約なので、要件の整理として)。
- 月額 vs いまの電気代・手間。小さいプログラムなら最安プラン(メモリ1〜2GB)で足りることが多い
- OSの選択。プログラムがWindows前提ならWindows対応VPS(少し高い)、そうでなければLinuxが安い
- 移行の実費は「環境構築のやり直し」。プログラム本体より、認証情報・依存ツール・時刻設定の引っ越しが本体
- 認証情報の置き場所。サーバーに置くパスワードやAPIキーの管理方法を先に決める。ここを曖昧にしたまま移すのが一番危ない
会計上はVPS代もサーバー代と同じで、月額の通信費がひとつ増えるだけ。固定費の数え方どおり、年額で比べれば判断できます。
まとめ
- 小さい自動化のローカル運用は成立する。ただし失敗の大半は環境都合なので、スリープ対策・ログ・失敗通知の3点は必須
- ローカルで続けてよいのは「PCがもともと点いている」「止まっても損失が小さい」うち
- 止まると損が出る/24時間動かしたい/PCを止められなくなった——が移し時のサイン
- 移行の本体はプログラムではなく環境構築と認証情報の管理
「サーバーを借りるかどうか」は技術の問題に見えて、実際は止まったときの損失額の問題でした。損失が月額を超えた日が、移す日です。