【要約】OCIの無料VM1台に個人の自動収集を集約して24時間無人化した [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、ノートPC上で実行していた自動収集タスクの継続性に課題を感じた。PCの電源状態に依存するため、タスクが停止するリスクがあった。具体的には以下の問題に直面していた。
- ・PCを閉じるとスクレイパーやn8nが停止する。
- ・朝の定時実行がPCの起動状態に左右される。
- ・24時間稼働を実現するための低コストな環境が必要であった。
// Approach
開発者は、OCIのAlways Free VM 1台に全ての機能を同居させる構成を採用した。リソース制約とセキュリティを両立させるため、以下の手法を講じた。
- ・n8nをDockerで動かし、ポートをlocalhostに限定してSSHトンネル経由で管理する。
- ・Pythonスクレイパー(Playwright)をcronで定期実行する。
- ・2GBのswapを設定し、Chromiumのメモリバーストに対応する。
- ・外部への公開ポートをSSH(22番)のみに絞り、攻撃表面を最小化する。
- ・機密情報はVM内の.env(権限600)にのみ保持する。
// Result
開発者は、低リソース環境での安定稼働と、高いセキュリティレベルを両立させた。具体的な成果は以下の通りである。
- ・1GB RAM環境でも、ピーク時swap使用量440MB前後でn8nが安定稼働した。
- ・PCの電源に依存せず、09:30と15:30のジョブを確実に実行可能となった。
- ・ポートスキャンにより、外部から見えるポートが22番のみであることを確認した。
Senior Engineer Insight
> リソース制約下での「Swap活用」と「攻撃表面の最小化」という、極めて実践的な設計である。1GB RAMという制約を、実測値に基づきSwapで補完する判断は合理的だ。ただし、データセンターIPが弾かれる問題は、商用スクレイピングにおける最大の壁となる。本構成は、IPレピュテーションを考慮しない小規模な個人タスクの集約に特化した、極めてコストパフォーマンスの高い最適解と言える。